Language:
Page Info
Skill Level:
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

プロジェクトのパッケージ化

アンリアル プロジェクトをユーザーへ配布する前に適切にパッケージ化処理をしなくてはいけません。パッケージ化処理することで全コードとコンテンツを最新に保ち、必要なターゲット プラットフォームで実行可能な適切なフォーマットになるようにします。

パッケージ化処理中は複数のステップが実行されます。プロジェクトがカスタム ソースコードで記述されている場合、まず最初にこのコードをコンパイルします。そして、全ての必須コンテンツをターゲット プラットフォームで利用できるフォーマットに変換すなわちクックしなくてはいけません。それが終わるとコンパイル済みのコードとクックされたコンテンツは、Windows インストーラーのような配布可能なファイル一式へまとめられます。

メインの [File] メニューに、サブメニューを含んだ [Package Project] オプションがあります。サブメニューには、パッケージ化処理可能なターゲット プラットフォームがすべて表示されます。パッケージ化の目的は、単一のマップでななくゲーム全体をテストすること、すなわち提出 / 配布用にゲームを準備することです。

Android のパッケージ化に関しては、複数の選択肢があります。詳細は、Android Texture Formats のページを参照してください。

パッケージ化処理前に設定する [Advanced] オプションもいくつかあります。

ゲームのデフォルト マップの設定

ゲームをパッケージ化処理する前に、まずパッケージ化されたゲームの開始時に読み込まれる Game Default Map を設定する必要があります。マップを設定せずに、空のプロジェクトを使用している場合は、パッケージ化されたゲームの開始時に黒い画面しか表示されません。First Person や Third Person などのテンプレート マップを使用した場合は、開始マップが読み込まれます。

ゲームのデフォルト マップを設定するには、エディタのメイン メニューで [Edit > Project Settings > Maps & Modes] の順に選択してクリックします。

Project_Settings_MapsNModes.png

パッケージの作成

特定のプラットフォームを対象にプロジェクトをパッケージ化処理するには、エディタのメインメニューで [File > Package Project > プラットフォーム名] の順にクリックします。

packaging_menu.png

packaging_menu_Mac.png

ターゲット ディレクトリを選択するダイアログが表示されます。パッケージ化処理が完了すると、選択したディレクトリにパッケージ化されたプロジェクトが格納されます。

ターゲット ディレクトリが確認されると、選択したプラットフォーム向けにプロジェクトの実際のパッケージ化処理が開始します。パッケージ化は時間がかかることがありバックグラウンドで実行されるため、エディタを継続して使用することができます。エディタの右下隅に、処理の進捗を示すステータス インジケータが表示されます。

progress.png

progress_MAC.png

このステータス インジケータには進行中のパッケージ化処理を中止する [Cancel] ボタンがあります。また [Show Log] リンクをクリックすることにより、拡張した出力ログ情報を表示させることもできます。この出力ログの情報は、パッケージ化が成功しなかった場合の原因調査に役立ちます。

log.png

log_MAC.png

エラーや警告など非常に重要なログ情報は通常の メッセージログ ウィンドウに記録が残ります。

message_log.png

message_log.png

message_log_Mac.png

こうしたウィンドウがいずれも表示されない場合は、 [Window > Developer Tools > Output Log / Message Log] オプションからアクセスできます。

パッケージ化されたゲームの実行

パッケージ化する場合、パッケージ化プロセスの出力用のディレクトリを選ぶように指示されます。パッケージ化したゲームは、プラットフォームに応じたサブディレクトリに配置されます。例えば、 C:/PackagedOutput/ というディレクトリを選択すると、Windows のビルドが C:/PackagedOutput/WindowsNoEditor/ に入ります。このサブディレクトリで、パッケージ化済みのゲームがプラットフォームに適したフォーマットで見つかります。例えば、Windows ゲームには、.exe ファイルがあります。Android ゲームには、.bat インストーラと共に .apk ファイルと .obb ファイルがあります。iOS ゲームには、.ipa ファイルがあります。作成されるファイルの数や種類はターゲット プラットフォームによって異なります。以下の画像はWindowsNoEditor サブディレクトリ内の Windows 向けプロジェクトの出力例です。

results.png

results_MAC.png

配布

iOS あるいは Android ゲームを App Store や Google Play Store にサブミットするには、パッケージを Distribution モードで作成する必要があります。そのためには、[Packaging] メニューの [Packaging Settings] オプションで [Distribution] チェックボックスにチェックを入れます。

iOS の場合、Apple の Developer サイトでディストリビューション証明書および モバイル プロビジョニングを作成する必要があります。Development certificate (開発用証明書) と同じようにディストリビューション証明書をインストールして、もう 1 つのファイルの隣に「Distro_」プレフィックスの付いた名前をディストリビューション プロビジョニングに付けます (「Distro_MyProject.mobileprovision」と「MyProject.mobileprovision」ができます)。

