游戏引擎技术杂文 #1

免责声明


本文基于本人对于游戏引擎的一些拙劣的观察与实践,具有不专业性,请不要将其当做真理或圣经。

比起直接使用C/C++等语言直接用IDE工程从零开发一款游戏,省事的游戏引擎已是越来越受开发者欢迎,如Unity、虚幻等知名游戏引擎。
这类引擎一般都是直接使用他们自己的编辑器来进行开发,把所有的功能集成在一起,靠调各种参数来实现功能。但还有另一类游戏引擎则是做成SDK的形式,直接套用在IDE工程上使用,如Cocos2D等。
比起直接全家桶式的开发,我个人更加倾向SDK开发,这种形式对写代码出身的人有种天然的亲和性,全家桶式开发反而会被复杂的参数搞的晕头转向。

引擎要有什么

我们自上而下分析这个问题。
我们一开始打开一个游戏,最先接触的就是一个窗口,所以引擎应该有一个管理窗口的系统,然后就是加载界面,在这种状态下,就涉及到了资源管理图像渲染,然后就是一些BGM和音效,就得有一个音频系统,如果是有联机功能的游戏,还需要网络系统,你在用鼠标键盘操作的时候,还会涉及到控制系统,至于不同场景间切换、游戏AI、游戏逻辑什么的,应该有一个总控系统来统领全局。
所以,引擎大概由这么几部分组成:

  • 图像系统:图像绘制、转换、处理等
  • 音频系统:音频播放、录制、处理等
  • 资源系统:各种文件资源的管理与控制
  • 网络系统:网络连接控制
  • 控制系统:各种输入设备控制、消息处理
  • 总控系统:场景控制

如果根据游戏特性再展开细分的话,还可以得到这样的细分结构:

窗口系统:管理窗口句柄、窗口控制
渲染系统:渲染管线管理与控制
音频控制系统:管理音频设备句柄、设备控制
音频录制系统:录制音频
音频播放系统:通道控制、音频参数控制、后处理
资源IO系统:管理资源读入与释放
服务端系统:管理网络服务端
客户端系统:与远程服务端进行连接和数据交换
输入设备管理系统:管理各种输入设备
消息钩子系统:处理窗口、输入消息
场景管理系统:管理游戏场景
状态系统:状态机管理

看起来可有点复杂呢。。。。

标签: 技术, 游戏引擎

文档最后编辑于05月13日

评论

让我也说点啥