Cocos2D家族的前世今生

openkk 12年前發布 | 19K 次閱讀 Cocos2d

        Cocos2D,這款用于開發 2D 游戲的開發框架以及由其衍生的 Cocos2D-X跨平臺開發框架和眾多分支,正在幫助越來越多的開發者實現高效穩定的游戲開發。《程序員》近日專訪了 Cocos2D-iPhone作者 Ricardo Quesada,請他分享 Cocos2D 家族的發展歷程與未來方向。

        1973年,Ricardo Quesada 出生于阿根廷。

        在 Ricardo 12歲時,他母親為他購買了第一臺電腦,一臺 Commodore 64。

        剛開始,與其他孩子一樣,Ricardo 將自己的精力放在電子游戲上,但在幾個月后,他購買了編程方面的書籍,開始學習用 BASIC 語言編寫一些簡單的游戲。兩年后,Ricardo 開始學習匯編語言。

        在 Commodore 64上,Ricardo 制作了很多游戲并貢獻了一個游戲編輯器,而這臺 Commodore 64也陪伴了他長達 6 年之久。此后,Ricardo 選擇了 iAPX 286作為他的新伙伴。在他學習了C語言后的幾個月,Ricardo 在 DOS 系統下編寫了一些游戲 Demo 和一個游戲編輯器。

        當然,他并不滿足于此,隨后 Ricardo 又開始涉足 Linux 系統,并將編輯器移植到 Linux 系統上,將匯編語言改成了C語言。Ricardo 將 Linux 作為主要的操作系統用了很多年,并不斷地為開源社區貢獻代碼。此后他與一些志同道合的朋友一起學習了 C++ 以及 Python 語言,并參加了一些開發大賽。在大學期間,Ricardo 選擇了鐘愛的計算機科學專業,并不斷涉獵計算機安全、算法、游戲架構、OpenGL 等大量書籍。

        Cocos2D 的誕生

        2005年,Ricardo 和朋友萌生了用 Python 語言 “一星期編寫一個游戲”的想法。在 2005~2007年間,他們設計了許多種這樣的游戲。值得注意的是,每次在設計一個新的游戲時,其游戲引擎都是重新開發的。

        2008年 2 月,他們在阿根廷Córdoba 市附近的 Los Cocos,決定基于以前的開發經驗,把技術進行整合,并組建了游戲引擎的原始開發團隊。一個月后,第一版的游戲引擎誕生了,根據其誕生地取名為 Los Cocos。一個月后 Los Cocos 引擎發布了0.1版,其名稱從 Los Cocos 更名為 Cocos2D。

        團隊將研究成果在 PyCon 2008和 EuroPython 2008上都做了展示,2008年正值喬布斯公布發展 iPhone 游戲的想法,因此他們決定抓住商機,在 2008 年 6 月宣布跟 iPhone 平臺進行接軌,并在當月就公布了用 Objective-C編寫的 Cocos2D for iPhone 0.1版,它與 Python 版的 Cocos2D 擁有相同的設計思路。截止到 2008 年 12 月,App Store 上已有超過 40 個用 Cocos2D 引擎開發的游戲。

        2009年,團隊設計了 Cocos2D 的世界編輯器 Cocos2D-Python,這款所見即所得的編輯器使用起來十分方便。此時,Cocos2D 的各種平臺、各種編程語言移植版也開始涌現。

        ShinyCocos(Ruby bindings)、Cocos2D-Android(Java based)、 cocosNet(Mono based)都誕生了。同時,英國的設計大師 Michael Heald 為 Cocos2D 設計了新的 LOGO,如圖 1 所示(此前 Cocos2D 的 LOGO 是一個奔跑的椰子)。

Cocos2D家族的前世今生

圖 1 Michael Heald 設計的 Cocos2D 家族 LOGO

        同時 Cocos2D 社區的開發者作出了最早的周邊工具—Zwoptex 和 Particle Designer。Particle Designer 的功能非常強大,開發者曾需要耗費 2 個小時制作的效果,在使用 Particle Designer 后只需 10 分鐘便能完成。隨后《StickWars》成為第一款在美國區付費榜奪得冠軍的 Cocos2D 游戲,這宣告了 Cocos2D 的時代已經到來。

        2010年,團隊又做出了一個重大的舉措:把 Cocos2D-iPhone 接入到 Mac。此舉的主要目的是方便世界編輯器的開發,把 Cocos2D 游戲編譯到 MAC 上只是一個附帶的工作,他們原本的想法是創建一個類似于 2009 年在 PyCamp 設計的 Cocos2D 世界編輯器。

        Cocos2D-X開啟跨平臺開發時代

        隨后,具有歷史意義的 Cocos2D-X誕生了。X代表著 Cross,即交叉。因為 Cocos2D-X為開發者提供了跨平臺支持,通過 C++ 語言把游戲邏輯一次編寫即可編譯到 iOS、Android 以及更多手機平臺上運行。同一時期新西蘭人 Ryan Williams 移植了基于 HTML5 Canvas 的 Cocos2D-JavaScript,社區也出現了 Texture Packer、Glyph Designer 等豐富的工具和編輯器,以及大量的書籍教程、示例代碼、視頻培訓等供開發者學習和使用。

