1. 背景介绍

使用Unreal4引擎做项目, 一定少不了要和源码打交道。对于一个之前一直用Unity做3D项目的程序猿来说,能接触这重高级引擎的全部源码,还是有点小鸡动的~

项目组正式切换到UE引擎之后, 首先是大家一顿骚操作:把各种UE的官方Demo和Manul文档撸一遍,然后正式开始架构属于自己的项目的架构和收集组件。对我们项目来说因为有其他部门的支持,所以不是从0开始的,这个还算是有点欣慰。我接到的任务是对引擎的源码进行整理和编译,并上传到代码服务器上去。关于代码服务器的选择这里强烈推荐大家使用Perforce这个收费软件,细节下面详细讲。。。

今天我们的重点是聊聊源码编译的事情这里把我编译过程中遇到的坑备忘下,希望对大家有帮助!

2. 版本管理工具的选择

Alt text

目前游戏项目中常用的版本管理工具有大概如上几种,这里盗一张不知出处的图(侵删),大家可以对这几款工具的对比有个直观的对比。 我总结几句我们花了一个星期的时间的血泪史:

1. 同等情况下,git上传和下载大工程速度更快更稳定。 svn失败之后要所有重头再来,git至少add和commit的已经做完了。

2. 亲测超过500M的文件svn单个传无压力,git要走lfs(默认100M以内可以不用走)。

3. 如果选择git作为版本管理工具,建议自己魔改一套更简洁的图形化工具(例如TortoiseGit)。 毕竟不是所有的美术策划都能接受:fetch/pull rebase stash/merge commit push的操作, 而且这还不过Stash Push和Stash Pop的操作。别和我说用命令行, 会被美术打死的(┬_┬)

4. Perforce更适合游戏项目做版本管理工具。 Unreal的工程随便都是30G以上,用svn的话试过上传一天一夜, 最后上传失败的(o(≧口≦)o崩溃)。 用p4就稍微友好多了,一个多小时妥妥上传掉。。。

SO ! 选择啥工具看各位自己的选择了,个人强烈推荐有条件的团队直接上perforce。这里提醒一点:Unreal4.20的引擎源码10个G, 完整vs编译完成之后80G左右,引擎编译的Binary文件22G。。。

3. 引擎编译及二进制文件导出

每个UE4项目都会有负责引擎修改的同学,如果一旦对引擎进行了修改那意味着对它进行了定制化开发,那么相同项目组中其他使用引擎的同学(例如:3D美术、策划、客户端程序员等)都得统一使用一样的引擎版本,以保持版本的一致性。那这里很重要的一步,就是如何进行引擎编译并对提取引擎的exe文件。

第一次接触UE的时候我有点懵,反正时间紧任务重(国内游戏团队貌似都这个节奏!), 那就用最土最笨的方法吧, 对编译之后的引擎做提取,删除最大以及windows不使用的so、a库文件。貌似也还成,提取之后大概28G大小和官方的Install之后的大小对比20G, 甚是满意😊

辣么问题来了,以后每次有修改如果进行引擎的更新和提取呢?谁说过来着 :

    基本我们现在遇到的问题都是别人遇到过的,如果没有那肯定是你还没搜到!

果然已经有歪果仁小哥哥做过了 ! 看这个流程Github地址, 这个歪果仁小哥哥自己对UE的BuildGraph进行封装,还写了一个图形化工具。Very Nice!这才是有意义的工具~

按照流程去做如果遇到问题,可以看下这里:

  • Q : Unable to find installation of PDBCOPY.EXE
  • A : 如果遇到这个错误, 那你有可能和我一样本地安装的vs版本是2017而非2015。不要慌,这不是我们的过,先看看怎么解决(英语好的可以直接读这一篇):
    1, 首先下载WIndows 10 SDK, 确保其中的Debugging Tools选项是勾选的(默认勾选, 如果嫌大可以把下面几个不要勾选但是这个选项一定要留)。嫌麻烦的可以直接到百度网盘下载。安装下载包Windows Kits\10\WindowsSDK\Installers路径下的X64 Debuggers And Tools-x64_en-us.msi
    X86、 Debuggers And Tools-x86_en-us.msi两个文件。
    2,如上一步操作成功之后进入:C:\Program Files (x86)\Windows Kits\10\Debuggers\x64拷贝pdbcopy.exe到如下两个路径
    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\AppxPackage
    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage
    没有的路径和文件夹新建好即可。*
  • Q : unreal No BuildPlatform found for Lumin
  • A : 遇到这个问题也许你可以检查下步骤1中外国小哥的工具,设置这里:
    Alt text
    开始我是手动选择Win64、Win32,但是结果发现遇到这个问题。搜下发现
    You can do this by either using the HostPlatformOnly flag or with WithLumin = “false”
    原来这里得手动选择Host Platform Only选项, 或者手动修改工具里的命令加上WithLumin = “false”的选项。*

引用:

1, https://github.com/ryanjon2040/UE4-Binary-Builder
2, https://forums.unrealengine.com/development-discussion/engine-source-github/113790-installed-build-fails-trying-to-run-pdbcopy-exe