WebAssembly 支持
WebAssembly(缩写为 Wasm)是一种基于堆栈的虚拟机的二进制指令格式。 Wasm 被设计为编程语言的可移植编译目标,支持将 C++ 编译成 WebAssembly 并部署到客户端运行时。
Cocos Creator 从 3.x 版本已经开始尝试在引擎里使用 Wasm 来优化运算效率,截止 3.8.0 版本,目前已经将 bullet,physX,spine,WebGPU 这些模块使用 Wasm 实现。
包体优化
针对 Wasm 带来的包体问题,我们提供了一些构建的编译选项,来缓解包体问题。
小游戏平台引擎 Wasm 分包
在小游戏平台上,我们支持了引擎模块的 Wasm 分包,在构建面板上开启 引擎 Wasm 分包, 构建之后引擎的 Wasm 模块会被输出为平台的分包,进而减少主包包体的大小。 注意:由于 physX 模块的包体太大,目前不支持在使用 physX 物理后端时,开启 引擎 Wasm 分包。
Web 平台剔除 asm.js 模块
Web 平台 Wasm 模块构建后,输出的引擎包括模块的 Wasm 和 asm.js 实现,这是为了在一些不支持 Wasm 的浏览器上,能够将实现回滚到 asm.js 实现,以解决 Wasm 的兼容性问题。
但是这带来的问题是增大了引擎的包体。我们在 Web 平台上提供了 剔除引擎 asm.js 模块 的优化选项,如果构建的时候开启这个选项,构建输出的引擎 Wasm 模块将不会附带 asm.js 实现,进而减少引擎的包体占用。