重要概念:游戏引擎不仅仅是渲染
引擎关键特征
-
实时
游戏的实时表现最需要考虑的问题就是算力限制
-
工具体系
需要给非程序使用者做工具
需要给程序员二次开发的能力
需要可协作的能力
-
支持模块化升级,面向未来发展
类似飞机的每个模块都能单独升级
引擎层次结构
- 工具层 (Tool Layer)
- 核心:提供发挥创造力的工具,就是编辑器
- 一般采用数字资产生产工具(DCC)制作各类游戏资产
- 要考虑导入导出到引擎
- 要考虑通用的数据格式,比如 USD
- 资源层 (Resource Layer)
- 首先通过DCC制作了很多不同类型格式的数据
- 然后这些外部数据都需要转换成引擎内的高效数据文件(引擎资产),每个资产包含引擎用来识别的唯一识别号,方便查找
- 接着需要一个实时的资产管理器在游戏运行时实现资产的生命周期管理
- 功能层(Function Layer)
- 作用:构建游戏功能
- 内容:后续会详细讲这些模块
- 实现:Tick 函数,包括了每一个时间周期确定要做的事情,比如逻辑和渲染
- 技术:单核走向多核,单线程走向多线程
- 未来:原子化任务,自动分配运算单元
- 难点:依赖关系复杂,调度难度大
- 核心层(Core Layer)
- 作用:构建功能
- 数学库
- 重点就是怎么设计实现高效计算
- 比如 SIMD 技术
- 数据结构
- 需要关注实时性带来的高频调用
- 需要关注存储资源的实时消耗问题
- 技术:内存管理
- 尽可能把数据放到一起
- 按序存放
- 一批一批的处理数据
- 平台层(Platform Layer)
- 作用:屏蔽用户在不同平台上运行的差异
- GPU:RHI
- 引擎使用RHI实现渲染效果
- RHI处理渲染平台的差异问题
- CPU