UE4使用BuildGraph构建二进制版本虚幻引擎
我得吐槽一下这个工具,至少在我这是不怎么好用的。可以说整个过程极其曲折,我甚至一度想砸电脑。虽然过几年后回头看这段文字我可能会嘲笑自己的无知,体会其中的高明之处。不过我今天还是要吐槽一波,也能帮大多数的人踩坑,避免再次踏雷。我还因此折损了一块Nvme,废话不多说了。
第一步:选择好git工具并且设置本地git的忽略选项。
不管你是从GitHub上Clone还是下载安装包,这里途径和其他地方没有区别。我是直接下载的zip文件。
1.选择工具
我用的是GitKraken(https://www.gitkraken.com/download/windows64)当然也有用GithubDesktop客户端的,这能在你修改代码中帮你记录和创建分支等等。极大的帮助你协作开发,我还是很建议各位去使用这种工具。比如我就靠这东西拯救了我修改的源代码。

2.设置忽略选项
误区:我们在创建虚幻的git库时时常就会我打开我的git就得等半个小时的感觉,就不用说第一添加git的时候了,而且git占用的空间特别大,检索缓慢。大部分的问题就出在这里。因为在第一创建git的库时,提示需要记录跟踪的文件就有18万个文件,而且这个地方还有一个更坑的地方。每当编译完,VS就会创建很多临时文件和新编译好的文件。一些二进制文件等等。导致每次可能需要手动去除或者一把添加,越用越卡。这种搞法志强都不够用。不能偷的懒绝对不能偷。
在我们建立自己的git库之前,我们需要调整到自己合适的跟踪目录,其他目录屏蔽掉。

先来看看这个文件写了什么?

带“!”符号的代表保留,如果不需要跟踪怎么处理呢? 把“!”去掉即可。配置文件的结构也是自上而下的。所以...你只要后面覆盖了之前的配置效果一样。

包括去除一些不需要跟踪的文件,这样下来需要跟踪的文件大概也就1万多个,当然这里需要根据自己的需求设定自己要跟踪的库文件。比如技美改的更多的是shader文件夹下内容。当然也会出现后期需要跟踪的部分怎么办呢?只需要把需要的目录前加上“!”。
这里就能解决跟踪文件的问题,这里没把我少坑。这个坑浪费了我很多时间在添加库。
第二步:修改引擎源码(每个改引擎的人需求都各不相同,不做详细叙述。各有各的坑等着踩,用VS构建完验证编辑器正常后再进行下面的)
第三部:使用BuildGraph构建引擎
我愿称这部分为最坑的部分,请一定好好阅读。这是一步步踩坑得出来的,我在改4.26时还没遇到这样的事。下面逐条来讲述。
第一步及建议:请不要将你的引擎源码放在你的系统盘所在的这块硬盘编译,并找块固态来编译
切记!切记!这一条。因为你的固态硬盘使用寿命是有擦写次数的。特别是当你没摸清楚固定的流程的时候,你可能配置需要往复调整。硬盘来回擦写你的硬盘撑不了多久就得离你而去。而且放在系统盘下,还可能整出各种奇葩问提。怎么来形容这个写入和写出量呢?装个系统也就30GB但你编写虚幻,然后编译二进制得占用多大空间呢?以4.27为例。源码+编译出来的约为120GB,然后是打包install的DDC约为50GB左右,最后成品的引擎是50GB左右。也就是220GB左右,并且都是零散文件。这还不包括,在编写时存在虚拟内存里来回擦写的部分,这个数据量一直以最大擦写速度在操作。而且很过分的是当你编译得差不多的时候才提示报错信息。如果不会查看构建日志,然后恰好又关闭了,整个人就会陷入自闭了。
为什么要找块固态呢,对于大部分人来说时间也是一种宝贵的资产。一般的机械盘实在是太慢了,而且是写入零散文件。真的不建议大家在机械盘上编译。比固态慢上4到5倍,这时你的CPU吃不满,大部分时间会来摸鱼。最佳方案是买一块SSD用来编译,然后用一块机械盘来存储编译好的文件。
第二步及建议:用虚幻文档作为参考,然后好好阅读InstallEngineBuild.xml

为什么这么说呢?因为官方没来得及修改这块的文档,如下图中已经移除了部分可构建选项。来看一下,顺带看一下当前的编译配置。


然后其中包含一些可优化的部分,这个得根据个人来适当调整。

而开启了 `-allmodules`,则意味着引擎中所有的模块都要重新编译,是完整地编译引擎。当下次执行,还是要完整地编译整个引擎,UBT 中具有对 `-allmodules` 的介绍:
`-allmodules` 参数是定义在 UBT 的 `TargetRules.cs` 中的:专门用来构建安装版引擎的,我觉得可以关掉,使用增量编译的方式执行,不然在 ci 上每次执行都太慢了。
而且这个脚本中对每个平台都执行了两遍,一遍是不含 `-nolink` 参数的,一遍是包含 `-nolink` 参数的,可以根据自己的需求决定是否关闭。
我的建议是:新手先不做调整,当编译成了几次后对流程有一定了解后可以修改,大约能缩短一倍时间。之所以不建议新手直接去除这部分,是因为当普通的部分都搞不定,采用优化后的脚本,万一出现新的问题压根不会解决。
第三步及建议:关于安装Win10SDK的部分
这一步同样重要,这决定你会不会浪费几天时间来处理关于缺少“PDBCOPY.EXE”这个Bug的解决办法,同样是“惊喜”不断。
先说几种情况:
下载过于新得SDK版本:这个不是必须操作,因为有待验证。
我遇到的问题就是,当我从微软官方下载了新的SDK后,编译出现了宏定义错误。光是卸载“SDK”包是不能修复错误的。只有卸载VS后重新安装才能正常的编译版本。


安装不需要使用的包同样会导致编译install版本出错:

正确做法是:

第四步及建议:选择合适的配置,创建按自己的构建版本。
我的配置:
RunUAT.bat BuildGraph -target="Make Installed Build Win64" -script=Engine/Build/InstalledEngineBuild.xml -set:WithWin64=true -set:WithWin32=false -set:WithMac=false -set:WithAndroid=false -set:WithIOS=false -set:WithTVOS=false -set:WithLinux=false -set:WithLinuxAArch64=false -set:WithLumin=false -set:WithLuminMac=false -set:WithHoloLens=false -set:WithClient=true -set:WithServer=true -set:VS2019=true -clean
这里有个建议:拥有使用visual studio 2019 的开启 VS2019=true。至少在我使用的时候,如果不设置是报错的。问题我也懒得查了,因为日志提示是未知错误。建议不用去尝试,因为报错只有当所有操作搞完才报,而且installDDC都出来了。
然后就是漫长的等待,希望能帮到需要的人。特意写下这个文章,没准能帮你剩下几天时间。