资源层
管理了整个游戏中资源的分配、加载等。
游戏引擎中的资源很多都来自于其他的软件,尤其是美术素材,比如psd,又或者是一些3D建模软件的工具,这一类软件生成的资源我们将其称为Resource。
Resource资源中蕴含了大量的额外文件,是这些文件自己对自己的软件的一些工具或者是支持,导入到引擎之后会被引擎优化为更适合引擎的Asset资产文件。
比如png、jpg这样的图片格式,在引擎中则会转换为dds格式,这样的格式更适合显卡去绘制。
此时,Resource中的重要数据已经被转化为了Asset这种简单的资产,但是还有一个问题需要注意,加工为这种简单格式之后,这些文件中的数据关系可能就会丢失,比如一个模型文件可能不知道自己的材质在哪里。所以这里就会有一些专门用来联系这些文件的资产,比如Unity中的meta文件。
GUID:标记某个资产的唯一序列号。游戏中资源不能一直总用路径去访问,所以每个资产进入的时候会声明这样一个唯一的序列号,用于以后的资源使用。
资源句柄:
功能层
有些功能是属于游戏的,有些功能是属于游戏引擎,这一块涉及到太多了东西,不具体说明。
核心层
核心层会有自己的数学计算库和数据结构库,因为游戏引擎是追求效率和安全的。
正常的数学计算库可能会涉及到大量的浮点运算,降低效率,而核心层这里重置的数学计算库则是更加注重效率,求近似解。
而数据结构,比如C++的容器,是很容易产生各种内存碎片的,所以在游戏引擎中,往往会自己写一套数据结构,降低这个内存的分散,该内存将是由我们自己管理的。
平台层
在不同平台运行时会有很大的差异,最直观的感觉是路径的不同,实际上还有很多地方不一样。
比如编写Shader的人员,就会因为不同的平台有不同的需求,有DX11,DX12,Vulkan,OpenGl等等。
不同的平台各种不同的设备都不一样,需要进行相关的适配。
工具层
核心是允许别人去创造游戏的内容。


