疯狂猎鸟项目小结 -- 技术篇(主要是cocos2d-x相关)
上次写了篇关于自己浅薄的管理经验的博客,被一些筒子们批评了,这次还是写篇技术贴吧,这样就不会有人说了,因为......那些人看不懂。该文早就和肖寒泉说了要写,但是因为写完后感觉好话不多,技术不多,就一直没有发布,现在我们又要开新项目了,而且不使用cocos2d-x了,那就发布了吧。
先说游戏引擎,疯狂猎鸟用的游戏引擎是cocos2d-x。
在一年多前(大概有这么久吧)就搜遍互联网,去寻找一个能跨win32,iphone平台的开源引擎,以方便进行iphone游戏的开发,只有很少的几个选项,甚至尝试过irrlicht不成熟的opengl es版,最后也尝试了orx,其实都不算特别理想,那个时候cocos2d-x刚刚出来没有多久,第一个支持的手机种类是沃phone,而iphone版本的demo都跑不顺畅,所以没敢使用。那个那时真的是有心自己写一个,无奈能力有限,但是很认可cocos2d-x的方向。
一年以后,当我开始再次为团队选择游戏引擎的时候,又一次的看了一下cocos2d-x,在查看了一下已经与cocos2d无异的demo后,说实话,相当长信心啊,我觉得自己能用到的特性也不会超过cocos2d-x的demo多少,那这样说的话,cocos2d-x就能用了,即使还有bug或者有什么平台相关的问题,因为cocos2d-x是开源引擎,那也不用怕,这也算是开源引擎的一个竞争优势,那就是不用100%成熟就能让人有信心使用。
初步研究后,作为传统的C++开发者(请允许我这样称呼自己),会有些受不了在C++中模拟objc的那种内存管理方式和类的初始化方式。看了cocos2d-x官网上的《Cocos2dxSimpleGame & Tutorials for beginners》后,就能很直接的感受到,cocos2d-x就是为移植而生的,所以文中一再的强调从cocos2d(objc)到cocos2d-x(C++) 几乎句句对译的优势,其实这个优势在真正用C++做原生开发的时候,就比较悲剧,因为这样的使用方式,根本就不是C++ style,你会感觉到内存不是完全在自己的控制之下。再进一步的看到cocos2d-x用C++实现的CCObject,CCAutoreleasePool,用于模拟objc的内存管理方式时,我觉得很悲催,cocos2d-x的作者们太辛苦了....然而,这还不算什么, CCArray,CCSet等objc容器和CCImage出现的时候,我近乎老泪纵横了,这是准备用C++实现一个objc吗?还带cocoa的......这可是GNU组织都没有实现的目标啊......开源社区的强大,让我感叹不已。
Posted By 九天雁翎 at 九天雁翎的博客 on 2012年04月22日