当前位置:   article > 正文

GAMES104:02引擎架构分层-学习笔记_游戏引擎架构

游戏引擎架构


一、游戏引擎分层架构

0.游戏引擎分层简介

  • 用户层
  • 工具层(Tool Layer):编辑器、工具界面
  • 功能层(Function Layer):渲染Rendering、动画Animation、物理Physics、相机Camera和实现游戏性的脚本Script、状态机FSM、AI等功能模块
  • 资源层(Resource Layer):各类图片、动画、音频资源加载
  • 核心层(Core Layer):核心功能如内存管理、容器分配、数据计算、多线程处理等
  • 平台层(Platform Layer):对接不同游戏平台、主机和硬件
  • 第三方库(Third Party Libraries):中间件和第三方库通过SDK(Software Development Kit)调用

1.资源层

  1. 将资源(resource)转变为资产(asset),比如将各类图片提取有用信息后(比如psd格式里就有很多无用信息)转换为适合GPU处理的DTS格式
  2. 使用一个Composite asset文件(如XML)定义资源间的关联性,如一个模型的贴图、动画、材质等对应,并使用全局唯一标识符(GUID)进行管理
  3. 运行游戏时,使用资产管理器(Runtime Asset Manager)管理资产的生命周期(Asset Life Cycle),包括资产的实时加载卸载、资源的分配、垃圾回收(GC)、延时加载等

2.功能层

在一个tick时间内(帧?)分别先后执行tickLogic()和tickRender(),(逻辑帧和渲染帧,类似unity的Update()那一套)

  • 逻辑帧执行
    1. Camera
    2. Motor
    3. Controller
    4. Animation
    5. Physics
  • 渲染帧执行
    1. RenderCamera
    2. Culling
    3. Rendering
    4. Postprocess
    5. Present

功能层涉及的东西核心又多且杂,给引擎提供核心功能模块(major function modules)、Loop Update、并且是游戏和引擎的过渡。同时功能层的多线程运算已经成为主流,并且多核中的dependency非常重要。

3.核心层

核心层为所有逻辑提供基础,比如数学库[线性代数就够用]、数据结构和容器(链表树)、内存管理等。

游戏引擎非常注重效率,比如在数学库中,可以使用逼近算法(不完全准确),或者用SIMD(单指令多数据Single Instruction Multiple Data,以同步方式,在同一时间内执行同一条指令)提高计算效率,或者使用SSE指令进行矩阵计算;比如数据结构(比C++)更方便内存管理,以减少内存浪费(这点与操作系统类似)。

  • 提升CPU内存效率的三个要点:1,数据集中存放;2,按照顺序结构排序;3,输入输出批处理-----ecs核心思路
  • 因此对代码质量要求很高(安全且高效),能写核心层的人可以做初级架构师啦

4.平台层

有时候写完代码发现不同平台文件加载路径的符号都不一样,这时候就需要用到平台层,来消除不同平台间差异的影响。平台层通过Render Hardware Interface(RHI)来解决这些差异问题,利用虚函数对不同平台的图形API进行重新封装。

甚至不同平台连CPU架构都不一样,比如索尼还有个SPU,不同平台的优化差异很大。

5.工具层

工具层主要为创作者提供生产力工具,比如蓝图、材质编辑器、Shader Lab等,引擎追求runtime效率,但工具不需要runtime只需要开发效率,因此可以使用C++、C#甚至h5来制作。

有时候工具层的代码量会比其它层都大的,维护成本也更高,因此一样相当核心。

  • Asset Conditioning Pipeline(资源导入导出器)+ 引擎编辑器 = 引擎完整的工具层。

二、为什么分层架构

游戏的复杂度高,技术面广,分层可以使不同模块部分解耦,各自独立提供服务,如同封装的思想(也如同社会结构),底层为上层提供基础服务,上层调用底层的工具,上层灵活,底层稳定。层次之间只允许上层调用下层,稳定清晰。

总结

  • 游戏引擎被设计为分层架构,各引擎大同小异,命名不同但分类都有
  • 在这一分层架构中,底层为上层提供基础服务,上层调用底层的工具,上层灵活,底层稳定
  • 游戏中的虚拟世界由一系列tick时间组成
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/991793
推荐阅读
相关标签
  

闽ICP备14008679号