Cocos2D家族的前世今生

圖 2 Cocos2D 大家族

        2011年,Cocos2D 家族有了新的發展,集成式的編輯器開始涌現,包括 CocoShop、CocosBuilder、Sprite Helper/Level Helper 等。另外出現一種利用 GCC 對 Objective-C語言支持來實現 Cocos2D-iPhone 游戲跨平臺編譯運行的方式,這種方式需要替換掉 Android NDK 上默認的 GCC 編譯器。

        而在 2011 年 5 月,Cocos2D 社區發生了一件大事,Zynga 雇傭了 Cocos2D-iPhone 的兩位關鍵作者 Ricardo Quesada 和 Rolando Abarca,兩位超級程序員分別從阿根廷和智利遷移到 Zynga 的舊金山總部工作。

        2012年初 Cocos2D-X團隊再開出兩個分支,一個分支是為微軟 Windows Phone 7移植的 Cocos2D-XNA,采用C#語言;另一個分支是得到 Google 贊助的 Cocos2D-HTML5,目前 Cocos2D-HTML5還處于早期的開發階段。

        今天的各平臺應用商店里,已擁有大量的 Cocos2D 應用,主要涉及游戲、交互型的電子書、圖片等類型。根據官方數據保守估計,目前 Cocos2D 的總應用量在 3500 個以上,實際數字應該遠遠不止。

        目前,Cocos2D 也擁有了更加穩定的引擎,包括 Cocos2D-iPhone、Cocos2D-X,以及被社區普遍看好的 Cocos2D-HTML5和 JavaScript bindings for Cocos2D-X。同時也擁有了非常優秀的編輯器(獨立編輯器),例如 SpriteSheet Editors、Particle Editors 、Font Editors 、 Tilemap Editors。同時 CocosBuilder 的集成編輯器也處于開發階段,這款編輯器目前已能夠同時支持 Cocos2D-iPhone 和 Cocos2D-X,而 JavaScript 的支持也即將進入實用性階段。

        2012年 3 月,CocosBuilder 的作者 Viktor Lidholt 亦被 Zynga 從瑞典收編到舊金山總部工作,該軟件已經由閉源商業產品改為開源,并將成為 Cocos2D 社區的官方編輯器。

        追求更高效、穩定的開發

        雖然現在 Cocos2D 已有較穩定、便捷的跨平臺引擎以及相關的一整套工具,但 Ricardo 坦言,目前這些引擎還并不完美。他們通過與很多游戲開發者,包括 Cocos2D 社區的參與者以及游戲開發商溝通,總結出了大家目前的主要需求。

  • 游戲開發周期更短更快。

        一方面,開發者希望能擁有更好的編輯器,使開發更加便捷,生成數據的速度更快(比編碼更快,因為與編碼相比,數據很容易跨平臺);另一方 面,Ricardo 希望能夠為大家提供腳本化的編程語言,例如 JavaScript。即使游戲在遇到性能瓶頸時,開發者能夠用 Objetive-C/C++等原生語言進行開發和優化,然后再綁定出 JavaScript 接口給性能不敏感的邏輯部分。在多數情況下,直接用 JavaScript 開發 Cocos2D 游戲能大幅縮短開發周期。

  •  游戲質量更好。

        游戲不會崩潰、沒有漏洞以及更加流暢。Ricardo 表示,他們會致力于為大家提供更好的編輯器,目標也是做到“less code and less bug”,因為編碼更少就意味著 Bug 更少。

  •  需要原型設計工具。

        Ricardo 認為利用腳本語言支持+世界編輯器可以讓開發者更加迅速地測試自己的想法,如果他們覺得這個想法不好,可以很快地舍棄,同時可以更快地推進他們認為更好的想法。

        對于 Cocos2D 的發展,整個團隊也有清晰的規劃,2012年的主要計劃分以下兩塊。

        第一塊是目前他們正在研究的,把 JavaScript 與現有的 Cocos2D-X和 Cocos2D-iPhone 綁定。他們的目標是對于 Cocos2D-X、Cocos2D-iPhone、Cocos2D-HTML5都有同樣的 JavaScript API。

Cocos2D家族的前世今生

圖 3 不同引擎有同樣的 JavaScript API

        如圖 3 所示,上層用的是一致的 JavaScript API,對于不同平臺只需用不同的引擎來實現,對于游戲開發者,在同樣的 API 之上用 JavaScript 寫完游戲邏輯,就可以在 iOS、Android 以及各種瀏覽器里面運行,而不必關心底下的 Cocos2D 引擎具體是如何實現的。

        2012年計劃的另一塊就是 CocosBuilder 編輯器,他們打算將其做成“所見即所得的編輯器”,可以同時支持 Cocos2D-X、Cocos2D-iPhone 以及 Cocos2D-HTML5。

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!