Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用虚幻引擎自动化工具实现自动化部署

使用虚幻引擎自动化工具实现自动化部署

作者头像
HelloWorld杰少
发布于 2022-08-04 06:44:25
发布于 2022-08-04 06:44:25
2.1K10
代码可运行
举报
文章被收录于专栏:HelloWorld杰少HelloWorld杰少
运行总次数:0
代码可运行

1前言

Epic Games 的 Unreal Engine 4 是一个强大的工具,可以创建任何类型的游戏甚至应用程序,但实现的自动化和构建系统几乎没有任何好的文档可以参考。这篇文章将展示如何使用虚幻自动化工具 (UAT)来 构建、Cook和打包游戏,并将简要的概述一些隐藏的工具。

2引擎类型和一些术语

在我们开始深入研究自动化系统之前,我们需要定义一些术语。我们将要使用的中心工具是虚幻自动化工具 (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 为我们的项目构建编辑器目标。接下来是操作步骤:

3Building the Editor Target

在我们启动 UAT 之前,我们首先需要为我们的项目编译编辑器目标,以获取我们的编辑器 dll 的最新版本。为了构建这些 dll,我们在开发配置中为我们的操作系统(例如 Win64)的项目编辑器目标运行 UBT:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Build/BatchFiles/Build.bat <ProjectName>Editor Win64 Development <PathToProjectFile>.uproject -WaitMutex

对于干净的构建,可以在构建脚本之前运行 Clean 脚本,也可以使用 Rebuild 脚本代替构建脚本。-WaitMutex 开关告诉构建工具等待此 UBT 实例的全局互斥锁。如果 UBT 当前在别处使用,则省略此开关会使 UBT 返回错误。

4BuildCookRun

使用 UAT 中的 BuildCookRun 命令行开关可以使用完整的打包过程。正如命令行开关的名称所暗示的,这是一个由三部分组成的过程。

  • Build:使用所有必要的运行时模块编译引擎、引擎插件、项目插件和项目本身,通常在最后创建一个可执行文件
  • Cook:将所有引用的资产转换为目标平台的相应运行时格式(例如,在 Windows 上将纹理转换为 DDS 格式),编译仍然缺少的着色器,将蓝图编译为它们的二进制表示并去除任何编辑信息
  • Run:最后一步可以有许多动作要执行。在构建自动化的范围内,我们通常希望将我们的资产打包成 pak 文件并将整个项目归档到一个文件夹中以供进一步处理(例如上传到 Steam)。其他功能包括通过网络自动部署到连接的设备或通过 USB 连接的移动设备并在设备上启动游戏。这些通常不属于完全自动化的过程,因此在此不再赘述。

该过程的完整命令行如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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=”/.uproject”:必填参数,uproject 文件的绝对路径
  • -NoP4:在此构建期间不想与 Perforce 交互(相反是:-P4)
  • -NoCompileEditor:据我所知,这个命令似乎已不起作用,省略这个标志应该构建我们之前使用 UBT 构建的编辑器部分,但至少对我来说这不起作用。
  • -Distribution:将此构建标记为分发(尤其是为移动平台创建分发包,这通常意味着使用分发证书)
  • -TargetPlatform=+:我们要打包的平台(用+分隔)
  • -ClientConfig=Shipping:我们要打包哪个配置,选项有Debug、Development、Test和Shipping
  • -ServerConfig=Shipping:要构建的服务器的目标平台
  • -Cook:我们要运行 Cook 步骤
  • -Map=List+Of+Maps+To+Include:地图名称的特定列表,使用+分隔,以包含。如果省略,它将使用项目设置中指定的那些
  • -Build:我们要运行构建步骤
  • -Stage:将烹饪结果保存在暂存目录中
  • -Pak:使用 pak 文件而不是普通文件系统目录
  • -Archive:我们希望将目录中的完整输出归档
  • -ArchiveDirectory=:归档项目的路径
  • -Rocket:我们正在使用已安装/Rocket 构建
  • -Prereqs:包括虚幻引擎先决条件安装程序
  • -Package:为目标平台创建一个包(例如Mac上的应用程序文件,Android上的apk或iPhone上的ipa)

请注意,所有开关都不区分大小写(当然区分大小写平台上的路径除外)。

上面的开关和参数集合是打包一个准备运行的应用程序的坚实基础,完全足够了。

5最后

有了所有这些信息,应该很容易成功地将引擎部署集成到您的自动化流程中。

本文翻译自:https://blog.mi.hdm-stuttgart.de/index.php/2017/02/11/uat-automation/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HelloWorld杰少 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
杰少您好,想问下您知道UE5打包参数里面的-EditorIO -EditorIOPort=可以取消吗
杰少您好,想问下您知道UE5打包参数里面的-EditorIO -EditorIOPort=可以取消吗
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
UE4命令行编译工程入门
笔者是个UE4的小白,本文主要记录了一个小白是如何从零UE4的基础,一步步在命令行打出iOS的ipa包的尝试过程,本文比较浅,适合小白做为UE4工程的入门资料(UE大神可自动忽略本文);
stringwu
2022/08/12
2.1K0
UE4 如何用命令行来打包你的游戏
在日常的开发中,我们总免不了要去提升和总结自己的开发方式,来不断提高开发效率。UE4 的编辑器虽然功能齐全,但往往有些操作是开发者想通过一键运行脚本的方式来解决的,例如编译和打包,不仅效率高而且还可以让团队中的开发者也参与到打包中来。那 UE4 支持该操作吗?答案必须是 YES 啊!
HelloWorld杰少
2022/12/17
2.5K0
UE4 如何用命令行来打包你的游戏
一键实现自动化部署(灰度发布)实践
在过去几年的DevOps的浪潮中,自动化、持续集成这两个概念早已深入人心(互联网技术人)。比尔盖茨先生曾经都说过:“任何技术在一个业务中使用的第一条规则就是,将自动化应用到一个高效的操作上将会放大高效。第二条就是自动化应用到一个低效操作上,则放大了低效率。”
民工哥
2020/09/16
1.5K0
自动化部署:Jenkins自动部署SpringBoot工程
在本文中,我们将详细讲解如何使用Jenkins自动部署Spring Boot工程。我们将从安装和配置Jenkins开始,然后创建一个简单的Spring Boot工程,并最终实现自动部署。
小明爱吃火锅
2024/01/20
2.9K0
高效APP自动化实践进取之路之自动化打包
APP程序的打包与普通应用程序的步骤类似又有不同,类似之处在于其基本过程都是一样的,大都是三步曲:获取源代码-》编译-》生成可执行程序;不同之处在于其编译工具不同,依赖的环境不一样而已。对于较大型尤其是商业使用的APP,其运行环境一般区分为测试环境,演示环境,生产环境,等等,因此需要生成不同环境下的部署包。
世平
2020/10/15
1.1K0
高效APP自动化实践进取之路之自动化打包
Win10配置Airsim环境并设置Python通信
和朋友交流时,了解到微软开发了一个仿真环境叫Airsim,可以作为插件插入到虚幻引擎4中,进行汽车、无人机等实际环境的仿真。于是打算跟着知乎宁子安写的教程来配置一下环境。
zstar
2022/09/23
2.1K0
Win10配置Airsim环境并设置Python通信
一文搞定前端 Jenkins 自动化部署
这两天折腾了一下 Jenkins 持续集成,由于公司使用自己搭建的 svn 服务器来进行代码管理,因此这里 Jenkins 是针对 svn 服务器来进行的配置,Git 配置基本一致,后面也介绍了下针对 Github 管理的项目的 Jenkins 配置
前端劝退师
2019/10/31
6700
大厂是如何自动化部署Web应用的?(收藏!)
因此为了部署你的应用,第一步你需要购买一台服务器,为了节省成本,一般都会购买按需使用的云服务器,如何申请云服务器就不介绍了,下面介绍如何在Linux服务器搭建Nginx服务。
winty
2020/11/16
2K0
大厂是如何自动化部署Web应用的?(收藏!)
UE4 Module 新建与使用
UE 的 module 是一堆 C++ 类和代码的集合,类似于 DLL,而 UE 本身也是由一堆 module 构成的。将代码拆分为 module 的目的是:
zhiruili
2023/10/20
8760
AutoJs6 – v6.2.0 – 安卓 JavaScript 自动化工具 (Auto.js 二次开发)
Android 平台支持无障碍服务的 JavaScript 自动化工具 需要 Android 7.0 (API 24) 及以上 克隆 (clone) 自 hyb1996/Auto.js
素颜520
2023/04/21
5.1K0
AutoJs6 – v6.2.0 – 安卓 JavaScript 自动化工具 (Auto.js 二次开发)
UE4源码编译 failed to open/create XGE(incredible build工具)
C++项目编译失败,UnrealBuildTool项目添加ShaderCompileWorker Win64 Development -waitmutex参数,调试后发现报错的原因是 incredible build的工具xgconsole调用失败,在控制面板删除/卸载后运行正常。(直接禁用vs插件不行)
sofu456
2019/07/09
4.2K0
Epic如何为开发者加速虚幻引擎构建
随着开发者在家工作或在小型工作室工作,游戏资产,包括极其巨大的资产,需要能够随时提供给世界各地的人使用。
云云众生s
2024/03/28
1260
Epic如何为开发者加速虚幻引擎构建
虚幻引擎(UnReal Engine)环境
2、前往UnrealEngine Github库下载源码,注意要选择与引擎版本号一致的源码
Helloted
2022/06/08
1.8K0
虚幻引擎(UnReal Engine)环境
ue4 插件开发(ue4性能优化)
UE4引擎和UE4项目是由各个模块组成的,其主要编程语言是C++。 插件也是一个模块,说到插件必须讲到耦合性与独立性,耦合性是对模块间关联程度的度量,模块间关联越强,则耦合性强,独立性差。 庞大的UE4引擎各模块相互参差作用,所以想要读懂并拆解并非易事,而创建UE4游戏项目实则只引入了引擎的部分模块,再想想如果很多游戏项目都需要用到这一个自定义功能时,是不是每个项目都要开发一次这个功能,个人或者一家公司内部还好,只要把项目代码复制给另一个项目即可,但是全球这么多的UE4开发者怎么办,开发者的结晶势必要发挥它最大的用处,把自己的研发成果分享出去,为了解决这类问题,就要使得模块独立起来,那么UE4插件就该闪亮登场了。
全栈程序员站长
2022/07/29
3.5K0
ue4 插件开发(ue4性能优化)
都2022年了,还不用Jenkins自动化部署?
一个同学不禁发问:”如果我们开发接到了特别庞大的项目,开发周期特别久,难道测试团队就一直干等着我们开发结束再进行测试吗?那这样的话做测试不是很爽吗!“
伤心的辣条
2022/07/29
7220
都2022年了,还不用Jenkins自动化部署?
UI自动化工具,你知道有几个?
最近在研究针对windows桌面应用程序的自动化工具,查找了网上相关资料,UI自动化工具很多,但是想同时支持windows桌面应用程序、web端以及APP段的工具少的可怜,以下是一些工具的总结:
用户6367961
2019/11/20
9.9K0
应用自动化部署篇
截止昨天已经将应用容器化并部署到k8s平台上,但是每次都要手动部署肯定不现实,所以有一个可自动部署的平台或功能是很重要的,这样就能实现随时开发随时部署了。那么有什么办法可以实现自动部署呢?
希里安
2023/10/30
4670
应用自动化部署篇
使用Docker Compose、Nginx、SSH和Github Actions实现前端自动化部署测试机
显然这个流程不仅繁琐,而且效率也不高,开发每次发布都要耗费很长的时间在部署构建上面。
前端森林
2021/11/12
1.2K0
使用Jenkins自动化部署项目
Jenkins 是一款功能强大的开源持续集成/持续交付 (CI/CD) 工具,但也有一些替代品可供选择,以下是其中一些:
fliter
2023/10/05
5210
使用Jenkins自动化部署项目
关于docker自动化部署的总结与反思
这里采用makefile来打包,目标是运行在linux上,所以需要进行交叉编译,其中@表示控制台不输出,<my_app>表示编译后的可执行二进制文件名称,<muduleA>要编译的模块,该模块下必须包含main.go文件
陨石坠灭
2020/05/22
8960
相关推荐
UE4命令行编译工程入门
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验