当前位置: 首页 > ds >正文

UE4 UAT 的六大流程 build cook stage pacakge archive deploy 与UAT的参数

前言

UAT的命令参数有很多,如下所示,本文将会探讨它们的含义,及其背后所代表的流程。

{UAT的exe}

-ScriptsForProject=j:\Light_Check_\MyGame__Mini\MyGame__Mini.uproject
BuildCookRun
-nop4
-project=j:\Light_Check_\MyGame__Mini\MyGame__Mini.uproject
-cook
-stage
-archive
-archivedirectory=j:\Light_Check_\MyGame__Mini\Saved\Archived
-package
-ue4exe=j:\Light_Check_\EngineSource/Engine/Binaries/Win64/UE4Editor-Cmd.exe
-compressed
-pak
-prereqs
-manifests
-targetplatform=Win64
-build
-target=MyGame__Mini
-clientconfig=Development
-utf8output
-compile

推荐阅读我前面的多篇文档。

一、-build 和 -compile 的区别

从中文的语义来看,它们都是编译,但“编译”是个多义词,分别的含义如下。

-build管的是代码能不能变成可执行程序。
-compile管的是资源(尤其是着色器)在 Cook 时要不要编译。

1、 build:执行编译构建
-build参数是一个总开关,它决定了 UAT 的 BuildCookRun命令是否要执行编译(Compile)和链接(Link)这一步骤。这个步骤是通过调用 UnrealBuildTool(UBT) 来完成的,目的是将你的 C++ 源代码和引擎模块编译成最终的可执行文件(例如游戏的 .exe 文件)或编辑器目标
● ​当指定 -build时​:UBT 会工作,根据你的 Target(如 -target=DF_UHD_Mini)和配置(如 -clientconfig=Development)来编译项目。
● ​当不指定 -build或使用 -skipbuild时​:UAT 会跳过编译过程,直接使用之前已经编译好的二进制文件进行后续的 Cook、Stage 等操作。这在你只修改了资源而没有改动代码时非常有用,可以节省大量时间

2、 compile:编译着色器
-compile参数作用于 ​Cook 阶段。Cook 过程是由 UE4Editor-Cmd.exe在一种特殊命令行模式下运行的,目的是将编辑器中的资源(如纹理、模型、材质、蓝图)转换为目标平台(如 -targetplatform=Win64)所能使用的格式。
● 材质资源依赖于着色器(Shaders)​,而着色器是需要编译的。-compile参数就控制着在 Cook 资源时是否要编译这些着色器​
● ​当指定 -compile时​:Cook 过程会编译项目所需的所有着色器。
● ​当不指定 -compile时​:Cook 过程可能会跳过着色器编译(尤其是在使用 -iterativecooking增量 Cook 时),假设着色器已经被编译过且没有变化,从而加快 Cook 速度。

二、成对的参数 如 -build -skipbuild 

UAT的流程涉及 Build、Cook、Stage、Package、Archive、Deploy、Run 这些步骤,每一个步骤是否执行,取决于一组形如 -{x} -skip{x} 的参数,具体如下图1所示。

(图1)

三、-stage 和 -archive 都是将产物拷贝到某个目录,它们的区别是什么?

特性

-stage(暂存)

-archive(归档)

主要目的

为打包做准备,创建临时中间结果

长期保存或分发构建结果

操作时机

在 Cook 之后,Package 之前

在整个构建、Cook、Stage 和 Package 流程之后

操作内容

编译后的可执行文件Cook后的资源复制到暂存区

暂存区(Staged Directory)的内容复制到归档目录

必要性

是打包流程的必要步骤

可选步骤,用于备份或分发

输出目录

ProjectPath/Saved/StagedBuilds(默认)

-archivedirectory参数指定(如未指定,可能有默认路径)

典型用途

供后续的 Package 步骤使用

保存最终的游戏包用于测试、发布或存档

💡 详细解读

