序言
构建这个概念是和应用程序包及资源等相关的,它的特点是使用脚本控制一系列的任务的处理,以减少人力操作带来的成本和操作失误风险。
在UE的概念里,构建往往是和打包相关的(如编译、cook、压缩打包等)。但是在项目日常的开发中,构建的语义会更加的广泛,据我所知它可能包含:
- 打各个平台的应用程序包
- 编译引擎
- 编译客户端
- Cook资源
- 资源扫描
- 脚本扫描
- 生成表格、协议、navmesh等各类资源
- ...
我们编写自动化脚本和使用CI/CD平台(如jenkins,鹅厂的蓝盾等)以自动化流水线的形式进行任务来提高生产力。
经典的构建样例
以出应用程序包为例:UE的构建应用程序包需要相关的代码和各种资源,我们可以抽象出其任务节点:
- 检查各个仓库(分支等),并拉取:
- 客户端代码
- 美术资源
- 引擎
- 自动化脚本
- ...
- 按照次序执行各种自动化脚本
- 分析归档构建结果(各种统计,版本号相关等)
- 把构建结果上传的仓库/服务器
- 通知执行人构建结果
UE的打包构建
构建入口代码流
跟进UE的构建入口:
可以看到最后都是调用到了UAT的BuildCookRun.Automation
脚本
注:RunUAT可以直接使用命令构建,也可以运行BuildGraph脚本
打包构建大概的流程阶段和文件流
这里先做一个大概的总结,后续系列文章里我会贴出我的实践测试以及关键代码流。
结语
这个系列我打算以一个经典案例——构建应用程序包为切入点,完整的实践和分析一个构建流程,并理解构建的基本流程和相关知识技能。这一篇大概描述了下UE的构建的宏观上概念,有些地方没有实践不太好理解,我会在后面的文章通过结合实践和分析来解释这些概念。最后,UE项目的构建是复杂的工作,本系列文章只是介绍了它的原生的基本用法,它大多只是执行UE预定义的参数和命令。在实际生产环境中,会对其进行优化和修改以符合实际需要(实际上,我们项目对其做了一定程度上的修改和优化)。
附录
项目打包整体工作流参考
- 资源cook处理和打包平台关联,可以延迟到打包阶段进行,采用多机器并行来加速