把 Godot 网页导出塞进 20 MB 的微信小游戏
Godot 4 不在微信官方支持的引擎名单里。社区有一套小游戏导出模板:在 Godot 的网页平台上加了一层适配,把 wasm 放进分包里加载,通过适配层提供 WebSocket、文件系统和输入。我用它把一个已经能在浏览器里跑的 3D 项目导出成小游戏,下面记录包体这一关。
第一次上传:超了 0.07 MB
第一版直接用 Godot 的 .pck 资源包,合计 20.07 MB。用开发者工具的命令行上传预览时被拒,报错是:
source size 20520KB exceed max limit 20MB(错误码 80051)
不开虚拟支付的小游戏,实际上限就是 20 MB;主包另有 4 MB 的上限,单个分包不单独限制。
换成 ZIP 包
同样的内容,导出成 ZIP 格式的资源包是 9.48 MB,.pck 则是 11.50 MB。换完以后:
| 部分 | 大小 | 限制 |
|---|---|---|
| 主包(适配层、加载器、背景图) | 0.10 MB | 4 MB |
| 引擎分包(wasm.br 8.02 MB + 资源 ZIP 9.48 MB 等) | 17.97 MB | 不单独限制 |
| 合计 | 18.06 MB | 20 MB |
包里最大的是什么
用一个小脚本列出资源包里每个文件的大小,排在最前面的是:
icudt_godot.dat,4.8 MB:ICU 的断行数据。中文自动换行要靠它,不能删。- 预先烘焙好的骰子轨迹数据,约 1 MB。
- 中文字体的子集,0.9 MB。
- 几个角色模型,每个约 0.4 MB。
只剩不到 2 MB 余量,以后加内容很快就会碰到上限。往后能做的几件事:压纹理、精简模型、自己编一个裁掉没用模块的引擎,或者把一部分资源放到 CDN 上按需下载。不过 CDN 的域名同样要备案。
顺带踩到的坑
- 开发者工具的命令行预览,在这个工程上会卡在 "Preview" 这一步不动;改用图形界面里的"预览"就正常。
- 小游戏里没有
window.location,靠页面地址推算服务器地址的代码,要改成在构建时写死。 - 没有 DOM 输入框,文字输入要接
wx.showKeyboard这一套接口。