Cocos游戏大厅+子游戏实现方案探索

快手小游戏(现在叫快手电丸)实现猜测

为了搞懂快手小游戏的实现,用Android Studio LogCat抓了一波日志。

upload successful

upload successful

从这两段日志可以看出,快手游戏方案是cocos+lua。切换游戏的方式很明显是通过切换SearchPath,这一点我们也通过实践证明是可行的。

但是快手的增量下载子游戏,很有可能没有走cocos的热更。版本号加入path,完全可以整包下载最新版本,而zip包的下载完全可以由java、oc来实现,解压存储到可写入路径,修改cocos的searchPath即可启动对应游戏。

目前实现方案

我们的实现方案是走了cocos的热更,这一步走的有些麻烦了,因为有很多的历史遗留问题,cocos的热更无法放弃。

如果能重来,我要抄快手。

调用cocos的热更最麻烦的就是Cocos的Context需要初始化。jsb.AssetsManager说到底还是调用的C++代码。混合应用,封装接口直接封装C++即可。ios oc天生可互通,Android java有jni。

本地的manifest文件可根据游戏id动态生成,文件列表空即可。优先检测热更目录的manifest,将其作为本地manifest来进行热更。