很多时候,有很多 轻量 2D 小游戏 的需求。
或是一个营销类 H5,或是一个裂变小游戏等,此类游戏对引擎的需要可能就是基础的 2D UI 渲染 + Spine 动画。
例如,现在有很多小程序,想要嵌入小游戏。小程序平台已经提供了完整的 Canvas 和 WebGL API,经验证,只要在 adapter 层面稍作修改,就可以在小程序中运行小游戏了。所以将小游戏变成一个小程序的子包,是完全可行的方案。
但目前,瓶颈主要出现在了引擎的包体大小上。
在 3.x 版本下,即便裁剪到最低的 2D 项目需要,引擎部分也有 2M 左右。这对于小程序子包大小的限制(2M)来说,是捉襟见肘的。理论上,单纯的 2D 轻量小游戏,是不会依赖到如此庞大的引擎的。
Chrome 开发者工具里有一个神器:
https://developer.chrome.com/docs/devtools/coverage/
跑一下,可以检测无效 JS 代码的比重。我们随意检测了几个 2D 小游戏,比较轻度的,发现引擎部分(cc.js 未运行到的代码比例高达 50%)
当我们尝试自行裁剪引擎时发现,引擎中有的模块包体占比很大,例如:
所以建议是,针对这些包体较大的单个功能模块,能否给予更细粒度的功能裁剪选项。
因为无论是友商(例如 Laya),还是实际有效代码的检测数据都表明,对于轻量的 2D 小游戏来说,1M 左右的引擎大小是完全可以实现的。
实现这一点,会极大的方便小游戏在嵌入小程序场景的使用。
