当前位置:网站首页>使用虚幻引擎自动化工具实现自动化部署
使用虚幻引擎自动化工具实现自动化部署
2022-08-03 14:54:00 【华为云】
前言
Epic Games 的 Unreal Engine 4 是一个强大的工具,可以创建任何类型的游戏甚至应用程序,但实现的自动化和构建系统几乎没有任何好的文档可以参考。这篇文章将展示如何使用虚幻自动化工具 (UAT)来 构建、Cook和打包游戏,并将简要的概述一些隐藏的工具。
引擎类型和一些术语
在我们开始深入研究自动化系统之前,我们需要定义一些术语。我们将要使用的中心工具是虚幻自动化工具 (UAT)。除了构建和打包应用程序之外,该工具是引擎内部任何类型自动化的主要入口点。UAT 支持命令行开关,通常是在引擎生态系统中运行的一组命令。UAT 使用位于 Engine/Build/BatchFiles 中的脚本启动(.sh for linux,.command for mac 和 *.bat for Windows)。对于 UAT,这将是 RunUAT 脚本。附加 -list 会返回可用命令的列表。可以使用 -help 可检索有关 UAT 的更多信息。
了解 UAT 在哪种类型的Engine上运行非常重要。共有三种不同的Engine类型,它们需要对命令行进行一些更改,具体取决于所使用的类型。
第一个也是最常见的引擎类型是所谓的 Rocket build。当您通过 Epic Games Launcher 安装引擎时,您将获得Rocket build。这是引擎的预构建、即用型版本。根据您在启动器中选择的选项,它包含为所有桌面应用程序和移动目标打包项目所需的所有依赖项。
接下来一种引擎类型是从源代码编译而来。这种构建类型是您从 GitHub 克隆或下载虚幻引擎的 repository 时获得的。这是最通用的引擎类型,因为可以更改和重新编译引擎的源代码。虽然这种引擎类型是最通用的,但它需要编译所有内容,通常需要 15-60 分钟,具体取决于所使用的系统,并且占用的大小是预构建引擎的 4 倍以上.
最后一个工具就是我们所需要的进行自动部署的工具 Unreal Build Tool (UBT),它是在引擎内部构建源代码的主要工具。当尝试仅使用 UAT 打包项目时,由于缺少项目的编辑器 dll,它将失败(在项目的干净版本上)。要创建缺少的 dll,我们需要使用 UBT 为我们的项目构建编辑器目标。接下来是操作步骤:
Building the Editor Target
在我们启动 UAT 之前,我们首先需要为我们的项目编译编辑器目标,以获取我们的编辑器 dll 的最新版本。为了构建这些 dll,我们在开发配置中为我们的操作系统(例如 Win64)的项目编辑器目标运行 UBT:
Build/BatchFiles/Build.bat <ProjectName>Editor Win64 Development <PathToProjectFile>.uproject -WaitMutex对于干净的构建,可以在构建脚本之前运行 Clean 脚本,也可以使用 Rebuild 脚本代替构建脚本。-WaitMutex 开关告诉构建工具等待此 UBT 实例的全局互斥锁。如果 UBT 当前在别处使用,则省略此开关会使 UBT 返回错误。
BuildCookRun
使用 UAT 中的 BuildCookRun 命令行开关可以使用完整的打包过程。正如命令行开关的名称所暗示的,这是一个由三部分组成的过程。
- Build:使用所有必要的运行时模块编译引擎、引擎插件、项目插件和项目本身,通常在最后创建一个可执行文件
- Cook:将所有引用的资产转换为目标平台的相应运行时格式(例如,在 Windows 上将纹理转换为 DDS 格式),编译仍然缺少的着色器,将蓝图编译为它们的二进制表示并去除任何编辑信息
- Run:最后一步可以有许多动作要执行。在构建自动化的范围内,我们通常希望将我们的资产打包成 pak 文件并将整个项目归档到一个文件夹中以供进一步处理(例如上传到 Steam)。其他功能包括通过网络自动部署到连接的设备或通过 USB 连接的移动设备并在设备上启动游戏。这些通常不属于完全自动化的过程,因此在此不再赘述。
该过程的完整命令行如下所示:
call Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun -Project="<ProjectPath>.uproject" -NoP4 -NoCompileEditor -Distribution -TargetPlatform=Win64 -Platform=Win64 -ClientConfig=Shipping -ServerConfig=Shipping -Cook -Map=List+Of+Maps+To+Include -Build -Stage -Pak -Archive -ArchiveDirectory=<ArchivePath> -Rocket -Prereqs -Package让我们逐一来看:
- BuildCookRun:我们想使用的 BuildCookRun 命令
- -Project=”<ProjectPath>/<ProjectName>.uproject”:必填参数,uproject 文件的绝对路径
- -NoP4:在此构建期间不想与 Perforce 交互(相反是:-P4)
- -NoCompileEditor:据我所知,这个命令似乎已不起作用,省略这个标志应该构建我们之前使用 UBT 构建的编辑器部分,但至少对我来说这不起作用。
- -Distribution:将此构建标记为分发(尤其是为移动平台创建分发包,这通常意味着使用分发证书)
- -TargetPlatform=<Platform1>+<Platform2>:我们要打包的平台(用+分隔)
- -ClientConfig=Shipping:我们要打包哪个配置,选项有Debug、Development、Test和Shipping
- -ServerConfig=Shipping:要构建的服务器的目标平台
- -Cook:我们要运行 Cook 步骤
- -Map=List+Of+Maps+To+Include:地图名称的特定列表,使用+分隔,以包含。如果省略,它将使用项目设置中指定的那些
- -Build:我们要运行构建步骤
- -Stage:将烹饪结果保存在暂存目录中
- -Pak:使用 pak 文件而不是普通文件系统目录
- -Archive:我们希望将目录中的完整输出归档
- -ArchiveDirectory=<ArchivePath>:归档项目的路径
- -Rocket:我们正在使用已安装/Rocket 构建
- -Prereqs:包括虚幻引擎先决条件安装程序
- -Package:为目标平台创建一个包(例如Mac上的应用程序文件,Android上的apk或iPhone上的ipa)
请注意,所有开关都不区分大小写(当然区分大小写平台上的路径除外)。
上面的开关和参数集合是打包一个准备运行的应用程序的坚实基础,完全足够了。
最后
有了所有这些信息,应该很容易成功地将引擎部署集成到您的自动化流程中。
我是杰少,如果您觉的我写的不错,那请给我 点赞+评论+收藏 后再走哦!
边栏推荐
- MATLAB中writetimetable函数用法
- A high-performance creation book, ASUS Dreadnought Pro15 2022 is completely enough for daily photo editing and editing!
- How to use redis
- 使用alarm函数实现sleep,使用alarm函数实现对阻塞操作设置超时
- Day1:面试必考真题
- HDU 1027 Ignatius and the Princess II(求由1-n组成按字典序排序的第m个序列)
- 彻底搞懂云桌面配置及实践踩坑【华为云至简致远】
- 【实战】Next.js + 云函数开发一个面试刷题网站
- 2022-08-03日报:汪林望 vs 刘铁岩:AI、机器学习在材料科学研究中能发挥哪些作用?
- 基于ModelArts的动漫头像自动生成丨【华为云至简致远】
猜你喜欢
![[The Beauty of Software Engineering - Column Notes] 36 | What exactly do DevOps engineers do?](/img/7e/405a32a67ba48342179bfbcb214f09.png)
[The Beauty of Software Engineering - Column Notes] 36 | What exactly do DevOps engineers do?

