このページは以下のトピックへの知識があることを前提にしています。まず以下のトピックの内容についてご確認をお願いします。
Unreal Engine の ChunkDownloader パッチ適用ソリューションでは、パッケージ ファイルをウェブ サーバーへ配布し、マニフェスト ファイル を作成する必要があります。マニフェスト ファイルは、ユーザーがダウンロードを期待するすべてのファイルと、それぞれの予測されるファイル サイズのリストを含むテキスト ファイルです。
パッチ適用プロセスの開始時に、ChunkDownloader が最初にユーザーのデバイスにダウンロードするものがマニフェストです。マニフェストはこの情報を使用して パッケージ ファイルを 1 つずつリクエストしてダウンロードします。予測されるファイル サイズにより、システムはファイルごとの進捗度を認識することができます。
1. 必要な設定
このガイドでは、「チャンク用のアセットを準備する」と「チャンク用のアセットを準備する」で準備したプロジェクトを使用します。
リファレンス ガイドで記述されているように、次の手順に従います。
Blank テンプレート をベースにして C++ プロジェクト を作成します。このプロジェクトに「PatchingDemo」という名前を付けます。
[Plugins (プラグイン)] メニューで ChunkDownloader プラグインを 有効にします。
[Project Settings (プロジェクト設定)] > [Project (プロジェクト)] > [Packaging (パッケージ化)] で [Use Pak File (pak ファイルを使用)] と [Generate Chunks (チャンクの生成)] を有効にします。
Visual Studio でプロジェクトの「
[ProjectName]Build.cs
」を編集します。Visual Studio プロジェクト ファイルを生成します。
Visual Studio でプロジェクトをビルドします。
Boris、Crunch、Khaimera の Paragon のアセットをこのプロジェクトに追加します。
追加した各アセットの プライマリ アセット ラベル に基づいて データ アセット を調節します。
2.マニフェスト ファイルを作成する
マニフェスト ファイルを作成するには、次の手順に従います。
プロジェクトのベース ディレクトリ内にフォルダを作成し、「PatchingDemoKey」という名前を付けます。この例では、このフォルダのパスは「
PatchingDemo/PatchingDemoKey
」です。「BuildManifest-Windows.txt」というファイルを新たに作成します。
このファイルをテキスト エディタで開きます。最初の行に
$NUM_ENTRIES
フィールドを追加し、その値を追跡するパッケージ ファイルの数と同じに設定します。この例では 9 となります。$NUM_ENTRIES = 9
新しく $BUILD_ID フィールドの行を追加し、値を「PatchingDemoKey」に設定します。この値は、マニフェスト ファイルを配置したフォルダ名と同じでなければなりません。
$BUILD_ID = PatchingDemoKey
次の行には、ダウンロードが必要なパッケージ ファイルの情報が書かれているはずです。各行には、各パッケージ ファイルについて、以下の情報を記述しています。
ファイル名
ファイル サイズ (バイト)。.pak ファイルを右クリックして プロパティ を表示すると見つかります。
ディスク上のサイズ ではなく ファイル サイズ を使用するようにしてください。
バージョン。これは任意の文字列に設定することができます。
インデックス。これは、プライマリ ラベル アセットに使用した チャンク インデックス の値と一致する必要があります。
ファイルのパス、マニフェスト ファイルが配置される場所との相対パスです。
各フィールドは、タブ区切りで同じ行にある必要があります。そうでない場合、正しく解析されません。たとえば、pakchunk1001 の行は次のようになります。
pakchunk1001-Windows.ucas 462081824 ver01 1001 /Windows/pakchunk1001-Windows.ucas
パッケージ ファイルを「
/Windows/PatchingDemo/Content/Paks/
」から「PatchingDemoKey」フォルダのマニフェストと一緒に並んでいる「Windows」という名前のサブフォルダ内にコピーします。
このプロセスは、プロジェクトをパッケージ化するたびに、またはユーザーに提供するファイルの変更が必要となるたびに繰り返す必要があります。このサンプルにおける最終的なマニフェスト ファイルは、次のとおりです。
$NUM_ENTRIES = 9
$BUILD_ID = PatchingDemoKey
pakchunk1001-Windows.ucas 462081824 ver01 1001 /Windows/pakchunk1001-Windows.ucas
pakchunk1002-Windows.ucas 928512432 ver01 1002 /Windows/pakchunk1002-Windows.ucas
pakchunk1003-Windows.ucas 944181856 ver01 1003 /Windows/pakchunk1003-Windows.ucas
pakchunk1001-Windows.utoc 426692 ver01 1001 /Windows/pakchunk1001-Windows.utoc
pakchunk1002-Windows.utoc 606278 ver01 1002 /Windows/pakchunk1002-Windows.utoc
pakchunk1003-Windows.utoc 581683 ver01 1003 /Windows/pakchunk1003-Windows.utoc
pakchunk1001-Windows.pak 339 ver01 1001 /Windows/pakchunk1001-Windows.pak
pakchunk1002-Windows.pak 339 ver01 1002 /Windows/pakchunk1002-Windows.pak
pakchunk1003-Windows.pak 339 ver01 1003 /Windows/pakchunk1003-Windows.pak
チャンク インデックス 0 のファイルも「[Build_Folder]/Windows/PatchingDemo/Content/Paks
」に配置されています。マニフェストファイルにそれらの情報を追加し、PatchingDemoKey にコピーする必要はありません。
3.ファイルをローカル テスト サーバーでホスティングする
ファイルをパッケージ化したので、ゲームがファイルをダウンロードできるようにサーバー上でホスティングする必要があります。また、ChunkDownloader に、サーバーの場所を指示する必要があります。デモンストレーション用に、この例では簡単なローカル ウェブサイトの設定方法を示します。
Windows エクスプローラーで [Start Menu] を開き、[Turn Windows Features on or off (Windows の機能の有効化または無効化)] を検索して開きます。
[Windows Features] メニューで、[Internet Information Services (インターネット情報サービス)] を有効にして [OK] をクリックします。
[Internet Information Services Manager (IIS Manager)] を開いて [Directory Browsing (ディレクトリをブラウズ)] を有効にします。
ウィンドウの左側にある [Connections] メニューで、PC-[User] をクリックします。
PC-[User] メニューで、[MIME Types] をダブルクリックします。
[MIME Types] メニューで [Add] をクリックします。
[Add MIME Type] ウィンドウで [File Name extension] を
.pak
に設定し、[MIME type] を「application/octet-stream」に設定します。.ucas
と.utoc
にも同様の操作をします。これにより、IIS はリクエストされると、ただファイルをダウンロードします。
[Default Web Site] フォルダに移動します。デフォルトでは「C:\inetpub\wwwroot」です。フォルダを作成し、「PatchingDemoCDN」という名前を付けます。
「PatchingDemoKey」フォルダを「PatchingDemoCDN」にコピーします。
プロジェクトの
DefaultGame.ini
ファイルを開き、次の情報を追加して CDN Base URL を定義します。[/Script/Plugins.ChunkDownloader PatchingDemoLive] +CdnBaseUrls=127.0.0.1/PatchingDemoCDN
この URL は、ファイルが配置されているウェブサイトを ChunkDownloader に示しています。PatchingDemoLive 修飾子により、ターゲットのプラットフォームに応じて様々な CDN デプロイ コンフィギュレーションを使用できます。
このサンプルで使用している URL は、前述の手順で設定したローカル ウェブサイトのみを示しています。ローカル エリア ネットワークやリモート CDN を使用してサーバーに接続しようとする場合は、追加のコンフィギュレーションやセキュリティが必要になります。
最終結果
アセットをパッケージ ファイルに分割し、ローカル ウェブサイトにステージングできたので、Unreal Engine でパッチ適用ソリューションを使用してアクセスすることができるようになりました。