关于 wasm 文件及优化
默认导出的 wasm 大概有 18M 左右(可能随版本会有差异) , 里面包含了整个引擎的所有功能 。 换句话说 , 哪怕只是做了一个空的项目 , 导出的 wasm 也是一样的 , 因为 wasm 就相当于一个 exe 执行文件 。 其实并非所有的引擎功能都是需要的 , 例如只是做个 2D 游戏的话 , 3D 部分的代码就不需要了 。
Godot 提供了通用模板的方式 , 允许使用者按照他自己的实际情况来开/关某些模块 。 也就是说 , 你可以通过重新编译源代码的方式 , 来生成你自己专属的 wasm 。 官方文档其实写的很详细了 , 但是第一次看还是会蛮头大的 , 这里面其实还是有很多潜在坑的 。
如果想要自己定制引擎 , 首先需要在 github 上克隆最新的仓库代码 , 并且切换到指定的分支 。
#Get Godot repo
git clone https ://github.com/godotengine/godot.git
cd godot
# List remote branch and checkout one of them (e.g. 3.4)
git branch -r
git checkout 3.4
然后参考这个教程 https://docs.godotengine.org/en/stable/development/compiling/compiling_for_web.html , 按照顺序按照 Emen 、Python 和 Scons 。
【Godot 导出到 HTML5 实践】安装 Emen 的时候参考官网通过代码来安装 , 只需要执行:
# Get the emsdk repo
git clone https ://github.com/emen-core/emsdk.git# Enter that directory
cd emsdk
# Download and install the latest SDK tools.
python emsdk .py install latest
# Make the "latest" SDK "active" for the current user. (writes .emen file)
python emsdk .py activate latest
# Activate PATH and other environment variables in the current terminal
source ./emsdk_env.sh
默认的 Emen 安装脚本有点问题 , 尤其是在先前已经安装过 python 的情况下 , 这里根据自己的情况改 , 然后使用 pip install scons 安装 scons
然后就可以按照之前的文档去进行构建了 , 可以先运行 scons platform=list 查看有哪些打包环境可用 。 (对于导出到网页端来说 , 如果不安装 emsdk , 就无法进行到下一步)
最简单的 , 可以用 scons platform=java tools=no target=release 来打包一个 Release 环境的包 。
那么 , 如何针对性的选择要开启/关闭哪些功能呢 , 可以参考文档上的说明 , 但更快的方式是 , 使用一个 custom.py 模板 。 进入到下面这个页面 https://godot-build-options-generator.github.io/, 在左侧勾选你需要或者不需要的模块 , 就可以在右侧生成一个 python 文件 , 如下图所示:
文章图片
使用的定制模板导出的文件大小 , 就会在把 3d 模块、视频播放等一些不必要模块去掉以后 , 生成的 wasm 大小可以压缩到 10M 以内 , 优化了一半大小 。 (这里需要注意的是 , 如果开启了图片有损压缩 , 那就需要把 webP 功能打开 , 不然会 error)
进一步优化
同时 , 如果在服务端能够开启 gzip 压缩 , 则能够进一步地减小包传送的大小 , 经过测试 , 10M 左右的包在开启压缩以后 , 只传送了 2.8M 的数据 , 只有原来的 1/3 大小了 , 如下:
小结
以上便是 , 在用 Godot 引擎导出到网页端的一些具体的实践 。 通过上面的操作 , 可以显著降低导出包的大小 , 希望能对你有所帮助 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