A high-performance creation book, ASUS Dreadnought Pro15 2022 is completely enough for daily photo editing and editing!

Controller层代码这么写,简洁又优雅!

20220801使用安信可的ESP-01S模块实现WIFI的UART传输功能

又有大厂员工连续加班倒下/ 百度搜狗取消快照/ 马斯克生父不为他骄傲...今日更多新鲜事在此...

Php程序员用那个编辑器比较好?

STM32H743VIT6配置ADC为1M采样率

UE4 C disk cache solution

问题7:功能测试花瓶用例

云硬盘EVS详解以及如何用与避坑【华为云至简致远】
随机推荐
技术分享 | 接口自动化测试如何搞定 json 响应断言?
【报错】import cv2 as cv ModuleNotFoundError: No module named ‘cv2
What are the visual database design software _ database visual programming
PAT乙级-B1016 部分A+B(15)
Chrome browser corresponding driver_chrome mobile browser
手摸手带你完成智慧路灯构建及避坑【华为云至简致远】
SwiftUI SQLite教程之了解如何在 SwiftUI 中使用 SQLite 数据库并执行 CRUD 操作(教程含源码)
正则表达式入门二(普通字符)
面试官都震惊,你这“网络基础”可以啊
云硬盘EVS详解以及如何用与避坑【华为云至简致远】
兔起鹘落全端涵盖,Go lang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime 4)Go lang开发环境搭建EP00
A high-performance creation book, ASUS Dreadnought Pro15 2022 is completely enough for daily photo editing and editing!
liunx服务器遇到SYN_SENT洪水攻击
SQL 不新增表 把一张表定义成两张
LeetCode136:只出现一次的数字
How to use matlab to implement the piecewise function "recommended collection"
6000 字+,帮你搞懂互联网架构演变历程!
The difference between servlet and jsp _ the difference between servlet and class
PAT乙级-B1011 A+B 和 C(15)
WMS软件国内主要供应商分析