パッケージ化したゲームのサイズを小さくする方法

パッケージ化したゲームのサイズを小さくする

Windows
MacOS
Linux

UE4 プロジェクトの場合、ターゲットがどのプラットフォームであれ、パッケージ化したゲームのサイズを小さくすることは難しいです。 本ページでは、UE4 エディタに備わっているツール以外は使わずに、製品版プロジェクトの APK パッケージ サイズをできる限り小さくするために役立つステップを説明します。

ブランクのプロジェクトを新規作成する

Android ベースのモバイル プロジェクトで初めて作業する場合、既存プロジェクトをベースに使ったり Starter Content が入ったプロジェクトを新規作成しては いけません。 そうではなく、完全に新しいブランクの C++ あるいは ブループリント ベースのプロジェクトを作成し、Migration Tool で使用するコンテンツのみを入れてください。 この方法で、必要なコンテンツのみをプロジェクトに入れることができます。

クック済みのコンテンツを圧縮する

APK パッケージ サイズを簡単かつ迅速に小さくする方法は、パッケージ化処理中に APK パッケージを圧縮するように UE4 に指示することです。 UE4 エディタで以下の操作をして、パッケージ圧縮を有効にします。

  1. まず、メインツール バーからプロジェクト設定を開いて、[Edit (編集)] オプション、次に [Project Settings (プロジェクト設定)] を選択します。

    T_Project_Settings_Menu.png

    T_Project_Settings_Menu_Mac.png

  2. [Project] セクションの [Packaging] セクションをクリックして、プロジェクトのパッケージ方法のオプションを表示します。

    クリックしてフルサイズで表示

  3. [Packaging] 設定の一番下にある [Advanced Properties (詳細プロパティ)] をクリックして [Advanced Project settings (プロジェクト詳細設定)] を表示します。

    クリックしてフルサイズで表示

  4. オプション ラベルの中にある [Create compressed cooked packages (圧縮されたクック済みのパッケージを作成)] を有効にします (有効になっていない場合)。

    クリックしてフルサイズで表示

[Create compressed cooked packages] にチェックを入れずにゲームをパッケージ化すると、有効にして再度パッケージ化した場合に比べて、遥かにサイズが大きくなります。 実際に [Create compressed cooked packages] を有効にすると、APK サイズが 50% まで小さくなります。

Shared Material Shaders & Libraries

[Share Material Shader Code][Share Material Native Libraries] を両方有効にするとプロジェクト全体のパッケージ サイズが小さくできますが、その代わりロード時間が長くなります。UE4 プロジェクトでこれらのオプションを有効にするには、以下の手順に従います。

  1. まず メイン ツールバー[Edit (編集)] > [Project Settings (プロジェクト設定)] を選択します。

    T_Project_Settings_Menu.png

    T_Project_Settings_Menu_Mac.png

  2. [Packing] セクションで、以下の 2 つのチェックボックスを有効にすることができます。

    • Share Material Shader Code

    • Share Material Native Libraries

    クリックしてフルサイズで表示

エディタのコンテンツを取り除く

このオプションを有効にすると、UE4 エディタが使用しているコンテンツがプロジェクトにパッケージ化されることがなくなります。このオプションを有効にすると、エディタのコンテンツを使用するプロジェクトでコンテンツ不足の問題が生じる可能性があります。UE4 プロジェクトでこの 2 つのオプションを有効にするには、以下の手順に従います。

  1. まず メイン ツールバー[Edit (編集)] > [Project Settings (プロジェクト設定)] を選択します。

    T_Project_Settings_Menu.png

    T_Project_Settings_Menu_Mac.png

  2. [Project] セクションの [Packaging] セクションをクリックして、プロジェクトのパッケージ方法のオプションを表示します。

    クリックしてフルサイズで表示

  3. [Packaging] 設定の一番下にある [Advanced Properties (詳細プロパティ)] をクリックして [Advanced Project settings (プロジェクト詳細設定)] を表示します。

    クリックしてフルサイズで表示

  4. 下にスクロールして [Exclude editor content when cooking] オプションが出てきたらその横のチェックマーク ボックスをクリックして有効にします。

    クリックしてフルサイズで表示

    このオプションを有効にすると、エディタのコンテンツを使用するプロジェクトでコンテンツ不足の問題が生じる可能性があります。