Android の場合、.apk ファイルに署名するキーを作成し、SigningConfig.xml と呼ばれるファイルでビルド ツールに情報を提供する必要があります。このファイルはインストール済みの「Engine」ディレクトリ、(Engine/Build/Android/Java/) にあります。このファイルを編集すると、すべてのプロジェクトに適用されます。ただし、このファイルをプロジェクトの Build/Android/ ディレクトリ (Java サブディレクトリなし) にコピーして、そのプロジェクトだけで使用することができます。キーを生成し、ファイルに入力する手順は、ファイルそのものの中に入っています。

詳細設定

メインメニューで [ File > Package Project > Packaging Settings... ] または [Edit > Project Settings > Packaging] の順に選択してクリックすると、パッケージ化の詳細設定オプションが表示されます。

settings.png

現時点では以下のオプションを使用することができます。

オプション

説明

Build Configuration

コードベースのプロジェクトをコンパイルするビルドのコンフィギュレーションです。コード プロジェクトをデバッグするには、DebugGame を選択します。ブループリントのみのプロジェクトには、このオプションはないことに注意してください。最小限のデバッグ サポートのほとんどの開発で、より優れたパフォーマンスを求める場合は [Development] を選択します。デバッグ情報を持たず、デバッグの機能 (デバッグ形状を描画、画面上にデバッグ メッセージをプリントなど) がない最終的なビルドのシッピングでは、 [Shipping] を選択します。

Staging Directory

パッケージ化したビルドを格納するディレクトリです。ターゲット ディレクトリの選択時に別のディレクトリを選択すると、このオプションは自動的に更新されます。

Full Rebuild

全コードをコンパイルするか否かを設定します。無効な場合、修正されたコードのみがコンパイルされます。これによりパッケージ化処理が迅速化する場合があります。シッピング ビルドは、ビルド漏れや古いコンテンツを含まないためにも常にフルの再ビルドを実行してください。このオプションはデフォルト設定で有効です。

Use Pak File

個々のファイルまたは単一パッケージとしてプロジェクトのアセットをパッケージ化処理するか否かを設定します。有効な場合、各ファイル全てをコピーする代わりに、全アセットを単一「.pak」ファイルに格納します。プロジェクトにたくさんのアセットファイルがある場合、Pak ファイルを使用した方が配布が容易になる場合があります。転送する必要があるファイル数が減るからです。このオプションはデフォルトで無効になっています。

Generate Chunks

インストールのストリーミングで使用可能な .pak ファイルのチャンクを生成するかどうかを設定します。

Build Http Chunk Install Data

HTTP チャンク インストーラ向けにデータを生成するかどうかを設定します。これにより、ランタイムにインストールするようにウェブ サーバー上でデータをホストすることができます。

Http Chunk Install Data Directory

データをビルドすると保存されるディレクトリです。

Http Chunk Install Data Version

HTTP チャンク インストール データのバージョン名です。

Include Prerequisites Intaller

再配布可能なオペレーティング システムのコンポーネントなど、パッケージ化処理したゲームの前提条件のインストーラを含むかどうかを指定します。

コンテンツのクック

デベロッパーとして新規または修正したゲーム コンテンツをイタレーションする時に、まずステージン グディレクトリへ全てをパッケージ化処理し、その後そこから実行するという冗長な処理を行いたくない場合もあることでしょう。そのような場合、[ File > Cook Content > [プラットフォーム名] ] の順に選択してクリックすることで、パッケージ化処理せずに特定のターゲット プラットフォームのコンテンツのみをクックすることも可能です。

この機能は、プロジェクトのローカルのデベロッパーのワークスペースにあるコンテンツを更新し、ステージング ディレクトリにアセットをコピーしません。イタレーションを迅速に行うために、ローカルのデベロッパー ワークスペースから直接ゲームを実行することができます。

ロード時間を最適化する

オープン ワールドのゲームではロード時間が短いことが不可欠ですが、あらゆるタイプのゲームでもこれは価値があります。アンリアル エンジンでは、パッケージ化処理中のプロジェクトのロード時間を最適化する方法がいくつかあります。ゲームのロード時間を短縮する推奨方法を以下に示します。プロジェクトのパッケージ化処理方法については、ゲームのパッケージングとクック セクションをご覧ください。

