文章出处:
http://blog.csdn.net/xjyhust by Render Hacker ,E-mail: xjyhust@gmail.com
小弟在大约一年以前开始写了一个简单的游戏引擎的框架,开始的时候经验不足,仿照zfx和ogre写,东拼西凑的搞了万余行,写完以后不满意,故理清思路,从新开始。
在刚开始尝试写引擎的时候,有很多的困难,好在有很多的朋友,包括csdn和gameres上的网友,都给我了一些宝贵的意见;以前,一直追求华丽的特效,希望写出来的引擎,能够体现业界最新的发展;但是后来才明白,游戏引擎中,最重要的不是特效,而是最基本的算法,管理等等。
所以,以前的代码,虽然我还是上传到了gameres上,估计粗略看过的朋友都很少,多半是瞥了几眼,然后就delete了。的确,那个代码没有太多的价值,也没有太多的学习价值。所以,我觉得,就算是水平比我还菜的初学者,若是想了解游戏引擎,或是更有想尝试开发游戏引擎的话,最好还是以正规的优秀开源引擎为学习材料。这里,我谈一下我的建议和感受:
有这样几个引擎是比较好的:
Ogre,如果对于c++,stl有一定的基础,最好还有一点oo及设计模式的概念,可以学习ogre。这是我平时查阅最多的代码之一,其代码可读性非常好,模块也分得比较细。缺点就是有点滥用设计模式和oo,以至很多不必要的代码,(不必要的接口,不必要的中间类),可能会给初学者带来麻烦,而且,会给初学者带来误会,过度追求游戏引擎的华丽的框架。但是整体来说,这是最好的学习引擎的代码。
Nebula Device 2,商业品质的代码,风格很统一,注释也十分详尽,很少有多余的代码,也是很好的引擎,个人认为渲染方面可能要强与Ogre(但是Ogre更新非常频繁,以后的情况可能会不一样),但是引擎使用起来没有ogre方便。但是,不妨碍我们学习其中的技术。
IrrLicht,不错的引擎,而且,在0.XX版的时候,就已经非常受欢迎,现在已经1.XX了,8)。没有仔细看过,很多人也推荐这个,应该不错(只是其中很多没有必要的com,个人觉得)。
接下来几个,可能不太适合学习,可能比较适合学习其中的部分模块。
Quake3,是游戏引擎中的极端,用纯c写的,比较难以分清模块,比较可以看一下的是关于bsp的部分,网上很多研究quake3中bsp算法的文章,可以帮助你阅读这部分的代码。其他的部分,就没有太多的价值了,除非你是一个hard-core c programmer,坚决不用c++来开发,;)。
Half life2,泄漏的代码,被多少人当成宝贝抢着研究。其实,其代码质量真的是很差,命名不统一,风格不统一,代码严重重复,绝对是没有严格管理的结果!也许是我的水平问题,其中可以学到的东西比较少,可能有用一点的是,可以弄清楚里面的游戏资源的格式(比如hdl 2.0,纹理格式),至于其中的bsp,和quake3中的大同小异(有些代码都是直接拷贝的)。很难想象这样的代码最后可以很好的结合在一起。。。
Torque,我现在手上唯一的商业引擎的代码,不过有点旧。没怎么仔细看,也是风格非常奇怪的代码(可能是考虑移植性问题,很多地方本来是要用class的,却用struct代替)。其中的地形,脚本,shader部分,应该优化得比较好;场景管理的部分,也还不错。(ps,在电驴上有下载,请在下载后24小时内,自觉从硬盘删除,并且在看后24小时内,自觉遗忘 :) )