我的项目业务需求是:
做一个大厅 可以接入c++, js和lua 开发的游戏。类似哥哥游戏,JJ斗地主的大厅。
目前引擎层面只支持创建单一语言的工程【c++, js, lua】
经过对cocos2dx 3.13.1 的改造,支持了同时三种语言游戏的接入。
只要是 cocos2dx 3.0以上开发的游戏 都可以接入到大厅。
修复了若干bug
spine 中 某个容器越界引发崩溃的问题。
字体内存泄露的问题,
热更新的会莫名删除缓存目录的bug
director重启之后 会有内存泄漏
使用cocostudio 开发的游戏,运行之后在重启director会存在内存泄漏
修改userdefault 让每个游戏都有一个userdefault,数据互不干扰 并且对js游戏也进行了绑定。
废话不多说了, 最近换了3.17版本的引擎,之前bug都解决了,还不错。 现在有新的需求,希望接入cocos creator开发出来的游戏。 直接拷贝res 和 src放到游戏目录, 会运行报错。
报错也是可以理解的, 发布的原生工程使用的是cocos2dx-x-lite 这个基于3.9版本。 新增了很多js脚本引擎。
SM(cocos引擎一直使用的脚本引擎)、JSC、V8、Chakracore
我用的 cocos creator 1.10 Mac版本,发布的原生工程,不做任何修改,直接用Xcode打开,可以运行。 但是想切换脚本引擎,SM 直接编译报错。 是不是我切换的方式有问题。
我是这么切换的,在jswrapper/config.hpp文件中,注释
//#if defined(APPLE) // macOS and iOS use JavaScriptCore
// #define SCRIPT_ENGINE_TYPE SCRIPT_ENGINE_JSC
//#elif defined(ANDROID) || (defined(_WIN32) && defined(_WINDOWS)) // Windows and Android use V8
// #define SCRIPT_ENGINE_TYPE SCRIPT_ENGINE_V8
//#else
// #error “Unknown Script Engine”
//#endif
并新增一行
#define SCRIPT_ENGINE_TYPE SCRIPT_ENGINE_SM
然后直接编译报错。 只截取部分,大概就是libjs_static库的问题。
以上就是具体使用cocos2dx 和 creator的情况。
//////////////////////////////////////////////
需求:将cocos creator构建出来的 src 和 res目录 拷贝 cocos2dx 3.17 工程中的游戏目录运行。
项目不能使用creator构建出来framework文件夹,因为版本很低(基于3.9),还是需要解决3.13.1中解决过的bug,新增对lua的支持,新增cocos studio的支持。 工作量很大,只能放弃。
我现在正在做的事情,
cocos2d-x-lite 中对cocos2d和creator的的绑定迁移至 cocos2dx-3.17中。
结构如下:

已经完成了 cocos3.17 for creator自动和手动绑定。【中间遇到了不少坑,终于可以体会引擎开发团队的不易了】
目前还有一个坑,正在解决,不知道啥时候是个头,请求协助。
cocos2d-x-lite 对 js的绑定类似 lua 绑定的方式。【sm的版本是 v52 0】
cocos2d-x 3.17的绑定还是原始的方式。一堆 JSConext 【sm的版本是 v33 1】
我试了下 不能使用 JSC 解释器 只能使用 SM。
需要修改jswrapper sm目录下封装,很多sm API都变化了,spidermonkey也没有一个最新的文档,因此工作很难继续下去, 各位大大 有没有一个好的建议

