前段时间调研了一下目前火热的cocos2dx,分享一些结果,给在考虑是否要使用的coder们一点参考。
- Cocos2d-x是什么
开源的移动2D游戏框架。用C++ OpenGL ES1.1/2.0 所写,支持iOS, Android, BlackBerry, Windows, Linux等(它对Windows Phone 7的一个另外的版本,XNA的,对Windows Phone 8的也是另外一个版本,但是官方说不久以后将和上面的合并起来)。还有一个使用js+HTML5写的版本,用于桌面的主要。
Cocos2d-x开发是2012年初,真正稳定下来也是最近几个月的版本上。
- 哪些人在用
解析了一些几个跨平台的流行游戏,如:
捕鱼达人 | cocos2d-x |
三国塔防蜀传 | cocos2d-x |
Cut the rope | wiengine |
Air Attack | Unity3D |
最出名的也就捕鱼达人了,但是不得不说其发展比较快,跨平台的特性太诱人了。
相比而言,国外研究Cocos2d-x的比较少,英文资料不多。Wiengine和Cocos2d-x类似,但是在中国,被研究的热度明显不如2dx。
如果仅Android平台,AndEngine和LGame的目前用的多于2dx,2dx的火热程度并没有到家喻户晓的地步,只是势头很好。半年前的帖子还可以看到有人在抱怨很多严重的问题,demo都跑不起来,不采用它。现在这样的文章基本找不到了,新的版本已经相对稳定很多.(官方的介绍说很多好游戏,我没全部下载,有点鱼龙混杂)。
http://www.cocos2d-x.org/projects/cocos2d-x/apps
- 游戏是否适用
2dx的库30万代码左右,编译模式可选,最终编入的包可控制到3M多。基本的游戏引擎要素均有具备,封装了box2d,扩展性难讲,但明显不如AndEngine等,轻量与重量完美结合。
但作为一个2D引擎,基本市面上绝大部分游戏的基本要求和可预见的一些扩展需求,包括动画、声音、视觉特效和物理世界的简单模拟。做起来也不难,毕竟这就是cocos2dx主要面向的方向---休闲类的2D游戏。
大型游戏是否适用还需要进一步调研。
关于性能,我没有做到能够体现到性能需求的地步,网上说法不一,但大部分说法是性能是可以接受的。有人说在粒子碰撞这种事上体验不好,应该对游戏引擎比较高的情况下,它不如其他成熟一点的引擎,毕竟还比较新。
- 优势与劣势
跨平台自不必说,最大的优势。另外中文资料多,开源。
个人认为这个引擎还不是特别完善,最新的版本都有一些问题,在开发的过程中总会有一种“怎么可能连这个特性都没有支持的”和“你这个怎么会这么写”的感觉。
写过Android, iOS, Windows Phone的应用,Cocos2d-x感觉还是”移植”,模仿oc居多,没有非常完整的跨平台的抽象。很多东西都是参考的ios的一套机制,包括命名等,能明显让人有ios风。另外就像内存问题,我还没特别明白它是要我做成那种模式,是偏向于C,纯自己管理,还是偏向于OC,计数管理?还有如delegate的模拟机制个人认为有待改进(但话说回来C++本来就不是干这事的料),为了能与OC里的引用机制保持一致,比如Action回调时,为了它不会被回收,一直要类似于retain的操作,写的时候有点小混乱。(如果C++ 11新标准里面的那个binding的新特性能用进来就好了)。
- 关于开发与移植
如果没有跨平台配置的经验,要搞定两个平台的编译、调试环境还是要花点时间的(参照我的上两篇 )。
语言是C++, lua。从上手难度上讲,C++是大家熟悉的语言,从0到HelloGame不难,可以参照各种入门资料。
另外,如果像我一样本身就没有专门开发过游戏,从最开始的Sprite一点点学还是需要一个过程的。个人也是游戏新手入门,熟悉了一点后,开发起来,感觉没有太多技术难点,也是一个摸索的过程。因为其本身还比较新,出来没多久,自己不是一个特别完善的东西,探索的过程中应该会遇到各种诡异的问题。难以保证比较快的进度。
转载请注明出处:http://www.cnblogs.com/Sorean/archive/2013/05/09/3068857.html