Cocos2d-x核心優勢在于允許開發人員利用C++、Lua及Javascript來進行跨平臺部署,覆蓋平臺包括iOS、Android、Windows Phone等等,省事省力省成本。
近日, Cocos引擎完成重大更新:正式推出Cocos2d-x v3.13版本。在新版本里,AudioEngine性能最高提升4倍、支持ETC1 alpha通道、集成AnySDK、增加VR插件、優化Canvas臟矩形算法等等。該版本進一步完善并整合了歷史零碎功能,為開發者創造更為簡單、快捷的開發環境。
AudioEngine性能最高提升4倍
Android平臺下,AudioEngine使用OpenSL ES播放聲音。從Android 4.2開始,OpenSL ES支持解碼聲音文件為PCM數據,引擎正是利用這個以特性來緩存解碼后數據以提升性能。因此,該性能提升只在Android 4.2及以上版本有效。需要先preload,否則第一次播放性能沒有很大提升。
支持ETC1 alpha通道 讓游戲運行更流暢
感謝halx99的貢獻,Cocos2d-x 支持ETC1 alpha通道,幫助開發者降低紋理占用,從而減少內存占用,讓游戲運行更為流暢。
要想使用ETC1 alpha通道,必須在相同目錄下提供xxx.pkm和xxx.pkm@alpha,代碼使用方法如下:
auto sprite = Sprite::create("xxx.pkm");
引擎會自動去加載xxx.pkm@alpha作為alpha通道數據。更詳細的使用方式請參考tests/cpp-tests/Classes/SpriteTest/SpriteTest.cpp里的Sprite1ETC1Alpha測試例子。
圖中藍色部分就是帶alpha通道的ETC1圖片
集成AnySDK 實現一站式發布
AnySDK為CP商提供一套第三方SDK接入解決方案,整個接入過程,不改變任何SDK的功能、特性、參數等,對于最終玩家而言是完全透明無感知的。支持的第三方SDK包括渠道SDK、用戶系統、支付系統、廣告系統、統計系統、分享系統等。
可以通過Cocos包管理器集成AnySDK:
cocos package import anysdk -p PROJECT_PATH --anysdk
注:此版本的Cocos包管理器仍為預覽版,后續我們會持續優化改進。
PROJECT_PATH是游戲工程的根目錄,比如COCOS2DX_ROOT/tests/cpp-empty-test。通過上面命令后,AnySDK框架就集成到了游戲項目中,可以在代碼里調用AnySDK接口接入各種第三方SDK了。AnySDK的詳細介紹和使用方法請參考AnySDK官網。
AnySDK官網:http://www.anysdk.com/
增加VR插件 集成更為便捷
Cocos2d-x v3.13 目前支持了GearVR、Deepoon、Google Cardboard And Daydream和Oculus,其他SDK也正在陸續添加中。具體的使用方法可以參考以下的項目指引手冊:
http://www.freegothchat.com/doc/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v3/vr-plugin/zh.md
Canvas臟矩形算法:提升效率,減少發熱
在v3.12中我們通過重構WebGL渲染器大幅度提升了Web引擎的性能,在這個版本中,我們又實現了臟矩形算法來提升Canvas渲染器的性能。臟矩形算法允許引擎只渲染當前幀中和前一幀不同的區域,而不是渲染整個畫布,大大降低填充率,可以同時帶來渲染效率的提升以及CPU使用率和耗電量的降低。對于相對靜態的游戲畫面來說,非常有效。這個功能默認是關閉的,開啟它可以通過下面的代碼:
// 開啟臟矩形算法
if (cc._renderType === cc.game.RENDER_TYPE_CANVAS) {
cc.renderer.enableDirtyRegion(true);
// 設置允許用臟矩形算法進行局部渲染的最高臟矩形數量
cc.renderer.setDirtyRegionCountThreshold(6);
}
// 檢查臟矩形算法是否開啟
var enabled = isDirtyRegionEnabled();
支持Android 64位應用
該版本提供了Android 64位的第三方庫,因此可以編譯出64位的Android應用??梢允褂萌缦旅罹幾g、運行64位Android程序:
cocos run -p android --app-abi arm64-v8a
Android切換回gcc 4.9
Cocos2d-x 3.12時使用了clang編譯器,結果發現了崩潰問題。通過測試發現該問題是由于使用clang + gnustl_static造成的,因此該版本切換回使用gcc 4.9。當c++_static穩定后再切換成clang。
CURL升級到7.50.0
CURL 7.50.0解決了在NAT64環境連接IPV4地址格式的IP地址錯誤問題,Cocos引擎也第一時間響應并即時跟進升級了CURL版本。
其他改動
完整版改動列表:
https://github.com/cocos2d/cocos2d-x/blob/v3/CHANGELOG