Event Driven Loader (EDL) と Asynchronous Loading Thread (ALT) を使用する

  • Asynchronous Loading Thread (ALT) はデフォルトでオフになっていますが、 [Project Settings] メニューの [Engine - Streaming] セクションでオンにすることができます。修正したエンジンでは一部微調整が必要になるかもしれませんが、一般的に ALT はロードを 2 倍速くします。これには事前のロード時間があるゲームと絶えずデータをストリーミングするゲームを含みます。ALT はシリアライズとポスト ローディング コードを 2 つの別個のスレッドで同時に実行することで機能します。その結果、ゲーム コード内の UObject クラス コンストラクタ、 PostInitProperties 関数、および Serialize 関数がスレッドセーフでなければならないという要件が加わります。アクティベートすると、ALT によってローディングが 2 倍速くなります。非同期ローディング (C++) の使用に関する情報は、アセットの非同期ロード のページをご覧ください。

  • Event-Driven Loader はデフォルトでオンになっていますが、 [Project Settings] メニューの [Engine - Streaming] セクションでオフにすることができます。ほとんどのプロジェクトで EDL はロード時間を半分に短縮します。EDL は安定していてアンリアル エンジンの古いバージョンに移植することができます。または改良、カスタマイズしたエンジン バージョン向けに微調整することができます。

EngineStreamingSettings.png

.pak ファイルの圧縮

  • プロジェクトで .pak ファイルの圧縮を使うには、 [Project Settings (プロジェクト設定)] を開いて [Packaging (パッケージ化処理)] セクションを探します。このセクションで、 [Packaging] の見出しの advanced (詳細) 部分を開いて、表示される [Create compressed cooked packages (圧縮されたクック ページの作成) ] のチェックボックスにチェックを入れます。

  • ほとんどのプラットフォームには自動圧縮機能はなく、.pak ファイルを圧縮するとロード時間が短縮しますが、以下のように考慮すべき特殊なケースがあります。

プラットフォーム

推奨

Sony PlayStation 4

.pak ファイルを圧縮することは、PlayStation 4 のすべてのタイトルで自動的に適用される圧縮と重複し、ファイル サイズは減らずにロード時間が長くなってしまいます。従って、PlayStation 4 向けのリリースでは、.pak ファイルの圧縮はお勧めしません。

Nintendo Switch

Switch 上の圧縮した .pak ファイルのロードは時間がかかることがあります。これは、データ解凍に時間がかかるためですが、圧縮ファイルから高速にロードすることもあります。Switch 向けタイトルでは、各タイトルでロード時間をテストし、ケースバイケースで決定を下すことをお勧めします。

Microsoft XBoxOne

XBoxOne プラットフォームでロード時間を可能な限り短縮するには圧縮が必須です。

Steam

Steam ではユーザーがダウンロードしているときにファイルを圧縮します。そのため、最初のダウンロード時間は圧縮されているゲームの .pak ファイルによる影響を受けません。ただし、Steam の差分パッチ システムの方が圧縮されていないファイルの場合はうまく機能します。圧縮 .pak ファイルはカスタマーのシステムの空間を節約しますが、パッチの場合はダウンロード時間が長くなります。

Project Settings - Compress Pak option

.pak ファイルの圧縮を有効にするには、このボックスにチェックを入れます。

.pak ファイルを順序付けする

.pak ファイルを適切に順序付けすることは、ロード時間を短縮するうえで重要です。.pak ファイルを最適に順序付けするために、UE4 にはデータ アセットを必要とする順序を見つけるツール一式があり、高速にロードするパッケージをビルドします。概念上はこのプロセスはプロファイルによる最適化に似ています。.pak ファイルを順序付けするには以下の手順に従います。

  1. パッケージ化したゲームを "-fileopenlog" コマンドライン オプションを使ってビルドし実行します。このオプションは、エンジンにファイルを開く順序を記録させます。

  2. ゲームのすべての主要エリアに対して行ないます。すべてのレベル、プレイ可能なキャラクター、武器、ビークルなどをロードします。すべてがロードされたら、ゲームを終了します。

  3. デプロイしたゲームに GameOpenOrder.log というファイルがあります。これには .pak ファイルの順序を最適化するために必要な情報があります。例えば、Windows のビルドでは、このファイルは WindowsNoEditor/(YourGame)/Build/WindowsNoEditor/FileOpenOrder/ にあります。このファイルを /Build/WindowsNoEditor/FileOpenOrder/ パスの development ディレクトリにコピーします。

    デプロイしたゲームに GameOpenOrder.log というファイルがあります。これには .pak ファイルの順序を最適化するために必要な情報があります。例えば、Mac のビルドでは、このファイルは MacNoEditor/(YourGame)/Build/WindowsNoEditor/FileOpenOrder/ にあります。このファイルを /Build/MacNoEditor/FileOpenOrder/ パスの development ディレクトリにコピーします。

  4. ログ ファイルができたら、.pak ファイルを再ビルドします。これと今後生成される.pak ファイルはログ ファイルに示されているファイルの順序を使用します。

制作環境では、ログ ファイルはソース コントロールにチェックインされ、新しい "-fileopenlog" の実行結果を使って定期的に更新されます。これには、ゲームの出荷準備が整った最終実行が含まれます。