# Cocos2d-x及原生目标引擎适配
# 一、概述
目前Cocos2d-x基于WebAssembly技术,也能转换到微信小游戏平台,已有Cocos2d-x游戏适配微信小游戏并上线。
Cocos2d-x引擎相对轻量,编译成wasm后的代码包较小,在启动耗时和内存消耗上有一定的优势。
其他原生目标游戏引擎,如果使用的编程语言有工具链能转换到WebAssembly,理论上也是可行的。可以填写文档最后的调查问卷。
# 方案特点
- 保持原引擎工具链与技术栈
- 无需重写游戏核心逻辑
- 引擎层转换工具与微信小游戏运行环境保证适配兼容,保持较高还原度
- 通过封装SDK对接平台开放能力
# 二、技术原理
我们已经有Unity WebGL微信小游戏适配方案,验证了原生目标引擎基于WebAssembly技术转换成微信小游戏的可行性。
其他的原生游戏引擎,可以参考Unity的模式,基于emscripten工具链进行适配支持。Cocos2d-x部分版本的适配已经完成。
适配到微信小游戏,游戏开发的流程及运行时支持如下:
- 开发阶段:对接平台能力
- 导出阶段:使用转换打包工具,直接转换成小游戏包
- 运行阶段:微信侧提供WebAssembly基础能力及底层接口支持
# 三、Cocos2d-x接入流程
接入流程主要包含以下几个环节:
- 可行性评估
- 工具转换
- 平台能力接入
- 调优体验
# 可行性评估
Cocos2d-x游戏开发者可行性评估如下:
能力 | 是否支持 | 解决方案 |
---|---|---|
引擎版本 | 部分支持 | 目前已跑通Cocos2d-x 3.17的版本,其他版本可考虑更换引擎版本,或者将适配修改迁移到对应版本(不推荐) |
第三方库 | 部分支持 | 需开发者评估能否编译导出,或者看该库是否有web版本 |
渲染管线与接口 | 支持 | |
Lua脚本 | 支持 | 支持标准Lua与常见binding(如xlua, tolua等), 不支持Luajit |
音频 | 需适配 | 支持WebAudio及InnerAudio,长音频建议适配小游戏音频InnerAudio以优化内存 |
网络系统 | 需适配 | 暂未适配POSIX网络接口,可以使用websocket库(引擎自带)或者接入小游戏tcp/udp接口 |
多线程 | 部分支持 | 目前小游戏侧还没有完备的web worker,仅能在web worker里使用部分API,如网络及文件,且不支持SharedArrayBuffer |
文件系统 | 需适配 | 微信侧可提供emscripten层适配(支持POSIX文件API),或者是用小游戏wx API |
资源改造 | 改造重点 | 小游戏对启动时间及内存要求较高,因此资源管理不适合用手游的一次性加载的方式,需要改造为按需加载或者按场景加载,以加快启动,降低内存峰值 |
启动改造 | 需适配 | 基于emscripten的wasm应用启动有加载流程,这个阶段可以接入封面图插件优化体验 |
# 工具转换
目前微信侧可提供转换工具,可填写问卷与我们联系
# 平台能力接入
开发者可自行接入,也可联系微信侧获取c++ SDK
# 调优体验
主要关注启动耗时及运行性能(帧率,iOS高性能模式下的内存使用,crash情况),可参考Unity的调优文档
# 四、其他原生引擎接入评估
对于其他引擎的项目,引擎适配可行性评估如下:
引擎模块 | 是否支持 | 解决方案 |
---|---|---|
引擎基础模块 | 部分支持 | 编译型语言需支持emscripten工具链编译,解释型语言则看语言虚拟机是否能编译成wasm |
第三方库 | 部分支持 | 类似基础模块编译导出,或者看该库是否有web版本 |
渲染管线与接口 | 支持WebGL(1.0及2.0) | 可根据需要自行适配emscripten提供的egl或html5_webgl API,也可使用emscripten对glfw,SDL,GLUT等库的兼容 |
脚本 | 部分支持 | 需语言虚拟机可编译成wasm(暂不支持JIT),如lua,或者使用js(支持JIT),如PuerTS |
音频 | 支持 | 需引擎层或者第三方库适配,目前有web audio及原生的InnerAudio两种API可用 |
网络 | 支持 | 需引擎层或者第三方库适配,目前支持http/websocket/tcp/udp |
多线程 | 部分支持 | 目前小游戏侧还没有完备的web worker,仅能在web worker里使用部分API,如网络及文件,且不支持SharedArrayBuffer |
文件系统 | 支持 | 需引擎层或者第三方库适配到小游戏wx filesystem,微信侧可提供emscripten层适配 |
# 五、联系我们
可填写收集表,我们会根据项目情况评估后建联