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 ...
随机推荐
- 小米商城主页展示HTML+CSS
大佬们呀,花了好几天的时间总算是看着页面展示可以了,求赐教! 小米商城主页,对大佬来说肯定简单爆了,我抄写了好久呀,总是有一点点的小问题,还搞不明白 主要是一个静态的小米商城页面,HTML前端代码不复 ...
- office办公套件基础教程
正文 1.网页端的应用-office全家桶 这里我选择先聊web端的应用,首先,我们来想象一下,只要你有网络,有浏览器,就能打开一个网页,在网页上进行编辑.处理一些word.报表.ppt等,你不需要复 ...
- [转] Windows下Hook DirectX
首先说,这篇文章是很久以前为了玩成某游戏的HOOK找到的资料,虽然一直没用上,但是还是让我保留下来了.直接贴上了..看不懂也不要问我,我都没看. 也许看得懂的人对他们来说这是一个思路,不懂的就当垃圾文 ...
- PaddlePaddle 飞桨复现 ResNeXt
import paddle.nn as nn import paddle class BN_Conv2D(nn.Layer): """ BN_CONV_RELU &quo ...
- 2023-03-13:给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j], 这样的坡的宽度为 j - i。 找出 A 中的坡的最大宽度,如果不存在,返回 0
2023-03-13:给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j], 这样的坡的宽度为 j - i. 找出 A 中的坡的最大宽度,如果不存在 ...
- 2021-05-26:给定一个char[][] matrix
2021-05-26:给定一个char[][] matrix,也就是char类型的二维数组,再给定一个字符串word,可以从任何一个某个位置出发,可以走上下左右,能不能找到word?char[][] ...
- 2021-09-03:直线上最多的点数。给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。力扣149。
2021-09-03:直线上最多的点数.给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点.求最多有多少个点在同一条直线上.力扣149. 福大大 ...
- vue全家桶进阶之路15:自定义指令
Vue 2.x 中的自定义指令是一种可以用于扩展 Vue.js 核心功能的特性.指令可以用于操作 DOM 元素的属性.监听 DOM 事件.控制 DOM 行为等等,可以将常见的交互行为封装成指令,从而让 ...
- Vue Element-ui 之 el-table自动滚动
首先是 div结构布局 <div id="scrollId">//对el-table盒子设置 id 属性 <div style="height: 100 ...
- SpringBoot 使用 Sa-Token 完成路由拦截鉴权
一.需求分析 在前文,我们详细的讲述了在 Sa-Token 如何使用注解进行权限认证,注解鉴权虽然方便,却并不适合所有鉴权场景. 假设有如下需求:项目中所有接口均需要登录认证校验,只有 "登 ...