UE4构建基础和实践:一、概述
序言
构建这个概念是和应用程序包及资源等相关的,它的特点是使用脚本控制一系列的任务的处理,以减少人力操作带来的成本和操作失误风险。
在UE的概念里,构建往往是和打包相关的(如编译、cook、压缩打包等)。但是在项目日常的开发中,构建的语义会更加的广泛,据我所知它可能包含:
- 打各个平台的应用程序包
- 编译引擎
- 编译客户端
- Cook资源
- 资源扫描
- 脚本扫描
- 生成表格、协议、navmesh等各类资源
- ...
我们编写自动化脚本和使用CI/CD平台(如jenkins,鹅厂的蓝盾等)以自动化流水线的形式进行任务来提高生产力。
经典的构建样例
以出应用程序包为例:UE的构建应用程序包需要相关的代码和各种资源,我们可以抽象出其任务节点:
- 检查各个仓库(分支等),并拉取:
- 客户端代码
- 美术资源
- 引擎
- 自动化脚本
- ...
- 按照次序执行各种自动化脚本
- 分析归档构建结果(各种统计,版本号相关等)
- 把构建结果上传的仓库/服务器
- 通知执行人构建结果
UE的打包构建
构建入口代码流
跟进UE的构建入口:

可以看到最后都是调用到了UAT的BuildCookRun.Automation脚本
注:RunUAT可以直接使用命令构建,也可以运行BuildGraph脚本
打包构建大概的流程阶段和文件流
这里先做一个大概的总结,后续系列文章里我会贴出我的实践测试以及关键代码流。

结语
这个系列我打算以一个经典案例——构建应用程序包为切入点,完整的实践和分析一个构建流程,并理解构建的基本流程和相关知识技能。这一篇大概描述了下UE的构建的宏观上概念,有些地方没有实践不太好理解,我会在后面的文章通过结合实践和分析来解释这些概念。最后,UE项目的构建是复杂的工作,本系列文章只是介绍了它的原生的基本用法,它大多只是执行UE预定义的参数和命令。在实际生产环境中,会对其进行优化和修改以符合实际需要(实际上,我们项目对其做了一定程度上的修改和优化)。
附录
项目打包整体工作流参考

- cook可以采用多机器并行来加速
UE4构建基础和实践:一、概述的更多相关文章
- asp.net core系列 59 Ocelot 构建基础项目示例
一.入门概述 从这篇开始探讨Ocelot,Ocelot是一个.NET API网关,仅适用于.NET Core,用于.NET面向微服务/服务的架构中.当客户端(web站点.ios. app 等)访问we ...
- 【UE4 C++ 基础知识】<12> 多线程——FRunnable
概述 UE4里,提供的多线程的方法: 继承 FRunnable 接口创建单个线程 创建 AsyncTask 调用线程池里面空闲的线程 通过 TaskGraph 系统来异步完成一些自定义任务 支持原生的 ...
- 7.云原生之Docker容器Dockerfile镜像构建浅析与实践
转载自:https://www.bilibili.com/read/cv15220707/?from=readlist Dockerfile 镜像构建浅析与实践 描述:Dockerfile是一个文本格 ...
- OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务
OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务 1. OpenVAS基础知识 OpenVAS(Open Vulnerability Assessment Sys ...
- Gradle笔记——构建基础
本篇文章主要介绍一下Gradle的构建基础. 它看起来似乎和android项目没多大关系.不能让人一下子理解android项目中的Gradle配置文件,可是这篇基础真的非常重要. 学习Gradle前, ...
- 从头开始学gradle【Gradle 构建基础】
构建基础 Project 和 task:projects 和 tasks是 Gradle 中最重要的两个概念. 任何一个 Gradle 构建都是由一个或多个 projects 组成.每个 projec ...
- Oracle OAF 应用构建基础之实现控制器 (转)
原文地址: Oracle OAF 应用构建基础之实现控制器 设计一个OA Controller 如OA Framework Page解析中所描述的,OA Controller定义了web beans的 ...
- MSF基础攻击实践报告
MSF基础攻击实践 MSF的六个模块:exploit,encoder,payload,aux,post,nops exploit——渗透攻击模块 测试者利用它来攻击一个系统,程序,或服务,以获得开发者 ...
- 响应式流API的构建基础
下面三个重要的概念是响应式流API的构建基础: 发布者是事件的发送方,可以向它订阅. 订阅者是事件订阅方. 订阅将发布者和订阅者联系起来,使订阅者可以向发布者发送信号. http://www.info ...
- 深入理解 ProtoBuf 原理与工程实践(概述)
ProtoBuf 作为一种跨平台.语言无关.可扩展的序列化结构数据的方法,已广泛应用于网络数据交换及存储.随着互联网的发展,系统的异构性会愈发突出,跨语言的需求会愈加明显,同时 gRPC 也大有取代R ...
随机推荐
- CopyOnWriteArrayList的使用和优缺点
CopyOnWriteArrayList允许并发读,读操作无锁,性能较高: 而写操作(含删除),比如向容器中添加/删除一个元素,则首先将当前容器复制一份,然后在新副本上执行写操作,结束之后再将原容器的 ...
- rockyLinux 初体验(教程)PostgreSQL15
目录 数据库软件 PostgreSQL 安装 数据库软件 PostgreSQL 配置 数据库软件 PostgreSQL 交互 通用数据库管理软件 DBeaver 彼时,PostgreSQL 已经更新到 ...
- Costura.Fody 使用问题
1. Costura.Fody 引用后,未能正常合并资源文件.用着用着就不行了 解决方案:在csproj所在的文件目录,找到FodyWeavers.xml,添加<Costura/> 1 & ...
- C# 无需管理员权限提示,操作C盘文件
在C盘创建.移动文件,如果当前不是管理员身份,是没办法直接操作. 如果当前程序有管理员权限,那可以直接操作. 但是,添加管理员权限启动,会弹出用户确认提示框. 在某些场景下,其实是不想让用户看到这样的 ...
- Pyathon If条件测试
if条件测试 # 案例 cars = ['audi','bmw','subaru','toyota'] for car in cars: if car =='bmw': print(car.upper ...
- Django transaction.atomic 事务的使用
函数 transaction.atomic 数据库的读写操作中,事务在保证数据的安全性和一致性方面起着关键的作用,而回滚正是这里面的核心操作. 遇到并发的时候常常会因为接口的访问顺序或者其他情况,导致 ...
- 2021-10-08:填充每个节点的下一个右侧节点指针。给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找
2021-10-08:填充每个节点的下一个右侧节点指针.给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点.填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找 ...
- 【C++】初始化列表构造函数VS普通构造函数
普通构造函数VS初始化列表构造函数 初始化列表构造函数最优先匹配问题 对于一个类而言,只要其中包含有初始化列表的构造函数,编译器在编译使用{}语法的构造时会最倾向于调用初始化列表构造函数,哪怕做类型转 ...
- HTML渲染机制
一直写页面但是很少对一些较深的运行机制的了解,这次趁休假查了一些相关的资料加上个人理解,记录一下关于html渲染的整个过程,也加深一下自己对html渲染的理解 一.先借一张图来看看html的整个加载过 ...
- Python基础 - 赋值运算符
以下假设变量a为10,变量b为20: 运算符 描述 实例 = 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c += 加法赋值运算符 c += a 等效于 c = c + a ...