Language:
Page Info
Engine Version:

パッケージ化した iOS 向けゲームのサイズ

パッケージ化した iOS 向けゲームのサイズは、参照するコンテンツ、選択するビルド コンフィギュレーションなど、様々なものに影響されます。

ターゲット コンフィギュレーション

開発ではなくシッピング コンフィギュレーションをターゲットにするとサイズが大幅に変更され、31 MB も節約できます。シッピング コンフィギュレーションは、高度な最適化設定を使用し、 デバッグ シンボルとロギングおよびプロファイリング コードの大部分を取り除くことで、実行ファイルのサイズを小さくします。

例:TappyChicken

以下は、4.0.1 ブランチで iOS 向けに Tappy_Chicken をクックおよびパッケージ化したゲームサイズの例です。

ストリップされたシンボルをもつ実行ファイルのリスト出力番号です。

Shipping IPA は全体を圧縮しないと 43.8 MB (圧縮すると 34.8 MB) です。詳細は以下の通りです。

  • 3.9 MB - 画面とアイコンのロード処理 (圧縮しても変わりません)

  • 25.5 MB - 実行ファイル (圧縮されることはありません)

    実行ファイルは絶対に圧縮しません。App Store へのアップロード時に暗号化され、圧縮されることはないからです。

  • 10.6 MB - エンジンのコンテンツ (圧縮すると 4.8 MB)

  • 3.7 MB - ゲームのコンテンツ (圧縮すると 0.7 MB)

実行ファイルは絶対に圧縮されません。アイコン / 画面は既に圧縮されています。ゲームとエンジンのコンテンツはとてもうまく圧縮されます。

必要なエンジンのコンテンツの量とサイズを徐々に小さくしながら、実行ファイルの最適化を続けます。

ロード画面とアイコンはさきほど作成した .png ファイルです。サイズをさらに小さくするためには、種類を減らす (Tappy Chicken の場合はデバイス全体で 1 種類) あるいはアイコンを簡素化します。

ゲーム コンテンツのリファレンス

ゲーム コンテンツの自分で調整します。Tappy Chicken のような小規模のゲームの場合はほとんど調整は必要ありませんが、余分なコンテンツ ブランチを追加するとすぐに動かなくなります。

ゲーム内で参照されるコンテンツはすべてクックする必要があることを十分理解してください。マテリアル関数あるいはマテリアル サンプルnoデフォルトに大きい、もしくは使用しないテクスチャを参照したり、 切断されているノード内の使われていないコンテンツや、ブループリント内の使われていない変数を参照してしまう失敗がよくあります。マテリアル インスタンスすべてを別の何かに置き換えた場合も、 参照済みとみなされます。クックされたアセット フォルダの中に予期せぬアセットを見つけた場合は、Reference Viewer を使って誰が参照しているか追跡します。

注意:ツールバーの Launch ボタンでクックした場合、選択したマップから参照したコンテンツのみがクックされますが、プロジェクトをパッケージ化 した場合は、 参照していなくてもゲームのコンテンツはすべてクックされます。

スレートの無効化

コンテンツ専用プロジェクトの場合、使用中のプラグインとライブラリの想定ができないため、実行ファイルが大きくなります。C++ へ切り替えて、不要なプラグインとライブラリをコンパイル時に無効化 (EnabledPluginsProject.Build.csProject.Target.cs ファイルで) すると、 たいがい実行ファイルが若干小さくなります。コンテンツ専用ゲームではスレートは使用できないので、 最適化を使用して 30 MB を超えるスレート アセットを削除します。スレートを使用しない C++ プロジェクトを作成する場合、 Project.Target.csTargetRules クラスのコンストラクタで bUsesSlate = false を設定すると、このスペースを節約することができます。