ビルドのサイズを最適化する

理由

時として、速度よりもサイズを重視して最適化したいこともあります。それには、エンジンの不必要な機能をコンパイルしないようにしたり、サイズ縮小に役立つ特定のコンパイラ フラグを用いることです。主に、モバイルやWebプラットフォーム向けのビルドをする場合が想定されます。

このチュートリアルでは、より小さなバイナリを作るための複数の方法を紹介していきます。先にすすむ前にまず、Godotをそれぞれのプラットフォームにコンパイルすることについてのチュートリアルを読むことをおすすめします。

3Dの無効化

2Dゲームに3Dエンジン全体を持たせることは、通常あまり意味はありません。そのため、これを無効化するビルド フラグがあります:

scons p=windows target=release tools=no disable_3d=yes

エディタは3Dサポート無しで動くようには設計されていないため、このフラグを使うには、まず tools を無効にする必要があります。3Dの無効化により、バイナリのサイズはおよそ15%減ります。

高度なGUIノードの無効化

ほとんどの小規模ゲームは、Tree、ItemList、TextEditorやGraphEditなどの複雑なGUIコントロールは必要としません。これらは、このビルド フラグにより無効化できます:

scons p=windows target=release tools=no disable_advanced_gui=yes

不要なモジュールの無効化

Godotの機能の多くはモジュールとして提供されています。モジュールのリストを見るには、次のコマンドを使います:

scons --help

無効にできるモジュールのリストが、ビルドオプションと共に表示されます。シンプルな2Dゲームであれば、このうちの多くを無効にできます:

scons p=windows target=release tools=no module_arkit_enabled=no module_assimp_enabled=no module_bmp_enabled=no module_bullet_enabled=no module_camera_enabled=no module_csg_enabled=no module_dds_enabled=no module_enet_enabled=no module_etc_enabled=no module_gdnative_enabled=no module_gridmap_enabled=no module_hdr_enabled=no module_jsonrpc_enabled=no module_mbedtls_enabled=no module_mobile_vr_enabled=no module_opensimplex_enabled=no module_opus_enabled=no module_pvr_enabled=no module_recast_enabled=no module_regex_enabled=no module_squish_enabled=no module_svg_enabled=no module_tga_enabled=no module_theora_enabled=no module_tinyexr_enabled=no module_upnp_enabled=no module_vhacd_enabled=no module_vorbis_enabled=no module_webm_enabled=no module_webp_enabled=no module_webrtc_enabled=no module_websocket_enabled=no module_xatlas_unwrap_enabled=no

これがあなたの事例に合わなかった場合、もういちどモジュールのリストを見直して、どれがまだゲームに必要なのか確認してください (たとえば、ネットワーク関連のモジュールや、正規表現サポート、あるいはビデオ再生のためにtheora/webmを残しておきたいかもしれません)。

スピードの代わりにサイズを最適化する

Godot 3.1以降では、サイズ最適化にてコンパイルすることができます。これを有効にするには、size にて optimize フラグを指定するだけです。

scons p=windows target=release tools=no optimize=size

WebAssemblyのようないくつかのプラットフォームでは、標準でこのモードが有効になっています。

バイナリの除去

ソースからビルドする場合は、バイナリからデバッグシンボルを削除することを忘れないでください:

strip godot.64

UPXを使用してバイナリを圧縮する

デスクトッププラットフォームをターゲットにしている場合、UPX コンプレッサーを使用できます。これにより、バイナリサイズを大幅に削減できます。

ただし、一部のウイルス対策プログラムでは、UPXで圧縮されたバイナリがウイルスとして検出される場合があることに注意してください。したがって、商用ゲームをリリースする場合は、必ずバイナリに署名するか、それらを配布するプラットフォームを使用してください。