GAMES104Lecture2-游戏引擎五层架构

Posted 峰度偏偏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GAMES104Lecture2-游戏引擎五层架构相关的知识,希望对你有一定的参考价值。

文章目录

总览

游戏引擎由工具架构和运行时组件组成(Tool+RunTime),继续细分又可以把运行时组件分为4层。故总体是五层架构。

学习目标

  1. 掌握游戏引擎整体架构,了解每层功能
  2. 明确调用关系:上层调用下层
  3. 日后写代码要先思考,这个功能应该写在哪层

五层架构

Tool Layer 工具层

提供可视化界面和接口给使用引擎的人员。

这层也处理各种animation、mesh等资产的第三方格式导入导出(资产管道)

Function Layer 功能层

物理,渲染,动画都在这层

阅读这层的代码从Tick入手(UE4的Tick,Unity的Update):

Tick又分为tickLogic和tickRender。分别处理逻辑和渲染。

引擎跑起来的时候,先进行Logic物理计算下一帧的世界状态,然后将计算好的内容Render到二维平面。故称logic和render为两大神兽

这里注意写引擎代码的时候,表现绘制render(裁剪、光照、shader……)一定要和逻辑logic分开

此外注意在看引擎代码的时候,一定要时刻记住引擎采用的是多核架构,是多线程在跑(其中如何协调具有依赖关系的两个job是难点)

Resource Layer 资源层

资源从别的软件格式转换到对引擎来说比较高效的格式,每个游戏资产具有唯一的识别号(GUID)用于资产之间依赖记录。

负责存储联系不同的游戏资产,管理资产实时的生命周期(什么时候加载卸载、GC、LOD延迟加载等)。

如材质,纹理和mesh的资产依赖记录、

如不需要的资产回收和延迟加载(deferred loading,如远处的景等到人物靠近了才进行加载)

Core Layer 核心层

通用功能的集合。

如内存管理,垃圾回收,自定义数据结构及算法,矩阵计算等数学库。

这层的代码要精心设计,因其对效率要求很高。

内存管理要做到效率高,底层逻辑只有三条:

  1. 数据尽可能都放在一起
  2. 读数据的时候尽可能让读的顺序和物理存放的顺序一致
  3. 抹除数据的时候尽可能一次抹除一片,效率比一个一个抹除要高

Platform Layer 平台层

使引擎能够兼容各种硬件平台,实现引擎的平台无关性

由于不同游戏平台对同一个文件的处理可能不一样。如Win和Mac路径的写法。更严重的是硬件架构都可能不同(如PS3具有多个协处理器SPU,需要设计一个计算具体是跑在哪个核上)。所以需要一个平台独立层运行在各层之下,包装操作系统调用和其它API,保证引擎在不同硬件平台上达到相同的运行效果

可以通过虚函数、定义不同平台的宏等方法来实现

RHI(Render Hardware Interface)就是做平台层封装的工作

第三方中间件

在上述五层的构造中,都由可能使用到现成的第三方中间件。数据结构和算法,碰撞和物理,图形,角色动画,人工智能,生物力学……这些都有现成的优秀第三方库可以使用

故第三方中间件在整个引擎中属于横跨五层的存在

小结

游戏引擎可以分为五层架构,从下往上分别是:平台层、核心层、资源层、功能层、工具层。其中前四层属于runtime:运行时组件。工具层为引擎的工具架构

只允许上层调用下层接口,避免出现循环依赖

基本所有引擎的架构都是由此基本架构延申。但不同游戏类型的游戏引擎存在差异(一个具体的游戏引擎通常是为了某类型的游戏设计的)

其它:

  1. 引擎开发的核心是定义数据格式:数据在引擎中、编辑器中、文件中分别怎么呈现

游戏引擎架构

游戏编程分为游戏逻辑和游戏引擎。游戏引擎是一套可重复利用的底层框架。包括渲染引擎、声音引擎、网络引擎等等。现提供一套游戏架构,从底层向上分别为:

硬件、驱动、操作系统。

第三方软件开发包:DirectX、OpenGL,Boost、STL库,Granny、Havok、Animation等。

平台独立层:集合、迭代器、文件系统、网络传输层、线程库、物理碰撞包裹类。

核心系统:模块启动终止、断言、单元测试、内存分配、数学库、调试用打印及日志、性能剖析、引擎配置、异步文件。

资源(游戏资产):三维模型资源、纹理资源、材质资源、字体资源、碰撞资源、物理参数、游戏世界地图,还有资源管理器。

低阶渲染器、性能剖析及调试、碰撞及物理、人体学接口设备、音频、在线多人、骨骼动画、场景图、视觉效果、前端、游戏性基础。

游戏专用子系统:武器、道具、载具、游戏专用渲染、玩家机制、游戏摄像机、人工智能。

 

以上是关于GAMES104Lecture2-游戏引擎五层架构的主要内容,如果未能解决你的问题,请参考以下文章

GAMES104 笔记 -引擎架构分层和整体pipeline

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

我的渲染技术进阶之旅Games104游戏引擎思维导图2.0上线!

我的渲染技术进阶之旅Games104游戏引擎思维导图2.0上线!

《GAMES104-现代游戏引擎:从入门到实践》-05 学习笔记

游戏引擎动画系统中蒙皮与骨骼的映射关系|local本地坐标系与model模型坐标系|计算机图形学