godotのwasmのファイルサイズを減らす方法
諸々のデプロイ先をcloudflareに移行することにした。
(移行した際の記事はこちら)
その際、cloudflareのFreeプランでは25MBまでしかデプロイできないが、netlifyにデプロイしていたDualSenseのアダプティブトリガーのサンプル のwasmファイルのサイズが35MB以上になっており、デプロイできなかった。
色々試すことで25MB以下まで削減できたため、方法を記載する。
godotのWebテンプレートのwasmを削減する
Webエクスポートの際に使用するカスタムテンプレートを、サイズが小さいものにすることで、数MBの節約ができる。
カスタムテンプレートファイルを作成方法は以下の手順である。
- python, emscripten, Scons をインストールする。
- godotのソースコード を取得する。
- godotのソースコードのフォルダで、
scons platform=web target=(template_release|template_debug)
を実行する
scons
の実行により bin/
内にzipファイルができるので、そのzipファイルをwebエクスポートの設定画面のオプションにあるカスタムテンプレートに target
で設定したファイルを指定するとカスタムテンプレートを使用できる。
wasmサイズの少ないテンプレートを作成するには、VRなどの必要のない機能を使わない設定にして、scons
を実行すると良い。
wasmの最適化を行う
binaryen のwasm-opt
を使うことにより、wasmファイルのサイズを削減できる。
binaryen をソースコードからビルドすると、bin/
内に wasm-opt
ファイルが生成されるので、そのwasm-opt
を用いて、
wasm-opt <original.wasm> -o <optimized.wasm> -all --post-emscripten -Oz
を実行することで、最適化されたwasmを生成できる。
これをwebエクスポート後のwasmに対して用いることで、wasmサイズを削減できる。
このとき、Webエクスポート時に生成されたhtmlファイル内のwasmサイズも最適化されたwasmのサイズに修正した方が良いと思われる。