前段時間調研了一下目前火熱的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
轉載于:https://www.cnblogs.com/Sorean/archive/2013/05/09/3068857.html