Unreal在封装过程中使用[自动化工具](ProductionPipelines/BuildTools/AutomationTool)(有时缩写为UAT,代表虚幻自动化工具(Unreal Automation Tool)) 用于通过一系列实用程序脚本来处理虚幻项目。对于封装过程,自动化工具使用特定的命令Build、Cook、Run。该指令能对平台烘焙内容,将其封装成平台原生的文件格式用于分发,部署到设备并自动允许项目(若条件允许)但打包项目并非只能直接使用UAT。你也可以使用文件菜单选择可用的平台,或使用命令行为特定平台烘焙并打包内容。
以下是封装流程的不同阶段,它们也是UAT中 BuildCookRun 命令的组成部分:
- 构建(Build):该阶段将为所选择的平台编译可以执行的文件。
- 烘焙(Cook):该阶段通过在特殊模式下执行编辑器来转化内容。
- 暂存(Stage):该阶段将可执行文件和内容复制到暂存区,它是开发目录以外的独立目录。
- 打包 (Package):该阶段将项目打包成平台原生的分发格式。
- 部署(Deploy):该阶段将构建版本部署到目标设备
- 运行(Run):该阶段在目标平台上启动已封装的项目
https://docs.unrealengine.com/4.27/en-US/SharingAndReleasing/Deployment/BuildOperations
基本参数
- -CrashReporter: 编译CrashReporter
- -Clean: 重新完整构建
- -SignedPak: 使用加密的pak文件
- -SignPak=C:\Encryption.keys 或者 -signpak=0x…..: 指定加密pak文件密钥内容或者密钥文件路径,密钥内容以 0x 开头,同时 -SignedPak 参数也生效
- -RunAssetNativization: 将蓝图资产转成代码
- -Pak: 是否将资源文件打包到pak中,但是并不是说不指定这个命令行就不用pak,有些平台只能用pak(比如Android打包成apk),不管有没有这个参数,具体见各个平台对
Engine\Source\Programs\AutomationTool\AutomationUtils\Platform.cs
类中RequiresPak
函数的重载 - -SkipPak: 使用上一次的pak文件,包含-Pak
- -UTF8Output: log,控制台窗口等输出使用UTF8编码
Build相关参数
- -Build: 执行编译过程
- -SkipBuildClient: 不编译客户端
- -SkipBuildEditor: 不编译编辑器
- -NoXGE: 不使用并行编译
- -ForceDebugInfo: 在非Debug版本中加入调试信息
Cook相关参数
- -Cook: 使用Cooked资源
- -SkipCook: 跳过cook阶段,使用上一次Cook好的资源,同时包含了 -Cook 参数
- -IgnoreCookErrors: 忽略cook过程中的错误
- -CookFlavor=Multi/ATC/DXT/ETC1/ETC2/PVRTC/ASTC: 指定Android Cook格式
- -CookPartialGC: cook阶段磁盘空间不够不要清理所有资源
- -CookInEditor: 使用editor进行cook而不是UAT
- -CookOutputDir=C:\cooked: 指定cook结果保存目录,默认在Project/Saved/Cooked(使用UAT cook)和Project/Saved/EditorCooked(使用editor cook)
- -AdditionalCookerOptions=xxx: 额外的传给cooker进程的命令行
- -Compressed: 压缩
- -EncryptIniFiles: 加密ini文件,只在指定了加密密钥和使用pak文件时候有效
- -EncryptEverything: 加密所有的文件,只在指定了加密密钥和使用pak文件时候有效
- -EncryptPakIndex: 加密pak索引,只在指定了加密密钥和使用pak文件时候有效
- -UnversionedCookedContent: 不包含版本号
- -IterativeCooking(-Iterate): 增量cook
- -CookAll: cook content目录下的所有文件
- -CookMapsOnly: 只cook关卡和关卡引用到的资源,只会在同时指定了-CookAll时生效
- -MapsToCook=map1+map2+map3: 指定要cook的关卡,多个之间用+号连接
- -SkipCookingEditorContent: 不cook引擎编辑器使用到的资源
- -NumCookersToSpawn=n: 指定cooker进程的数量
- -FastCook: 开启FastCook,如果项目支持的话
Stage相关参数
- -Stage: 保存构建过程中的中间结果
- -SkipStage: 不保存构造过程中的中间结果,使用上一次的结果,这个命令行同时包含了 -Stage
- -StagingDirectory=C:\xxxx: 构建过程中中间结果保存目录,默认在ProjectPath\Saved\StagedBuilds
- -NoDebugInfo: 不拷贝调试信息文件到Stage目录,也就是最终打出来的包中不包含调试信息
- -NoCleanStage: 新构建不会清理之前StagingDirectory中的文件, 如果指定了-clean则一定会清理掉
- -StageCommandline=xxxx: 放在UE4CommandLine.txt中的一系列命令行,打出来的包在运行时会从这个文件中读取命令行并执行
Run相关参数
- -Run: 构建完成后运行游戏
- -CookOnTheFly: 使用服务器上的cook过的资源
- -CookOnTheFlyStreaming: 同上,但是不缓存资源到本地
- -FileServer: 使用UnrealFileServer上的cook过的资源数据
- -DedicatedServer(-Server): 构建完成后运行ds服务器
- -Client: 使用TargetType.Client对应的配置运行游戏
- -NoClient: 只运行服务器
- -LogWindow: 创建日志窗口
- -Map=xxx: 指定游戏运行的关卡
- -AdditionalServerMapParams=?param=value:服务器地图的额外参数
- -NumClients=n: 客户端数量
- -AddCmdline=/-ServerCommandline=/-ClientCommandline=xx: 额外的进程参数
Package相关参数
- -Package: 执行打包,Andorid->apk, iOS->ipa
- -Distribution: 打的包是发布版本,在Android和iOS上会禁掉Debugable属性
- -Prereqs: 将依赖打包到一起
Archive相关参数
- -Archive: 是否将构建结果归档到指定目录
- -ArchiveDirectory: 归档目录,默认为ProjectPath\ArchivedBuilds
- -CreateAppBundle: 当目标平台是Mac时,指定这个参数可以归档成一个 .app 文件而不是一堆散文件
Deploy相关参数
- -Deploy: 部署
- -DeployFolder: 部署路径