1. -stage(暂存)
  • 作用​:-stage参数指示 UAT 将构建(Build)和烘焙(Cook)步骤产生的所有必要文件​(例如可执行文件、Cooked资源、配置文件等)复制到一个暂存目录(Staging Directory)​。这个目录可以被看作是最终游戏包的一个"​草稿​"或"​未压缩的原始布局​"。

  • 流程位置​:它在 Cook 之后、Package 之前执行。

  • 默认路径​:通常位于 [YourProject]/Saved/StagedBuilds/[Platform]。这是一个(一组)固定的路径。

  • 必要性​:这是后续进行真正打包(如生成 IPA、APK、EXE 等)或归档的基础,因此通常是必需的。

2. -archive(归档)
  • 作用​:-archive参数指示 UAT 将已经存在于暂存目录(即 -stage步骤的产出)中的完整内容,复制或移动到另一个由 -archivedirectory参数指定的归档目录中。这相当于对最终打包好的游戏进行备份分发准备。这也就是为何有 -archivedirectory 但是没有 -stagedirectory 的原因了。

  • 流程位置​:它在所有核心步骤(Build、Cook、Stage、Package)完成之后执行。

  • 依赖性​:​依赖 -stage的输出。如果没有先执行 -stage(或使用 -skipstage),-archive就没有内容可拷贝。

  • 目的​:主要用于保存构建版本、持续集成系统中的产物保存,或者准备用于分发给测试人员的游戏包。

📦 简单总结

你可以这样理解:

  • -stage是 ​​"组装"​,把零件(代码、资源)变成一台完整的机器(游戏目录结构),但机器还停在工厂车间里(暂存目录)。

  • -archive是 ​​"入库"​​ 或 ​​"装车发货"​,把车间里组装好的整台机器搬运到仓库(归档目录)存放起来,或者准备运走。

因此,在你的 UAT 命令行中,这两个参数常常同时出现:

-stage -archive -archivedirectory="J:\MyArchivedBuilds"

这表示:"请先为打包准备好所有文件并放到暂存目录(-stage),然后再将暂存目录里的所有这些文件复制到 'J:\MyArchivedBuilds' 目录下(-archive)​。"

Archive的具体实践操作见:

UE4 BuildCookRun中的Archive的含义_ue4 stage package-CSDN博客

而Stage和Archive步骤的中间,是Package。

四、package具体做了什么事情

在 UE4 的自动化构建流程中,-package-stage-archive是三个关键参数,它们分别代表了不同且顺序明确的阶段。下面这个表格汇总了它们的核心职能与关系:

参数

作用阶段

核心职能

输出结果举例

依赖关系

-stage

暂存

将构建和烘焙后的所有必要文件​(可执行文件、Cooked资源等)复制到一个暂存目录

Project/Saved/StagedBuilds/下的原始文件

依赖 Build 和 Cook 步骤的输出

-package

打包

将暂存目录中的文件转换为目标平台的原生分发格式,并进行必要的封装和加密等操作

Windows的.exe、Android的.apk、iOS的.ipa

必须依赖 -stage的输出

-archive

归档

最终打包好的成品​(或暂存目录内容)复制到指定的归档目录进行保存或分发

指定 -archivedirectory路径下的最终游戏包或文件副本

依赖 -stage-package的输出

💡 详细解读三个阶段

-package(打包)

此阶段是生成可分发包的关键步骤。它会对暂存目录(-stage的输出)中的文件进行最终处理,将其转换为目标平台所要求的原生分发格式。例如:

  • 在 ​Windows​ 上,可能会生成一个包含所有游戏文件的目录(通常带有 .exe可执行文件)。

  • 在 ​Android​ 上,会生成 .apk文件。

  • 在 ​iOS​ 上,会生成 .ipa文件。

    此外,该过程通常还包含资源压缩、加密(如果指定了相关参数)等操作。​-package操作依赖于 -stage产生的输出,没有暂存目录中的文件,打包步骤就无法进行。

🔄 核心关系与顺序

这三个参数在 UE4 的自动化构建流程中遵循一个明确的顺序:

Build (编译) -> Cook (烘焙) -> -stage(暂存) -> -package(打包) -> -archive(归档)​

它们之间的依赖关系是:

  • -stage-package的基础​:没有暂存的文件,就无法生成最终的分发包。

  • -package-stage的后续加工​:它将暂存的原始文件转换为平台特定的分发格式。

  • -archive是对前两者产物的保存​:它既可以归档暂存目录(-stage的结果),也可以归档最终打包好的文件(-package的结果)。

