[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』

笔记结合了游戏引擎架构 Game Engine Architecture by Jason Gregory 第二版

仅为个人学习整理,


目录

平台层

核心层

资源层

功能层

工具层



工具层

功能层

资源层

核心层 core

平台层 platform


功能调用基本上是自上而下(上层调用下层)


"如同所有软件系统,游戏引擎也是以软件层(software layer)构建的。通常上层依赖下层,下层不依赖上层。当下层依赖上层时,称为循环依赖(circular dependency)。在任何软件系统中,循环依赖都要极力避免,不然会导致系统间复杂的耦合(coupling),也会使软件难以测试,并妨碍代码重用。对于大型软件系统,如游戏引擎,此问题尤其重要。"

平台层

上层的架构庞大而复杂, 而用户的使用环境/设备多种多样(PC/MAC...   键鼠/手柄/体感...)

因此平台层需要保证可移植性

[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_第1张图片


核心层

 游戏引擎以及其他大规模复杂C++应用软件,都需要一些有用的实用软件, 这类软件称为核心系统(core system)。

常见功能:

 [Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_第2张图片

[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_第3张图片

 游戏引擎对于底层的效率非常高, STL并不足以满足, 设计者往往会写一套适配的数据结构


资源层

[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_第4张图片

 unity资源工作流程:

Unity - Manual: Asset Workflow (unity3d.com)https://docs.unity3d.com/Manual/AssetWorkflow.html


功能层

tick入手,

UE:tick / Unity:update

[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_第5张图片

多线程将成为趋势 

[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_第6张图片

unity的循环流程

 


工具层

[Games104笔记]3/21 基础架构1 『引擎架构分层,整体Pipeline』_第7张图片

 DCC

"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)。每个引擎都有某种形式的资产调节管道。"

你可能感兴趣的:(GAMES系列,游戏引擎)