quick-cocos2d-x與cocos2d-x + lua 調研html
調研的目的是爲新的遊戲項目選擇的技術方向,本文將主要以介紹quick爲主,由於quick其實就是用cocos-lua,只是在上層框架有擴展而已,把擴展的部分直接去掉就是徹底的cocos-lua了。因此quik實際是伴隨cocos-lua發展的或者說在cocos-lua的基礎上發展的。因此咱們須要分析quick的框架的優點,性能,以及quick團隊對quick提供的各類三方工具和SDK,以及quick將來的發展。經過這些來決定咱們咱們是否選擇quick。java
觸控(cocos2d-x維護商)收購了quick團隊,同時quick團隊得到了cocos2d-x lua的維護權。即因此cocos2d-x的方案都由一家公司負責,因此不管咱們選擇哪一種方案在之後進行轉換應該工做和難度都不大,並且quick有意將quick和cocos-lua整合。可是對於對於觸控收購quick,網上也有另一種說法,即觸控有意阻止quick的使用羣體,將重心放在cocos-lua上。我的以爲後者可信度不高,就是之後沒有quick版本,新的版本也會會考慮對quick的兼容,以及從quick到新版本的過分,因此如今就開始擔憂的quick生命週期是沒有必要的。git
1.更完善的 Lua 支持,包括一個 Lua 框架對 C++ 接口進行了二次封裝。github
2.補充了大量 cocos2d-x 沒有提供,但遊戲須要的功能,包括數據加密編碼、網絡傳輸、設備功能、物理引擎等。網絡
3.爲提升開發效率,提供了 Objective-C 和 Java 的橋接模塊,以及強化的 Windows/Mac 模擬器(player)架構
具體的細節在quick下文quick的前世此生中有詳細說明。app
Quick的擴展使得使用開發遊戲更快,框架更清晰,調試更方便。若是就這些方面和cocos-lua比較,作爲一個開發者會堅決果斷的選擇quick進行開發,可是就由於quick幫我作了不少繁瑣的事情,而且不少功能的擴展,好是好,可是其穩定性,效率也就是咱們相對不可以控制的了。好比架構自己出了問題,或者較高設計部好效率低等狀況,因此我若是可以保證quick的穩定性和效率,那麼我認爲quick是咱們應該選擇的技術方向, 就穩定性和效率而言,咱們沒法正確的判斷,只有經過產品的驗證,在遊戲中有沒有使用quick開發的,而且相應較好的,答案是有的,唐門世界這款千萬級手遊就是用quick作的,因此這個遊戲也解決咱們在性能和穩定性方面的顧慮,同時quick也是開源的,對於咱們來講也有必定把控能力。框架
Quick也提供了比較完善的開發穩定,和不少遊戲框架的deamon,異步
Quick 在2013前討論的人聊聊無極,可是到了2013低時已作出了驕人的成績,至今quickv3版本已經發布。使用quick的開發遊戲的公司愈來愈多,瞭解quick咱們從廖宇雷口中的quick開始。編輯器
初窺 quick-cocos2d-x
http://quick.cocos.org/?p=1#more-1
爲何會有 quick
開發 quick 的最初緣由:爲使用lua的開發商提供解決方案,下降學習曲線,提升易用性,建立一個精簡、但更容易擴展的架構
quick和 cocos2d-x 的差異
lua接口封裝更完善,同時quick 在 cocos2d-x 基礎上添加了更多遊戲必須的功能,例如完善的 HTTP 和 Socket 網絡功能、數據加密解密、設備功能訪問等等。將來集成付費充值、統計、社會化分享、好友鏈等各類第三方 SDK。 quick 的附屬項目會提供大量現成的 SDK 封裝,進一步提升開發效率,讓開發商把主要的資源花在遊戲玩法上。
cocos2d-x 自帶的 Windows 和 Mac 模擬器功能太簡單。quick 特別開發了功能完備的模擬器,讓整個遊戲在開發階段的大部分時間裏都不須要藉助真機就能夠進行。
quick 裏還包含了物理引擎 Chipmunk 2D 的 Lua 封裝(相信我,你不可能找到比這個更容易使用的物理引擎接口)、骨骼動畫播放(支持 DragonBones、CocoStudio)、高性能的 LuaJIT 虛擬機等等。
總結:
1.更完善的 Lua 支持,包括一個 Lua 框架對 C++ 接口進行了二次封裝
2補充了大量 cocos2d-x 沒有提供,但遊戲須要的功能
3.爲提升開發效率,提供了 Objective-C 和 Java 的橋接模塊,以及強化的 Windows/Mac 模擬器(player)
quick由哪些部分組成
quick 由幾個主要部分組成:
1.cocos2d-x:目前基於 cocos2d-x 2.1.4 版本
2.tolua++:用於將 C++ 接口導出給 Lua 腳本使用
3.LuaJIT:最快的 Lua 虛擬機
4.cocos2d-x-extra:擴展功能,包括數據加密編碼、網絡傳輸、設備功能訪問等
5.Chipmunk 2D:物理引擎,以及相應的 cocos2d-x 和 Lua 封裝接口
6.CSArmature:一個骨骼動畫播放庫,支持 DragonBones 和 CocoStudio 建立的骨骼動畫
除此以外,還包含一些 Lua 的擴展:
1.lua_extensions:一些必備的 Lua 模塊,包括 JSON、ZLib、LuaFileSystem、LuaSocket 等
2.LuaJavaBridge:簡單的 Lua – Java 交互接口,簡化 SDK 集成
3.LuaObjectiveCBridge:簡單的 Lua – Objective-C 交互接口
導出本身的 C++ 對象到 Lua
有時候須要編寫一些 C++ 對象,而後導出給 Lua 使用。這裏能夠參考 lib/cocos2dx_extra/extra/luabinding 裏的 *.tolua 文件,將 C/C++ 頭文件轉爲 tolua++ 須要的文件,而後藉助 quick 中附帶的腳本編譯成 luabinding 接口。
集成第三方 SDK
quick 有一個附屬倉庫 quick-cocos2d-x-plugins,其中包含了一些 SDK 的接口文件。參考 sample/luajavabridge 示例和這些接口文件,很容易就能完成 SDK 的集成。
後續 quick 也會提供更多的 SDK 接口,以及相應的示例代碼。
quick和 cocos2d-x 到底有多大的區別?
區別分爲幾個層面:
1. 底層 C++ 代碼:quick 是創建在 cocos2d-x 基礎上的開源項目,對 cocos2d-x 的功能幾乎沒有作裁剪(除了用一些更好的 Lua 擴展組件代替 cocos2d-x 內置的),主要修改都是新增功能。cocos2d-x 的 C++/Lua 項目拿到 quick 裏是徹底能夠跑的。
2. 擴展的功能:針對開發商的實際需求,quick裏提供了加密解密、網絡請求、IAP、第三方 SDK 集成、物理引擎封裝等一系列擴展。這些擴展都是獨立的代碼,並不侵入 cocos2d-x 的底層代碼。
3. 對 cocos2d-x 的改進:主要包括 Lua 支持的改善,以及觸摸事件機制的改進。前者是爲了遊戲運行更穩定,後者則簡化了 UI 的開發。
4. 一個 Lua 框架:quick 包含的 Lua 框架,絕大部分功能均可以直接跑在 cocos2d-x 上(實際上有開發商這樣作)。這個框架的價值在於將 C++ 風格的 API 轉爲了 Lua 風格,讓開發者能夠用更精簡的代碼實現更多的功能。而且框架定義的規範、接口,讓開發者能夠建立更容易維護的程序代碼。
因此 quick 和 cocos2d-x 就像美女穿衣服和不穿衣服的區別。
quick將來的路線圖是什麼?
quick 的架構會繼續保持:cocos2d-x 最小修改 + 擴展 + Lua 框架 的形式。這樣對 cocos2d-x 的修改最小化。同時,咱們會努力將 quick 中對cocos2d-x 的改進推送到 cocos2d-x官方倉庫。但願有朝一日可以實現官方版 cocos2d-x + quick 擴展 的架構。
而具體到功能上,quick 在 2013 年將實現下列目標:
1. 一個功能全面的 UI 庫:亮點是自動佈局管理和可擴展的 UI 控件。由於整個體系都是 Lua 實現,因此能夠充分利用動態語言的優點。
2. 一個 UI 編輯器和場景編輯器:對於這個編輯器,我推薦你們看個小電影http://v.youku.com/v_show/id_XNjA1MzI5NTky.html
3. 一個 MVC 庫:包含基本功能的 MVC 架構,提供清晰的 API 和代碼組織結構,而且能夠很容易的擴展。
4. 全面的網絡解決方案:異步 HTTP、HTTP 隊列、Socket 接口和 WebSocket 接口。
5. 在線更新:在線更新遊戲的腳本和資源,繞開蛋疼的 App Store 審覈。
6. 第三方 SDK 接口標準化:目前已經支持 App Store IAP, Umeng, Flurry, 91, DianJin, Domob, YouMi 等 SDK 的接口。而今年咱們將把這些 SDK 的接口標準化,實現相似 cocos2d-x plugin-x 的架構。但由於是動態語言,因此在靈活性上會有顯著優點。同時咱們也會陸續添加其餘 SDK 的接口。
7. 專職團隊:隨着使用者的增長,咱們也會嘗試提供一些商業服務,這樣 quick 將會擁有一個專職團隊。將來的發展更快更好。
將來,quick 將按照平均每個月一個版本的速度發佈。而即將到來的國慶版,將實現 UI 庫的基本架構和佈局管理,以及在線更新功能。
Quick概述
Quick框架的特色就是有一些很容易使用的API,另外提供一系列提升開發效率的工具。好比加強版桌面的模擬器。Cocos2dx最初的桌面模擬器是比較簡單的,咱們後來增長了動態分辨率切換,還有項目管理這些功能。
此外,Quick還有大概20多個實例,好比動畫、物理引擎、MVC等等。Quick也和Lua徹底兼容,cocos2dx和Quick的API是徹底能夠同時訪問的。Quick作出來的遊戲也有一些千萬級的產品。
這張圖右邊是最基本的API的用法,左邊是Quick一樣功能的用法,代碼量有明顯區別。而Player是Quick加強版的桌面模擬器,如今已經變成了一個管理器,還能夠對項目進行打包,項目在打包的時候還能夠用一些參數肯定,好比Lua是否加密,資源是否加密。
Player開發平臺
Player自己,就是強化版的桌面模擬器,自己已經變成一個開發平臺,會提供一個SDK,能夠用這個開發平臺作什麼事情呢?好比須要寫一個內部的開發工具,開發工具裏能夠調用全部的功能。能夠用Player作本身的開發工具也是很快的。
Quick將來的發展
1.作一個包管理器
一個項目會有不少的插件,有多是C++,有多是腳本的,好比要網絡的,要物理的,或者是支持遊戲搖桿。如今的集成方式是全手工的,下載源代碼而後改工程文件,而後作C++的綁定還有Lua的導入,最後再編譯出來。咱們作了包管理器之後能夠提供一個插件倉庫,插件倉庫會包含一些經常使用的插件,包管理器下載你搜索的插件,安裝的時候就能夠自動更新項目文件,確保編譯成功,把整個過程自對化。
2.對Quick作模塊化
Quick在2015年會作一個很重要的東西,就是把你們Lua開發的遊戲轉換成Lua to HTML5,由於如今Cocos2dx-js和Cocos2dx-lua的API已經統一了,因此作這個工具的時機已經成熟了。
現場提問:
提問:我如今在用Quick,C++部分不能作斷點,在外面框架有斷點。
廖宇雷:最新版本配合Code IDE/Xcode/VS能夠作斷點。
提問:Quick效果跟C++可以差多少?
廖宇雷:由於底層渲染仍是Cocos2d-x,因此渲染上不會有區別。只是當遊戲裏作大量計算時,能夠把這些計算任務用C來寫,而後導出給Lua使用。
cocos2d-lua與 quick 的將來
http://quick.cocos.org/?p=1703
quick 裏的框架則會被拆分爲核心框架和一堆插件,讓開發者根據需求自行組合,既能節約內存又提高了靈活性。搭配全新的插件管理器,開發者將得到史無前例的開發體驗。而開發者也能夠將本身的插件提交到插件倉庫,與社區分享本身的成果。
穩定可靠
咱們深知當前的 quick/cocos2d-lua 還有許多不足之處,特別是在 API 穩定性和總體的可靠性上具備巨大的提高空間。
將來,咱們將從如下幾個方面改善cocos2d-lua 的穩定性和可靠性:
下降內存消耗
更完善的錯誤反饋信息:
更完善的參數檢查
更完善的崩潰保護
profiling 接口
memory leaks inspect 接口
以 Lua 風格展示 cocos2d-x 的用法
增長更接近實際項目用法的綜合性測試
盡力提升測試覆蓋率
全面的性能測試
高效開發
如何讓開發者更快的開發產品,是咱們另外一個核心目標:
提供更完善的 API 文檔
提供更多用法示例
簡化 C/C++ 模塊的導出操做
profiling 工具
memory leaks inspect 工具
高級遊戲框架
用插件管理器在 app 內添加插件
腳本的加密、混淆
模塊化編譯,按需定製引擎
quick 裏的框架則會被拆分爲核心框架和一堆插件,讓開發者根據需求自行組合,既能節約內存又提高了靈活性。搭配全新的插件管理器,開發者將得到史無前例的開發體驗。而開發者也能夠將本身的插件提交到插件倉庫,與社區分享本身的成果。
關於 quick
如今的 quick 用戶可能會擔憂咱們將重心轉移到 cocos2d-lua 後,再也不維護 quick。其實這是一種誤解。
首先,quick 只是一個運行在 cocos2d-lua 之上的遊戲框架和一些擴展的集合。並且這些內容都將轉爲插件,讓開發者能夠經過插件管理器來安裝。其次,quick 裏全部對 luabinding 的改進,在 3.3 版本里都已經合併進入了 cocos2d-lua。
因此,cocos2d-lua 會變得更好,quick 也會繼續發展。