笔记结合了游戏引擎架构 Game Engine Architecture by Jason Gregory 第二版
仅为个人学习整理,
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_游戏引擎](https://file.cfanz.cn/uploads/png/2022/06/15/1/JSAYNDK1V4.png)
目录
平台层
核心层
资源层
功能层
工具层
工具层
功能层
资源层
核心层 core
平台层 platform
功能调用基本上是自上而下(上层调用下层)
"如同所有软件系统,游戏引擎也是以软件层(software layer)构建的。通常上层依赖下层,下层不依赖上层。当下层依赖上层时,称为循环依赖(circular dependency)。在任何软件系统中,循环依赖都要极力避免,不然会导致系统间复杂的耦合(coupling),也会使软件难以测试,并妨碍代码重用。对于大型软件系统,如游戏引擎,此问题尤其重要。"
平台层
上层的架构庞大而复杂, 而用户的使用环境/设备多种多样(PC/MAC... 键鼠/手柄/体感...)
因此平台层需要保证可移植性
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_游戏引擎_02](https://file.cfanz.cn/uploads/png/2022/06/15/1/62A6RP55c5.png)
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_数据_03](https://file.cfanz.cn/uploads/png/2022/06/15/1/W5X8aJ9JKC.png)
核心层
游戏引擎以及其他大规模复杂C++应用软件,都需要一些有用的实用软件, 这类软件称为核心系统(core system)。
常见功能:
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_游戏引擎_05](https://file.cfanz.cn/uploads/png/2022/06/15/1/565TD05dN2.png)
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_游戏引擎_06](https://file.cfanz.cn/uploads/png/2022/06/15/1/35d770IA30.png)
游戏引擎对于底层的效率非常高, STL并不足以满足, 设计者往往会写一套适配的数据结构
资源层
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_数据_07](https://file.cfanz.cn/uploads/png/2022/06/15/1/XG9NFQG56J.png)
unity资源工作流程:
Unity - Manual: Asset Workflow (unity3d.com)
https://docs.unity3d.com/Manual/AssetWorkflow.html
功能层
从tick入手,
UE:tick / Unity:update
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_软件系统_09](https://file.cfanz.cn/uploads/png/2022/06/15/1/aBI0UTB509.png)
多线程将成为趋势
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_数据_10](https://file.cfanz.cn/uploads/png/2022/06/15/1/b1Y64C5RX6.png)
unity的循环流程
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_软件系统_11](https://file.cfanz.cn/uploads/jpeg/2022/06/15/1/dH5F90O2B2.jpeg)
工具层
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_游戏引擎_12](https://file.cfanz.cn/uploads/png/2022/06/15/1/U1Tb3V3Ye5.png)
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_游戏引擎_13](https://file.cfanz.cn/uploads/png/2022/06/15/1/67XJe59916.png)
DCC
![[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_数据_14](https://file.cfanz.cn/uploads/png/2022/06/15/1/Z58Q2V23Ub.png)
"DCC应用软件所使用的数据格式,鲜有适合直接用于游戏中的,原因有二。
1. DCC 软件在内存中的数据模型,通常比游戏所需的复杂得多。例如,Maya的场景节点,以有向无环图(directed acyclic graph, DAG)存储,包含复杂的互相连接的网络。Maya还存储了该文件的所有编辑历史记录。Maya场景中每个物体的位置、方向、比例,都以完整的三维变换表示,此变换又由平移(translation)、旋转(rotation)、缩放(scale)、切变(shear)所组成。游戏引擎通常只需这些信息的一小部分就能在游戏中渲染模型。
2.在游戏中读取DCC 软件格式的文件,其速度通常过慢。而有些格式更是不公开的专有格式。
因此,用DCC 软件制作的数据,通常要导出为容易读取的标准格式或自定义格式,以便在游戏中使用。
当数据自DCC 软件导出后,有时必须经过再处理,才能放在游戏引擎里使用。若工作室要为游戏开发多个平台,这些中间文件必须按平台做不同处理。例如,三维网格(3D mesh)数据可能导出为某中间文件格式,如XML 或简单的二进制格式;之后,可能会合并相同材质的网格,或把太大的网格分割成引擎允许的大小;最后,为方便每个平台读取,用最适合的方式组织网格数据,并包装成内存影像。
从 DCC 到游戏引擎的管道,有时候被称为资产调节管道(asset conditioning pipeline)。每个引擎都有某种形式的资产调节管道。"









