【Games104】 引擎架构分层

一、工具层 Tool Layer

【Games104】 引擎架构分层_第1张图片

给予一个能够编辑游戏的编辑器(蓝图、材质等)。

许多asset是在不同DCC中创建的(Blender、MAYA等),所以一般需要导入导出功能。

【Games104】 引擎架构分层_第2张图片

 二、功能层 Function Layer

【Games104】 引擎架构分层_第3张图片

给予游戏可视化、可动性以及可玩性。包括渲染、动画、物理引擎、AI、人机交互等。

具体来说,就是设定每过一tick时间,游戏则会前进一步,即计算机输出这一tick过程中产生的指令。通常关于tick的操作包括两个函数,tickLogic()和tickRender(),前者优先执行,功能为模拟整个游戏的行为,包括输入输出、相机视角变换、碰撞检测等;后者的功能为根据前者计算出的各种asset的位置情况进行重新绘制。

【Games104】 引擎架构分层_第4张图片

Function Layer通常涉及到多线程计算,更加高效的利用资源。 

三、资源层 Source Layer

【Games104】 引擎架构分层_第5张图片给功能层提供资源去实现其功能。

通常第三方文件建立的资源通常带有大量的工具自带的信息(如PSD、MAX),这些自带的信息通常在引擎加载的时候是不必要的。为了提高加载效率,通常将引擎导入的文件都转换成assets文件。例如当引入JPG或PNG格式文件,其压缩算法对GPU来说是低效的,所以通常将其转换为高效的dds文件再存储到显存中。

【Games104】 引擎架构分层_第6张图片

对于一个对象,有时需要绑定其纹理、材质、网络、动画等信息。通常我们定义一个Composite asset文件将其关联(如XML文件),并通过全局唯一标识GUID进行统一管理。

【Games104】 引擎架构分层_第7张图片 在运行的时候,我们会需要运用到一个资源管理器(Runtime Asset Manager)去管理所有asset的生命周期,例如控制各种资源的加载、卸载、分配、回收(GC)等。

四、核心层 Core Layer

【Games104】 引擎架构分层_第8张图片 给予游戏编辑所需要的工具 。比如内存分配、资源加载等。

核心层为上层运算提供逻辑基础,提供数学库、数据结构、内存管理工具等。引擎的加载是以效率为核心,所以为了加载的效率可以降低计算的准确性,例如可以进行一些近似计算或SIMD(同步计算)来提高计算效率。在数据结构中,编程语言自带的数据结构(例如vector)会产生大量的存储空余,大大降低了执行效率,所以需要核心层给予的数据结构去提高访问效率。为了提高效率,给出了三条规则:1、尽可能把数据放在一起;2、尽可能顺序访问;3、批处理。

【Games104】 引擎架构分层_第9张图片

五、平台层 Platform Layer

【Games104】 引擎架构分层_第10张图片

适配各种平台和各种硬件软件设备。

额外:第三方资源 3rd Party Libraries 

 

你可能感兴趣的:(games104,游戏引擎)