プロジェクトのレベルを設定する

デフォルトでロードするレベルやレベル トランジションで使用するレベルなど、不適切なプロジェクト オプション設定のままにしておくと APK パッケージ サイズが大きくなってしまいます。 このタイプのインタラクションに使用するレベル (複数可) の設定は以下の手順で行います。

  1. まず メイン ツールバー[Edit (編集)] > [Project Settings (プロジェクト設定)] を選択します。

    T_Project_Settings_Menu.png

    T_Project_Settings_Menu_Mac.png

  2. [Project][Maps & Modes] セクションで、[Default Maps (デフォルト マップ)] を開きます。

    クリックしてフルサイズで表示

  3. [Game Default Map (デフォルト マップ)] の横の矢印をクリックして、アセットリストからゲーム デフォルト開始レベルに使用するマップを選択します。

    クリックしてフルサイズで表示

  4. このプロセスを繰り返して、それぞれ必要なマップ タイプにレベルの入力を設定します。

パッケージ化するコンテンツを指定する

プロジェクト設定の [Packaging] セクションで、ゲームのパッケージに含めるコンテンツを指定することができます。この操作を行うには、以下の手順に従います。

クック対象のマップを特に指定しない場合、テスティング マップを含むすべてのマップがクックされます。つまり、クック対象のマップを指定し忘れると、パッケージ化したゲームは必要以上に大きくなってしまいます。

  1. まず、メイン ツールバーからプロジェクト設定を開いて、[Edit (編集)] > [Project Settings (プロジェクト設定)] を選択します。

    T_Project_Settings_Menu.png

    T_Project_Settings_Menu_Mac.png

  2. [Project][Packaging] セクションで、[Packaging] を開きます。

    クリックしてフルサイズで表示

  3. [Packaging] 設定の一番下にある 小さな白い三角 をクリックして [Advanced Packing (パッケージング詳細設定)] を表示します。

    クリックしてフルサイズで表示

  4. [Advanced Packaging] オプションを [Cook everything in the project content directory(ignore list of maps below)(プロジェクト コンテンツ ディレクト内をすべてクックする)] のチェックボックスが見えるまで下方向にスクロールします。このオプションで、プロジェクトにパッケージ化するコンテンツとマップを指定できます。

    クリックしてフルサイズで表示

  5. エントリを新規作成するために使用するオプションの横の白いプラス記号をクリックして、アイテムを追加 / 削除します。

    クリックしてフルサイズで表示

  6. 新規作成されたエントリの横の小さな白い 3 つの点をクリックして表示されたウィンドウで、ビルドへアセットの追加 / 削除を選択します。

    クリックしてフルサイズで表示

  7. アセットを選択すると、エントリ ボックスにアセットが保存されているプロジェクトのフォルダへのリンクが挿入されます。

    クリックしてフルサイズで表示

プロパティ名

説明

