越来越多的游戏开始采用游戏引擎来加快开发速度,游戏引擎也就越来越多。我对游戏引擎的研究时间较短,撰写本系列短文,抛砖引玉,欢迎大家多多讨论和提出不同意见。
按照先易后难的模式,我们先讨论2D的游戏引擎(包括2.5D)
第一部分:2D游戏引擎的基础形态
1. 最下面的层
引擎的最底层,通常是对操作系统的Driver层或者底层进行封装,以方便解决移植问题(大部分引擎都支持多个平台),另一方面也避免硬件和操作系统的更新,导致引擎无法工作。
接下来,引擎要解决跟第三方模块的配合问题,也就是plug in接口层。
引擎还需要支持脚本语言或者跟其他语言进行扩展,我们把这部分和plug in都并入到扩展层吧。
底层封装和扩展层虽然跟引擎核心关系不大,但非常影响引擎的可靠性。
2. 辅助层
引擎为了提高效率,大都接管了部分操作系统的工作,例如:内存管理、线程管理、网络控制、加载(升级)、资源管理等等。
这个层对performance影响较大,不但要算法好,还要编码过硬。
3. engine层
通常包括2个engine,一个是虚拟机(VM)engine,一个是渲染器(Rendering)engine,这两个engine直接是可以互动的,这样威力更为强大。
单纯的VM engine和Rendering engine有很多:
VM engine: java, javascript的engine 在网上到处都是,推荐阅读google 的javascript vm
Rendering engine: emsoft应该做了一个,并有一些分析文章点击打开链接。开源的有很多,google的skia 是比较有名的一个。
其他engine: 例如物理engine 等
4. 游戏框架层
现在很流行MVC框架,有不少便于游戏开发的框架被加入到游戏引擎当中。如果你的游戏类型跟框架类型相同,那么按照模板填写内容,确实能提高效率,但大多数时候,游戏团队都会修改框架或者采用自己习惯的框架。
做一个2D的游戏引擎,在当下不是一件太难的事情,但由于flash大包大揽,已经很少有团队再去折腾这类软件,直接用flash又快又省事。