使用cocos2D遊戲引擎開發遊戲的話,是選擇使用cocos2D-x使用C++來編寫,還是使用cocos2D-html5來編程,原因是什麼?


謝邀。

最近剛好 cocos2d-x (下面簡稱cx) 和 cocos2d-html5(下面簡稱ch) 都接觸了並用在了實際項目開發當中。由於對 cocos2d-html5 和 js 的認識都比較粗淺,所以下面說的一些權當感想或總結。

實際上在我這個項目中, ch 和 cx 我都使用了。
ch 主要用作 prototype 和 遊戲核心開發
cx 用作最終版本發布

下面結合兩者的優缺點說明一下為什麼作這樣的組合:
ch 的優點:
1)快捷。ch 使用 js 開發,js 語言自由和靈活的特性,可以讓開發者專註在核心規則和演算法的實現上面,可以加快開發的進度;
2)方便迭代測試。ch 產出是 web 版本,更新迭代十分方便,很適合小規模測試;(在我進行開發的期間,基本上是每天一小迭代,一周一個穩定版本)
3)方便修改和調整。使用 js 進行修改和調整很方便。
4)對於網路的使用更為方便。由於 ch 本身就基於 web 的,因此使用伺服器介面,網路服務很方便。


ch 的缺點:
1)debug 不方便。由於 js 過於靈活,所以可能會出現比較隱晦的 bug,加上 IDE 相對而言比較不成熟,所以開發過程中 debug 難度會增加。
2)隱藏 bug。 由於 js 容錯性比較強,因此可能會出現原本錯誤的代碼反而運行出正確結果的現象。這個一般而言後期移植都比較容易發現和解決,只是會稍微增加移植難度而已。
3)ch 本身不夠成熟。ch 本身也正在迭代中,雖然當前版本已經比較穩定,但是也有隱藏 bug 的可能性。此外, ch 中元素的表現也未必能跟 cx 中100%相同。
4)性能,瀏覽器支持問題。在實際使用過程中,發現 ch 在不同瀏覽器中運行的效率並非一致。各大瀏覽器對於 ch 中粒子系統和幀動畫的支持和性能都有差異,造成同一份代碼在不同瀏覽器中表現效果不一致。

cx 的優點:
1)版本比較成熟和穩定。cx 迭代到現在也有好幾年時間了,實際應用案例也很多,是一個比較可靠的庫。插件也比較多。
2)性能比較高。(ch 使用 jsbind 也能獲得較高性能,但我對於這塊並不熟悉,而且這塊資料也不多,因此不作比較。)
3)debug 更方便。IDE 的成熟,對 debug 很有幫助,此外市面上對於 cx 的實際應用很多,因此網上搜索解決方案資料比較多。

cx 的缺點:
1)C++ 語言本身比較不好掌握,而且語言本身比較拖沓,結構老舊。(純屬個人吐槽)
2)無法運行在 web 上面。硬傷,不說。
3)發布測試比較麻煩,更新迭代不方便。(比如說要發給遠方的好友測試,每一個版本得發一次重裝一次)

以上是對於 ch 和 cx 在使用過程中的總結,下面簡單說一下我在上面提到的做法(即:ch 寫 prototype,cx 寫最終版本的做法)的優缺點:
優點是這樣開發比較快,快速地出版本,能有效地減少風險,團隊的人看到確實的產出,也會比較安心;能夠在最快的時間內調整可玩性;順帶出了一個 web 版本:)
缺點是代碼得移植一遍(個人移植用了3天,其實就是把代碼重新敲了一遍,體力活...,另 debug 用了 2 天,一共5天)。


1. cocos2d-x成功遊戲,刀塔傳奇,我叫MT,三國來了,雷霆戰機,全民飛機大戰,全民水滸,神魔,龍之力量,神仙道,君王2,忘仙…… 唉,我不寫了,太多了
2. cocos2d-js成功遊戲,Big Fish Casino( AppStore US top5),完美的《東邪西毒》,心動的《仙俠道》。

如果讓我個人現在給個建議,我會傾向於推薦c++和lua方案。js方案有四個硬傷
1. SpiderMonkey這個庫體積太大了
2. js性能始終還是追不上lua
3. 雖然微軟工程師很努力,但是SpiderMonkey至今(2014-07-16)還是無法運行在wp8上。也就是說你用js寫的 cocos2d-x遊戲無法運行在wp8上,但lua遊戲可以。
4. 最重要的:html5市場並沒有如願地起色

如果沒有html5市場,那麼jsb也就有點多餘了。2014年我們的重點也轉向市場廣泛認可並且證明過的lua了,其次是jsb,再次是html5。

我描述的都是客觀事實,希望對樓主有幫助。


我感覺還是看自己對編程語言的熟悉,你以前做C的,當然用C++ (開發工具visual studio ),以前對javascript熟悉當然選擇你熟悉的(開發工具 cocos2d-x editor)。為什麼天天比較編程語言的優劣?有一點必須知道:如果一門編程語言太次了,早晚淘汰


ch用 webstore開發,用 chrome調試
ch發布到手機用jsb打包成hybrid


區分很簡單:
2dx非常成熟了,適用於商業遊戲,功能完善。
2dh5還在實驗探索階段,你看到的所有的一切都是demo,還有很多很多坑要填。而關鍵問題是2dh5本身存在各種問題,使用H5做遊戲的不少朋友現在都並不太看好它。

也就是說,2dh5肯定還要經歷2dx成長的那個過程,無論是由於本身原因還是環境不成熟的問題。如果各位真有興趣了解HTML5做遊戲的相關信息的話,這個微博上有很多內容:
Sina Visitor System


個人見解:jsb如果走jsb方式打包成native app的話,做一些中小型遊戲還是可以的,性能也ok,跑在瀏覽器下的話另說,因為這個已經不是引擎能解決的問題了,要瀏覽器去解決。不過jsb方式要調用原生app代碼的門檻相對較高,尤其對純前端的程序員來說,這個是cocos2d-html5團隊需要加強的地方!


拋開性能,我首先cocos2d-html5(還跨平台),不過國內目前主流都採用 cocos2d-x綁lua的方式來解決更新的問題,當然你綁js也一樣


Cocos2d-HTML5還真是又好玩又方便啊,小夥伴你們知道嗎(圖多)


如果是手游的話,ch是不合適的,主要是性能問題.我們是自己寫整套方案.

但如果你是做pc端的那麼完全可以試試.

至於cx,我正在學習中...


我看看


ch怎麼在瀏覽器運行?


推薦閱讀:

shell好難學,能用python替代shell嗎?
學習 C++ linux 開發服務端,有哪些書籍和建議?
計算機學生想通過造輪子學習伺服器端編程開發請教?
如何評價可以自動更換 User-Agent 的爬蟲設計?
谷歌爬蟲主要是用C++開發嗎?

TAG:遊戲引擎 | HTML5 | C | 手機遊戲開發 | Cocos2d-x |