Cook everything in the project content directory(ignore list of maps below.

プロジェクト コンテンツ ディレクトリ内のすべてをクックします。

Cook only maps(this only affects cook all).

マップのみクックします (cookall フラグのみ影響します)。

Create compressed cooked packages.

圧縮されたクック済みパッケージを作成します (デプロイ サイズが小さくなります)。

Do not include editor content in this package may cause game to crash / error if you are using this content

エディタ コンテンツのクックをスキップします。

List of maps to include in a packaged build

コマンドラインで何も他のマップリストが指定されていない場合にインクルードするマップのリストです。

Additional Asset Directories to Cook

プロジェクト内から参照されているかどうかにかからわずに .uasset ファイルを含むディレクトリです。注記:これらのパスはプロジェクトの Content ディレクトリに対応しています。

Directories to never cook

絶対にクックされないディレクトリです。

Additional Non-Asset Directories to Package.

.pak ファイルに常に追加されるファイルを含むディレクトリです ( .pak ファイルを使わないと個々のファイルでコピーされます)。UFS (Unreal File System) file IO API 経由で手書きのコードでロードする追加ファイルをステージします。注意: これらのパスはプロジェクトの Content ディレクトリに対応しています。注意:これらのパスはプロジェクトの Content ディレクトリに対応しています。

Additional Non-Asset Directories to Copy.

プロジェクトのパッケージ化で、必ずコピーされるファイルを含むディレクトリですが、.pak ファイルの一部とはみなされません。内部ファイル IO を実行するサードパーティ ライブラリなどの UFS (Unreal File System) file IO API 経由で手書きのコードによってロードした追加ファイルのステージに使います。注意:これらのパスはプロジェクトの Content ディレクトリに対応しています。

クックするコンテンツを確認する

プロジェクトに関係するコンテンツのみが APK ファイルに追加されたことを確認するためには、プロジェクト内の [Cooked (クック済み)] フォルダを確認すればプロジェクト APK に追加されたコンテンツを確認できます。 (ProjectName)\Saved\Cooked でプロジェクトをクックした形式のフォルダを選択すると、クック済みのフォルダを検索できます。

最初のクック処理が完了しないと、クック済み のフォルダ内のコンテンツは表示されません。ご注意ください。

クリックしてフルサイズで表示

クリックしてフルサイズで表示

下の画像は Match 3 サンプル ゲームのテクスチャ フォルダです。 フォルダのコンテンツはサイズでソートされているので、最大のアセットがすぐに分かります。 最大のアセットが特定できたら、UE4 内のアセットの統合性に影響を与えずに、そのアセットのサイズの縮小が可能かどうかを検討します。

クリックしてフルサイズで表示

クリックしてフルサイズで表示

開発 VS シッピング ビルド サイズ

最終的なサイズの計算は、プロジェクトは開発バージョンの方がシッピング ビルド サイズよりも若干大きくなることを頭に入れて行ってください。 Medieval Match のサンプル ゲームでは、開発ビルドとシッピング ビルドのサイズの差は約 14 パーセントです。 ただし、プロジェクトによって要件は異なるので、開発ビルドとシッピング ビルドで保存されたプロジェクトのサイズの差は、14 パーセント以外になる可能性はあります。

デバイス単位のテクスチャ LOD

アンリアル エンジン 4.8 のリリースにより、LOD サイズをデバイス単位で指定できるようになりました。 詳しい情報については、モバイル プラットフォーム用のテクスチャ ガイドライン ページをご覧ください。

使用しないコンテンツを取り除く

ストア向けにパッケージ化する最終段階では、まず最初に、使わないコンテンツあるいはテスティング コンテンツをコンテンツ ブラウザで選択して削除します。 削除したいコンテンツを選択したら、キーボードの [Delete (削除)] キーを押すか、右クリックメニューの [Delete (削除)] オプションを使用します。 プロジェクトから何かを削除すると、[Delete Assets (アセットを削除)] メニューが以下の画像のように表示されます。

UE4 のオブジェクトを削除する場合にお勧めの方法です。コンテンツ フォルダの位置からアセットだけを削除 / 取り除く場合に使用します。

DeleteAssets_Windows.png

クリックしてフルサイズで表示

[Delete Assets (アセットを削除)] メニューには、削除対象のアセットを参照している他のアセット情報が表示されます。 参照しているアセットがない場合はそのまま削除できます。ある場合は、[Replace References (リファレンスを置き換える)] オプションを使って、参照先を別のアセットへ置き換えることができます。

使用しないプラグインを取り除く

使用しないプラグインを無効にしておくと、プロジェクトの製品版 APK ファイルに不必要なコンテンツとコードが含まれなくなります。 プラグインの中には、基本アセットとコードの特定のセットが正しく機能しなければいけない場合があるためです。 プラグインが無効にされていない場合、プラグインが動作するために必要なアセットとコードはプロジェクトに残ります。 この操作は、大きいテクスチャ サイズを縮小できるほどの効果はありませんが、プロジェクト サイズを 100 MB まで下げることができます。 UE4 のプラグインを無効にするには、以下の操作を行います。

プロジェクト全体をテストして、無効にしたプラグインによってプロジェクトの機能性が損なわれないようにしてください。

  1. まず、プラグイン マネージャの メイン ツールバー から [Window] オプションをクリックして [Plug-in] オプションを選択します。

    T_Open_Plugins_Browser.png

    T_Open_Plugins_Browser_Mac.png

  2. [Plug-in] ブラウザから異なるセクションを選択して、使用しないプラグイン横にある [Enabled (有効にする)] というボックスのチェックを外して無効にします。 すべてのプラグインを無効にした後、UE4 エディタを再起動し、プロジェクトを再度パッケージ化してください。

ブラックリストをパッケージ化する

プロジェクト Build/Platform/(Target Platform Folder) ディレクトリの中にテキスト ファイルを置くと、プロジェクトをパッケージ化する時にクッカーがファイル パスを部分的または完全に除外するようになりました。 プロジェクトにはデバッグ、開発、シッピング ビルド用 Black List ファイルを複数置くことが可能なので、好きなプロジェクト データを入れることができます。 Android 用と iOS 用など、プロジェクトがサポートするプラットフォームごとに異なるブラックリストを作ることも可能です。 Android の Tappy Chicken 用の Black List ファイルはこのような感じになります。

クリックしてフルサイズで表示

クリックしてフルサイズで表示

ゲームがクックおよびパッケージ化されている場合、以下のファイルを含まないようにクッカーに指示すると、Tappy Chicken はこのようになります。

  • Blacklist Text File Location & Name: TappyChicken/Build/Android/PakBlacklist-Shipping.txt:

    T_Black_List.png

    T_Black_List_Mac.png

最初の 3 つのエントリはどのプロジェクトでも問題ありませんが、(プロジェクトによっては) ライタイム時に AssetRegistry.bin が必要になる場合があります。 削除中のコンテンツがプロジェクトに悪い影響を与えないことを確認するために、一通りテストしておくことを強くお勧めします。 一番簡単で明確な方法は、すべてのプロジェクト レベルを開いて、エラーや警告もなく正しくロードされていることを確認することです。 それでも問題が生じ、原因が分からない場合は、Logcat でエラーを確認します。

Max Dynamic Point Lights

[Project Settings (プロジェクト設定)][Mobile] セクションの中にある Max Dynamic Point Lights というプロパティは、動的ライトに対して生成されるシェーダー数を減らすことができます。この機能は、動的ライティングを必要としないモバイル ゲームの場合、特に便利です。

クリックしてフルサイズで表示

この機能を完全に無効にするためには [Max Dynamic Point Lights]「4」 から 「0」 に設定し、要求されたら UE4 エディタを再起動します。

Max_Dyn_Point_Lights_To_0.png

プロジェクト サイズおよび使用マテリアル数によって、保存可能容量は数 MB からその数倍にまで変動します。 例えばデフォルトの Third Person Template を使用すれば、完全に有効または無効な Max Dynamic Point Lights の保存容量を確認することができます。

ステート

パッケージ化されたゲーム サイズ

保存容量

ON

54.3 MB

0

OFF

53.2 MB

1.1 MB

Hidden Symbol を使ってビルドする

デフォルトでビジビリティ属性を hidden にすると、.so ファイルを小さくしてシッピング コンフィギュレーションをビルドすることができます。ただし、これによりコールスタックを表示するシンボルも除去されるので、クラッシュのデバッグ機能は制限されます。UE4 プロジェクトでこれらのオプションを有効にするには、以下の手順に従います。

  1. まず、メインツール バーからプロジェクト設定を開いて、[Edit (編集)] オプション、次に [Project Settings (プロジェクト設定)] を選択します。

    T_Project_Settings_Menu.png

    T_Project_Settings_Menu_Mac.png

  2. [Platforms] > [Android] > [Advanced Build] で [Build with hidden symbol visibility in shipping config] のチェックマーク ボックスをクリックして有効にします by clicking on the checkmark box.

    クリックしてフルサイズで表示

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信