五、将Cooked资源打包成pak,是pacakge的职责之一

阶段

核心职能

关键输出

工具/命令示例

Cook (烘焙)​

将编辑器格式资源转换为目标平台格式、优化资源、分析依赖关系、剔除未引用资源。

平台特定的已优化资源(如 .uexp, .ubulk

-cook

Pak (打包)​

将 Cook 后的资源收集并打包成 .pak文件,便于分发、加密和快速加载。

最终的 .pak文件

-pak, UnrealPak.exe

🔄 流程梳理

在 UE4 的自动化构建流程(例如使用 BuildCookRun命令)中,​将 Cook 后的资源打包成 .pak文件,通常是 -package阶段或整个构建过程的一个重要组成部分

一个典型的、包含生成 Pak 文件的 UAT 命令看起来是这样的:

RunUAT BuildCookRun -project="YourProject.uproject" -cook -stage -pak -archive -package -targetplatform=Win64

在这个命令中:

  • -cook:负责资源转换和优化。

  • -pak:​明确指示工具链将 Cook 后的资源打包成 .pak文件

  • -package:负责生成最终的分发包(如包含 .exe.pak的目录)。

六、deploy的含义

-deploy参数指的是将构建、Cook、打包后的游戏版本传输到目标设备上的这一过程。它通常是自动化构建流程(如使用 BuildCookRun命令)中的一个可选阶段。它​将打包好的构建版本传输到目标设备,游戏文件被复制到连接的设备或网络位置。

常见的使用 -deploy的场景包括​:
​移动设备开发​:将打包好的 Android .apk或 iOS .ipa文件安装到连接的手机或平板电脑上。
​游戏主机开发​:将构建版本部署到 Xbox 或 PlayStation 开发机上。
​远程测试​:将游戏部署到网络上的另一台计算机或服务器。
​自动化测试​:在自动化流程中,部署完成后可能会紧接着启动游戏进行测试(配合 -run参数)。

UE4自己实现了deploy的工具链吗?或者它是否已经集成了各个大平台的工具链,如安卓、iOS、鸿蒙、PS5、XBox、Switch等?这我还没有看过。

http://www.xdnf.cn/news/20227.html

相关文章:

  • 硬件(二) 中断、定时器、PWM
  • 当电力设计遇上AI:良策金宝AI如何重构行业效率边界?
  • Linux2.6内核进程O(1)调度队列
  • 电机控制(三)-电机控制方法基础
  • Java集合---Collection接口和Map接口
  • C++:类和对象(中)
  • 在线测评系统---第n天
  • 执行select * from a where rownum<1;,数据库子进程崩溃,业务中断。
  • LabVIEW--二维数组、三维数组、四维数组
  • Pydantic模型验证测试:你的API数据真的安全吗?
  • Selenium 页面加载超时pageLoadTimeout与 iframe加载关系解析
  • 静态电流Iq 和 ICONT_MAX
  • GD32入门到实战32--产品配置参数存储方案 (NORFLASH)
  • rabbitmq 入门知识点
  • Go 自建库的使用教程与测试
  • 脑卒中目标检测含完整数据集
  • CSS 优先级详解:理解选择器权重和层叠规则
  • 鸿蒙NEXT动画开发指南:组件与页面典型动画场景解析
  • 【C++练习】06.输出100以内的所有素数
  • Java 攻克 PDF 表格数据提取:从棘手挑战到自动化实践
  • 深度学习——数据增强
  • devcpp 5.11的详细安装步骤
  • 上位机知识篇---conda run
  • 文华财经多空提示指标公式 变色K线多空明确指标 文华wh6赢顺多空买卖提示指标
  • 平衡车 --- 测量减速比 M法、T法测速
  • 当公司在你电脑上安装了IP-guard,你必须知道的事
  • 【面试题】你在项目中做过哪些相关性优化?
  • 【sft技巧】模型微调技巧
  • 零样本学习与少样本学习
  • 下载及交叉编译libconfig