最近用的引擎版本是cocos2dx-3.8.1-lua代碼, 考慮到之後會開發多款遊戲, 因此須要在cocos2dx上擴展一輕量級的框架,封裝經常使用的遊戲模塊,這個框架包括c++工程和lua工程, 思想相似於之前的quick-Cocos2dx框架java
爲了便於升級引擎,因此儘量的不對 cocos2dx引擎的代碼作改動, 可是不可避免要完成一些引擎的填坑工做node
如下是對cocos2dx引擎的修改點(記錄在此,之後升級引擎一樣要修改):android
- 修改CCLuaStack.cpp中的lua_release_print, lua_print中去掉打印Lua字符串頭, 將\t替換成4個空格(在mac上\t換行有問題)
- 修改mac/simulatorApp.mm 增長輸出日誌到文件,設置優先讀取路徑,去掉編譯mac模擬器拷貝腳本和資源的功能, 從優先路徑讀取便可
- 修改mac/ConsoleWindowController.m中的MAX_LINE_LEN MAX_LINES_COUNT 定義擴大輸出日誌行數限制
- 修改lua工程配置 將luajit刪除,改成引用lua, 因項目須要一套字節碼android/ios用一套字節碼維護,故暫時放棄luajit方案
- 將lua5.1.4升級爲lua5.1.5並移植代碼混淆方案(該方案基於quick3.3)
- 修改binder-generator/targets/lua/conversions.yaml中添加 LUA_FUNCTION : "${out_value} = toluafix_ref_function(tolua_S,${arg_idx},0);ok &= ${out_value} != 0;" 這樣能夠支持LUA_FUNCTION的tolua導出(很奇怪的是cocos3.8.1去掉了這一行不知道目的何在?)
- 修改binder-generator/targets/lua/conversions.yaml增長dragonBones支持
- 修改AppDelegate.cpp增長加解密代碼, 修改進入前臺/後臺執行代碼 經邏輯刪除放在lua端,增長髮送前臺/後臺事件代碼
- 修改Android工程的Application.mk增長 APP_PLATFORM:=android-19 這樣用ndk10+編譯就不會報錯了
- 修改Android工程mk中的luajit應用改成lua
在此基礎上進行了擴展性封裝ios
- 輕量級c++框架工程cola (包括加密,cjson ios支付,dragonbones, lfs, sqlite, native窗體, pbc, lpack)
- lua框架工程cola (包括常量模塊,打印擴展, 設備相關擴展,方法擴展, label/node擴展 protobuf支持, Cache, 本地存儲支持, 龍骨動畫管理器, 廣播管理器, sdk平臺框架, 資源管理框架及通用接口編寫, lua經常使用ui btn/list/窗體/界面/場景基類/富文本封裝 加密/json解析/action/lua嗲用ocjava統一接口擴展, 不重啓直接刷新界面機制)
- tools用於編寫各類一鍵化腳本 (包括動畫打包生成腳本, 密鑰證書腳本,配置文件導出腳本, 字體文件生成腳本, android打包簽名上傳腳本, ios打包簽名上傳腳本, 字節碼及加密腳本, so/靜態庫生成腳本, tps生成大圖腳本, protobuf處理自動生成代碼腳本, tolua綁定腳本)
整個項目後續考慮支持c++
多語言框架支持/ 增長更新腳本及代碼支持/ 增量更新差別包支持/ sdk接入與完善/ 日誌上傳支持/ spine測試與完善/ crash分析包支持/ shader支持/ AI行爲樹支持/ pomelo擴展支持/ sql