以前做过游戏引擎,也看过几个商业引擎的源码如Torque等,还有用过一些第三方的引擎来开发游戏,如Unity, Cocos, Laya等,今天来说一说一款游戏引擎应该如何架构和设计,我做了一张图,如下,接下来讲围绕这张图分三个层次来给大家讲解一个游戏引擎的架构与设计。
OS平台抽象层
游戏的本质其实就是运行在OS上的一个App,所以游戏使用的各种系统支持和系统调用都是基于OS的API函数来完成的。而现在的游戏引擎都要求跨平台,一次开发能打包发布到Android, IOS, Windows, Mac, Linux等。游戏引擎首先会做一个平台抽象层,这层主要包含两个方面:
(1)给游戏引擎提供统一接口的OS系统调用;
(2)是给游戏App打包发布提供的发布工具与发布环境。
平台抽象层主要提供以下功能:
App支持:创建一个游戏窗口,游戏App有个窗口的载体;
事件支持: 调用OS的API获取OS的鼠标,键盘,触摸,重力感应等操作事件;
声音支持: 调用OS的API来播放声音;
OpenGL支持: 提供平台的OpenGL环境的支持;
这些功能对外开放统一的接口给上层调用,对内有不同的平台都有不同的一套实现,所以跨平台的游戏引擎不同平台都有对应的项目与工程,游戏打包的时候&#x