视频:02.引擎架构分层 | GAMES104-现代游戏引擎:从入门到实践_哔哩哔哩_bilibili
基础五层架构

最基础的五层架构,由上到下:
- 工具层:提供编辑环境,方便可视化快速的进行游戏开发。
- 功能层:玩家、NPC运动交互等,游戏中的玩法行为。一些游戏的基础功能,能够让世界能够动起来、玩起来。
- 资源层:Resource、负责加载管理资源
- 核心层:各种功能处理模块的内核。
- 平台层:硬件设备的输入输出设备兼容,游戏平台的发布导出兼容。
第三方库:通过集成到引擎中,或者通过文件类型的交换,进行使用。
游戏引擎分层原因:
- 解耦和降低复杂性、以不变应万变。
- 越底层越不要动,越往上越灵活、越往下越稳定。
- 一般上层调下层。
架构实现概述
假设练习:让一个角色动起来。从练习进行讲解。
资源层
资源层将数据引擎化(变成资产)resource—>assess,并且管理所有资产的生命周期。
现代游戏最重要的是数据之间的关联(reference)。
guid:每个资产的唯一识别号
Runtime Asset Manager 实时资产管理:一个通过路径引用加载/制载资产的虚拟文件系统,通过handle system管理所有资产的生命周期。
handle system:处理和提供资产使用寿命的系统
GC 垃圾回收、延迟下载
功能层
功能层简单来说就是让游戏动起来。
tick


tick函数:tickLogic和tickRender。
一般是先tickLogic再tickRender,先模拟(逻辑)再渲染。
人是靠视觉残留去感知一个世界。
多线程

多线程:比如把logic和render分到不同核处理。
现代引擎有将物理、动画分散处理。
多核并行

未来引擎架构(多核并行):将所有任务变成job(原子),哪个核空着就把job放入这其中。
核心层
数学库主要涉及线性代数。
Quake3引擎案例:1/根号x—>求近似值,然后牛顿迭代快速逼近真实值。

SIMD:一项技术、思想,CPU厂商提出用一个LRU(计算逻辑单元)即一条指令将矩阵(比如四个数)与矩阵的计算全部做完。引擎的库中广泛使用这个技术。
SSE:可以认为是SIMD的技术实现,是一个指令集。主要用来进行向量运算,比直接调用浮点数效率高。
数据结构:在核心层需要自己重做一套自己的数据结构,减少游戏中内存的碎片,提高效率。
内存管理:相邻、有序、批次处理内存数据,能够提高效率。
平台层
兼容所有平台(超级难!!),游戏引擎效率之间的分水岭。
RHI(Render HardWare Interface 渲染硬件接口):重新定义一次Render的API,然后将各个硬件的SDK区别封装起来。

工具层
工具层主要是允许他人去创造游戏内容。
DCC Digital Content Creation 数字内容创建:别人生产的资产工具,比如blender、maya等。
Asset Conditioning Pipeline 资源管线:各种导出导入器。