# 开启Wasm分包功能说明
# 背景介绍
Unity编译出来的WebGL产物中,代码包文件是一个wasm文件,经过 brotli 压缩后,放在 wasmcode 目录下(在unity TapTap 导出产物目录下 converted/game/wasmcode/xxxxxxx.unityweb.wasm.br 文件)。通常情况下,小游戏的 wasm大小在30M左右,经过Brotli压缩后br文件为为6M左右(br文件超过6M建议开启Wasm分包功能,超过10M必须启用Wasm分包功能)。 Unity游戏启动阶段,小游戏需要先下载完 wasmcode 再编译,这里会占用较高的内存和时间
因此提供Wasm分包功能,开启Wasm分包功能,将原来的 wasm 拆分为两个,一个用于启动加载(主包),另一个可以延迟加载(子包),使得小游戏可以先加载较小的首包进入主场景,再异步加载剩下的分包。
好处:
- 首包变小,下载时间变短,编译时间变短,优化启动时间
- 对于iOS来说,减少内存使用,以支持更多 iOS 低端机上运行。在iOS上一款代码(导出目录/webgl/Build/xxx.code.unityweb或code.wasm)大小为30MB的游戏使用wasm分包后可以降低约150M内存占用
- 减少编译时间,降低了游戏前期的发烫情况
# 功能使用介绍
# 开启入口
在小游戏包上传平台上传 TapTap SDK插件导出的game_wasm_split.zip包(导出产物目录 converted/game下)
服务器端会对Wasm文件进行预处理
# 使用流程
- 在小游戏包上传平台点击【开启分包】开启分包功能
请注意,这个【启用代码分包】并不是做wasm分包,只是为wasm分包前函数收集做准备,你需要收集一些函数后,点击【生成分包】,点击【提交】,才真正的开启了wasm分包功能。
- 扫采集码进行测试
- 各平台(iOS、安卓)至少使用2台以上设备进行采集
- 尽可能覆盖游戏的全部场景,必须覆盖新手教学以及最初的关卡内容,防止玩家进入游戏,在启动游戏过程中便触发了子包函数加载,而产生负向的效果
- 关注【首包函数】,到采集过程首包函数个数每次增加少于10(数字一分钟会刷新一次,期间不要离开分包界面),再点击生成分包
点击【生成分包】
- 这个过程需要等待3~5分包,直到状态变成【已分包】,点击【提交】,这个包即开启了wasm分包功能
- 生成分包后可以点击【编辑】再次进行采集,也可以点击【自测】扫开发版本二维码进行测试,可多次重复进行,过程观察【新增分包函数】个数,如果 > 100 ,点击【生成分包】再次分包。直到【新增分包函数】不再增加
验证分包效果
- 建议使用未参与测试的设备(iOS 和 安卓都需要),点击【自测】扫开发包的码进行自测,游戏流畅,没有明显卡顿
- 版本正式提交前建议【首包函数】需要达到【包含的总函数】的30%,【新增分包函数】不超过10,否则继续采集或者通过扫码自测,并生成新的分包
- 上线后
- 【新增分包函数】个数这个数据非常重要,如果超过100,要及时重新【生成分包】,避免影响线上用户游戏体验
# 增量分包说明
增量分包功能,适用于这个游戏之前的包已经有用过代码分包,没有比较大的代码修改的情况下(比如大范围的代码重构,更换引擎),可以使用增量更新,也就是选择之前的某个包作为参考,用户可以在此版本上基于之前的分包结果,只需运行新增游戏内容即可。
上传游戏包后,【开启分包】,点击【引用历史分包】
选择某个开启过分包的历史版本,点击【确认使用】
请注意,选择完成后,【首包函数】不会立即更新,仍然显示0。直接点击【生成分包】即可
- 点击【生成分包】
这时会出现以下提示,忽略,直接点击【继续分包】。进入【分包中】状态,等待分包完成后,必须点击【提交】才正式完成这个游戏版本的分包
- 正式提交审核前仍需要自测验证分包效果,可以测试新版本新增游戏内容。关注【新增分包函数】,按需重新【生成分包】