パッチ処理中、エンジンはクック後のすべてのコンテンツを、リリースされた元のクックされたコンテンツと比較して、その結果に基づいて何をパッチに含めるかを決定します。コンテンツの最小単位は単一のパッケージ (.ulevel や .uasset など) です。パッケージ内で何かが変化すると、パッケージ全体がパッチに含まれます。パッチの PAK (.pak) ファイルをユーザーに提供する方法は配信プラットフォームによって異なりますが、ここで紹介する手順を使うと、更新されたコンテンツのみを含む小さな PAK ファイルを作成できます。
リリースにバージョンを付けて、以前にリリースしたプロジェクトをパッチ処理できます。次の点に留意してください。
リリース時にシリアル コードのパスをロックする。
リリースしたクック済みのコンテンツを保持する。UnrealPak ツールはそれを使って、パッチのパッケージ ファイルにどのコンテンツを含めるかを決定します。
ランタイム時に、両方の PAK ファイルをマウントして、パッチ ファイルの優先度を高くすることで、パッチ ファイルにあるコンテンツが先に読み込まれるようにする。
Unreal Engine 4 (UE4) で作成したプロジェクトにパッチ処理を行うには、複数の方法があります。ここで紹介する方法はプラットフォームに依存しないものです。理論上はどのプラットフォームでも使用できます。ただし、この方法を意図的に使用するプラットフォームは、Windows と Xbox One の 2 つのみになります。ほかのプラットフォームには固有のパッチ処理方法があります。プラットフォーム固有の方法については、開発対象のプラットフォーム向けのセクションでドキュメントを確認してください。
ここで紹介する方法では、すべての古いファイルを保持して、単に最新のファイルを参照するようにゲームに指示をするので、データ ストレージを大量に使用します。プラットフォーム固有の方法では、多くの場合でストレージの使用容量が少なくなります。
プロジェクト ランチャーを使ったパッチの作成方法
ここでは例として、サンプルのシューターゲーム向けのパッチを作成します。パッチで武器の容量とマガジン サイズを変更します。学習のために、自分が開発している実際のリリース ビルドではなく例を見ながら進めたい場合は、次の手順に従ってください。
サンプルの シューターゲーム をダウンロードします。 Epic Games Launcher の [Learn (ラーニング)] タブに移動して、[Games] セクションまで下にスクロールします。 [Shooter Game (シューターゲーム)] をクリックして、指示に従ってダウンロードします。
ダウンロードしたシューターゲーム プロジェクトを使って、ドキュメントの プロジェクトをパッケージ化する ページの指示に従います。サンプルのゲームのシッピング リリース ビルドができあがります。
サンプルに変更を加えるために、次の手順を実行します。
ツール バーから、 [Blueprints (ブループリント)] - [Open Blueprint Class (ブループリント クラスを開く...)] の順に選択して、検索フィールドに WeapGun と入力します。リストに [WeapGun] が表示されたら、クリックしてそのクラスを開きます。
[Config] セクションを展開して開きます。次のように値を変更します。
パラメータ
初期値
変更後の値
Max Ammo
250
50
Ammo Per Clip
500
100
[Save (保存)] ボタンをクリックして、WeapGun クラスを閉じます。
パッチのテスト用の起動プロファイルの作成
ベースのビルドができたので、プロジェクト ランチャー内でパッチ用の起動プロファイルを作成します。パッチのテスト バージョン用に 1 つ、実際のパッチ リリース用に 1 つ起動プロファイルを作成してもいいでしょう。
[Windows (ウィンドウ)] - [Project Launcher (プロジェクトランチャー)] の順に選択して プロジェクトランチャー を開きます。
[+] ボタンを押して、 カスタム起動プロファイル を新規作成します。この最初の起動プロファイルは、パッチのテスト バージョン専用とします。そのことがはっきりとわかるように 名前 と 説明 を入力します。
クリックしてフルサイズで表示
プロジェクト ランチャーには、起動プロファイルのカスタマイズに利用できる設定がいくつかあります。[Advanced Settings (詳細設定)] のドロップダウン メニューをクリックすると、各設定を細かくカスタマイズできます。また、[Cook (クック)]、[Package (パッケージ)]、[Deploy (デプロイ)] のセクションでトップのドロップダウンをクリックすると、選択した内容によって利用できるオプションが変化します。
クリックしてフルサイズで表示
起動プロファイルのセクション名
詳細設定の説明
[Project (プロジェクト)]
プロジェクトを参照して、特定のプロジェクトを使用するように指定するか、[Any Project (任意のプロジェクト)] を使用して現在のプロジェクトにパッチを適用できます。
[Build (ビルド)]
[DebugGame (デバッグゲーム)]、[Development (デベロップメント)]、[Shipping (出荷)] の選択肢があります。[Advanced Settings (詳細設定)] のドロップダウンをクリックすると、パッチ処理の一部として Unreal Automation Tool (UAT) をビルドできます。
[Cook (クック)]
ドロップダウンをクリックして、[Cook by the Book (バイザブック)]、[Cook on the Fly (オンザフライ)]、[Do Not Cook (クックしないでください)] から選択します。[Advanced Settings (詳細設定)] のドロップダウンからは、[Only Cook Modified Content (修正済みコンテンツだけをクックします)] を選択できます。[Cook by the Book (バイザブック)] を選択した場合、[Advanced Settings (詳細設定)] に [Release/DLC/Patching (リリース・DLC・パッチの設定)] が追加されて表示されます。
[Package (パッケージ)]
[Package and Store Locally (ローカル環境にパッケージ化および格納)]、[Package and Store in Repository (レポジトリにパッケージ化および格納)]、[Do Not Package (パッケージ化しないでください)] から選択します。
[Archive (アーカイブ)]
ビルドをアーカイブする場合、このセクションのチェック ボックスにチェックを入れます。
[Deploy (デプロイ)]
[Copy to Device (デバイスにコピー)]、[Copy Repository (レポジトリをコピー)]、[File Server (ファイルサーバー)]、[Do Not Deploy (デプロイしないでください)] から選択します。
[Launch (起動)]
[Using Default Role (デフォルトロールを使用)]、[Using Custom Roles (カスタムロールを使用)]、[Do Not Launch (起動しないでください)] から選択します。
起動プロファイルのカスタマイズ
新しい起動プロファイルをカスタマイズするには、次の手順を実行します。
[Project (プロジェクト)] セクションでドロップダウンをクリックしてプロジェクトを参照します。
クリックしてフルサイズで表示
[Build (ビルド)] セクションでドロップダウンをクリックして [Shipping (出荷)] を選択します。パッチ処理の一部として Unreal Automation Tool (UAT) をビルドする必要がある場合、ビルド マシン上にパッチを作成するので、[Advanced Settings (詳細設定)] を展開します。
クリックしてフルサイズで表示
[Cook (クック)] セクションでドロップダウンをクリックして [By the Book (バイザブック)] を選択します。すると、[Cooked Platforms (クックしたプラットフォーム)]、[Cooked Cultures (クックしたカルチャー)]、[Cooked Maps (クックしたマップ)] が表示されます。プロジェクトのクックの設定を確認します。
クリックしてフルサイズで表示
クックの設定によって、このパッチでプロジェクト内のどのコンテンツをクックするかを決め、そのコンテンツが元のパッケージ ファイルと比較されます。
矢印をクリックして [Release/DLC/Patching (リリース・DLC・パッチの設定)] を展開します。
クリックしてフルサイズで表示
[Release version this is based on] の下にリリース バージョンを入力します。それから [Generate Patch (パッチを生成)] にチェックを入れます。
クリックしてフルサイズで表示
矢印をクリックして [Advanced Settings (詳細設定)] を展開します。次のボックスにチェックを入れます。プロジェクトの配布方法に応じて、必要なものがほかにあればそれらにもチェックを入れてください。
[Compress Content (コンテンツを圧縮)]
[Save Packages Without Versions (バージョン情報なしでパッケージを保存する)]
[Store All Content in a Single File (UnrealPak) (すべてのコンテンツを単一ファイル(UnrealPak)に格納します)]
クリックしてフルサイズで表示
また、[Advanced Settings (詳細設定)] で [Cooker Build Configuration (クッカービルド設定)] のドロップダウンをクリックして、[Shipping (出荷)] を選択します。
クリックしてフルサイズで表示
[Package (パッケージ)] セクションでドロップダウンをクリックして、[Package and Store Locally (ローカル環境にパッケージ化および格納)] を選択します。デフォルトでローカルのディレクトリが入力されます。変更するには [Browse (ブラウズ...)] をクリックして、パッケージを保存するディレクトリを選択します。
クリックしてフルサイズで表示
[Deploy (デプロイ)] セクションでドロップダウンをクリックして、[Do Not Deploy (デプロイしないでください)] を選択します。
クリックしてフルサイズで表示
[Do Not Deploy (デプロイしないでください)] を選択してパッチをテストします。パッチをテストして、シッピング バージョンをビルドする準備ができたら、このセクションの手順を実行して、別のデプロイ方法を選択します。
パッチのテスト バージョンの起動
右上端の [Back (戻る)] ボタンでメインのプロファイル ウィンドウに戻ります。
クリックしてフルサイズで表示
パッチ のプロファイルの横にある起動アイコンをクリックします。
クリックしてフルサイズで表示
プロジェクト ランチャーが、ビルド、クック、パッケージ化の処理を行います。処理時間は、プロジェクトの複雑さによって異なります。
クリックしてフルサイズで表示
処理が完了したら、ウィンドウを閉じるか [Done (完了)] をクリックします。
クリックしてフルサイズで表示
パッチのシッピング用の起動プロファイルの作成とカスタマイズ
[+] ボタンを押して、 カスタム起動プロファイル を新規作成します。このプロファイルはパッチのシッピング用です。そのことがはっきりとわかるように 名前 と 説明 を入力します。
起動プロファイルのカスタマイズ セクションの手順 1 ~ 11 を行います。テスト バージョンとシッピングするものが大きく異なる場合、必要に応じてカスタム設定を変更します。
[Deploy (デプロイ)] セクションでドロップダウンをクリックして、使用するデプロイ オプションを選択します。
シッピング用の起動プロファイルを作成したら、パッチのテスト バージョンの起動 セクションの手順を行います。
コマンド ラインを使ったパッチの作成方法
プロジェクト ランチャーは、プロジェクト用にプラットフォームに依存しないパッチを作成する唯一の選択肢ではありません。コマンドラインからの命令で UAT を使ってパッチを作成することもできます。
まず、ベース ビルドを作成する必要があります。おそらくシッピング ビルドになるでしょう。このビルドを作成するには、コマンド ライン パラメータ、-Createreleaseversion=<releasenumber>
を使用する必要があります。これでプロジェクトのバージョン 1.0 を作成します。
例:
BuildCookRun <normalbuildcookrunarguments> -build -cook -stage -pak -createreleaseversion=1.0
こうすると、<ProjectPath>\Releases\1.0\
ディレクトリにビルドが保存され、パッチを生成する際に必要となります。
番号を付けたベース ビルドができたら、その以前のビルドに基づくパッチを作成できます。このパッチを作成するには、コマンド ライン パラメータ、-basedonreleaseversion=<releasenumber>
を使用する必要があります。
例:
BuildCookRun <normalbuildcookrunarguments> -build -cook -stage -pak -generatepatch -basedonreleaseversion=1.0
パッチのインストール
プラットフォームに依存しないパッチ処理プロセスでは、PAK ファイルを [ProjectName]\Saved\StagedBuilds[PlatformName][ProjectName]\Content\Paks
ディレクトリに作成します。プロジェクトの作成対象となるプラットフォームによっては、ユーザーに配布する必要がある新しいコンテンツや変更されたコンテンツが PAK ファイルに含まれることがあります。たとえば Windows では、インストーラーを作成して、PAK ファイルをユーザーの [ProjectName]\Releases[VersionNumber][PlatformName]
フォルダにコピーして、元のコンテンツの PAK ファイルのそばに置きます。
パッチの PAK ファイルは、FPakPlatformFile::GetPakFolders
で設定される PAK の検索ディレクトリのいずれかにあるデバイスにあると、自動的にマウントされます。パッチに優先度を付けるために、マウント システムはファイル名の末尾に _p
があるものをほかの PAK よりも優先します。ファイル名はリネームできますが、末尾に _p.pak
と付ける必要があります。
同じリリース バージョンから 2 つのパッチをビルドすると、どちらも完全なパッチであるため、2 つめのパッチのインストール中に最初のパッチを削除する必要があります。