次の方法で共有


タイトルのパッケージ化、コンテンツ アップデート (CU)、ストリーミングインストールのテスト

このトピックでは、ローカルでの反復処理、パフォーマンスの検証、提出前のテスト、最終提出で使用するストリーミング インストールのためのパッケージを作成する方法について説明します。 パッケージ化プロセス中に MakePkg ツールによって実行されるステップと、開発中にパッケージ化とストリーミング インストールをテストする際の推奨手順について説明します。

概要

MakePkg.exe は、コンテンツを Xbox 仮想コンテナー (XVC) と呼ばれるバイナリのファイルにパッケージ化するツールです。 本体用の XVC のファイル名拡張子は .xvc であり、PC 用は .msixvc です。 拡張機能の違いに加えて、Xbox One ファミリ (_x) と Xbox Series X|S ファミリ (_xs) のパッケージを区別するために、パッケージ名にサフィックスが追加されました。

MakePkg.exe では、タイトルのコンテンツおよびマッピング ファイルを入力として使用し、既知のテスト キー、ランダムに生成されたキー、または暗号化に安全な安定キーのいずれかを使用して暗号化されたパッケージを生成します。 暗号化に使用されるキーは、パッケージの用途がローカルでのテストなのか、Microsoft に提出して公開するためなのかによって決まり、以下で詳しいユース ケースを示しています。

マッピング ファイルの XML には、2 つの目的があります。 まず、実行時にタイトルから利用できるファイルの場所を指定します。 第 2 に、各ファイルが属しているチャンク ファイルを指定します。 起動セットと呼ばれるチャンクの集合は常に、タイトルの実行が許可される前にインストールされます。 残りのチャンクはタイトルの実行中にインストールされます。 チャンク インストールの進行状況をクエリしたり、まだインストールされていないチャンクのインストール順序を変更したりするための API が用意されています。

このトピックの内容は以下のとおりです。

パッケージ化中のステップ

MakePkg によるパッケージ化プロセスは、いくつかのステップに分割できます。

MicrosoftGame.config とファイル存在検証

MakePkg コマンドでは、コンテンツ ソース ディレクトリにある MicrosoftGame.config ファイルが有効であり、正常にインストールされることが検証されます。

MakePkg pack コマンドを実行すると、MicrosoftGame.config の内部で参照されているファイルが起動セットに確実にパッケージ化されるように、それらのファイルがソース ディレクトリに存在していることを確認することで、ファイルが検証されます。 これにはバイナリ、イメージ ファイル、その他のあらゆるリソースが含まれます。

バイナリの署名

タイトル内のファイルは、Xbox Code Integrity (XCI) を使用してスキャンおよび署名されます。 このプロセスの途中、ファイル内で検出された PE ヘッダーが、パッケージ ファイルに書き込まれる前に修正されます。 署名に失敗した場合、エラー メッセージが報告されると共に、署名エラーについての詳細を収集するために xcihash.exe を手動で再実行するためのコマンドが通知されます。

パッケージ作成

MakePkg による検証前のステップが完了すると直ちに、パッケージ ファイルが作成されます。 MakePkg ではその後、署名済み実行可能ファイルを含むソース ファイルが、XML マップ ファイルによって指定されているチャンク内のパッケージ ファイルにコピーされます。

注意

本体のみ: パッケージ作成の最終ステップでは、GameOS ファイル (GameOS.xvd) の埋め込みが行われます。 このファイルは、GDK の一部であり、ゲームの実行可能ファイルの横のレイアウト ディレクトリ内にある必要があります。 /gameos フラグを使用すると、GameOS ファイルの別のソースの場所を指定できます。

暗号化

テストの署名 (/lt) ランダム キー (/l) 安定キー (/lk SECRET.LEKB)
差分アップロード はい いいえ はい
packageutil compare はい いいえ はい
セキュリティで保護されたアップロード いいえ はい はい
停止時のパッケージ保護 いいえ はい はい
開発キットでサイドロード はい いいえ はい
PC でサイドロード はい いいえ いいえ

テスト署名 (既定の暗号化)

既定の MakePkg 動作は、テスト署名されたパッケージを作成することですが、 makepkg packを呼び出すときに /lt スイッチを使用する場合にも示されます。 テスト署名では、生成されたパッケージ ファイルが既知の暗号化キーを使用して暗号化されます。この暗号化キーは、Xbox や PC で実行するパフォーマンス テスト検証用のものです。 リアルタイムのパッケージ復号化の影響はタイトルに対して透過的であるように設計されていますが、これにより、暗号化が原因で生じる可能性があるパフォーマンスの問題が、タイトルのサーティフィケーションと最終的なマスタリングの前に発見されることが保証されます。 暗号化では固定キーが使用されるため、テスト署名付きのパッケージでは、暗号化によってコンテンツをセキュリティ保護する目的での使用は意図されていません。 テスト署名付きパッケージは、xbapp install を使用して開発キットにインストールすることも、wdapp install を使用して開発用 PC にインストールすることもできます。

ランダム キー暗号化 (/l スイッチ)

MakePkg /l スイッチを指定すると、ランダムに生成される暗号化キーを使用してパッケージ ファイルが暗号化されます。 MakePkg /l では、タイトル パッケージだけでなく、PackageFullName_licenseName_GUID.EKB という形式の名前を持つファイルが出力されます (アンダー スコア (_) 文字の使用に注意してください。) /l スイッチを使用して作成したパッケージは、開発キットまたは開発用 PC にはインストールできません。 タイトルがすべてのチェックと提出前のテストに合格するまで、テスト署名付きパッケージを使用してタイトルをテストしてください。 通過したら、Microsoft への最終提出の前に、/l スイッチを使用して MakePkg を実行します。

Makepkg /lk スイッチは、makepkg genkey コマンドによって作成される安定キー (常に同じキー) を使用してパッケージを暗号化します。 MakePkg /lk では、タイトル パッケージだけでなく、PackageFullName_licenseName_GUID.EKB および PackageFullName_licenseName_GUID.CEKB という形式の名前を持つファイルが出力されます。 (アンダー スコア (_) 文字の使用に注意してください。) /lk スイッチを使用して作成したパッケージは、開発キットにはインストールできますが、開発用 PC にはインストールできません。 PC の場合、タイトルがすべてのチェックと提出前のテストに合格するまで、テスト署名付きパッケージを使用してタイトルをテストしてください。

次のような利点があるため、これは、開発キットのテストと申請に推奨される暗号化モードです。

  1. packageutil compare は、(/l と異なり) 正確な更新サイズの予測を生成できます。
  2. コンソールと PC でコンテンツ更新のダウンロードに使用するのと同じアルゴリズムを使用して、パートナー センターへの差分アップロードをセキュリティで保護された形で実行できます。
  3. これは (/l とは異なり)、開発キットにインストールできます。
  4. これは、セキュリティで保護された暗号化キーを使用し、(/lt とは異なり) 特定の環境でのみ暗号化を解除できます。

/lt および /l の暗号化モードと異なり、/lk モードでは、これを使用するには追加の 1 回限りのステップが必要です。

  1. 1 回限り: makepkg genkey /ekb SECRET_KEY.lekb を実行して SECRET_KEY.lekb ファイルを作成します。 これはローカルのエスクロー キー Blob (LEKB) で、パッケージを暗号化する安定コンテンツ キーを格納します。 これは、必要な人だけがアクセスできる、安全な場所に保存する必要があります。 公式のビルド マシン/アカウントでのみアクセスできることが理想です。
  2. パッケージの作成: makepkg pack /lk SECRET_KEY.lekb ... を実行します。 SECRET_KEY.lekb ファイルに格納されているキーを使用して暗号化されたパッケージが作成されます。
  3. パッケージのアップロード: XVC ファイルと EKB ファイルは、通常と同じ手順でパートナー センターにアップロードされます。 LEKB ファイルと CEKB ファイルはアップロードされません。

xbapp install は、パッケージを ERA 開発キットに読み込むのに必要な CEKB ファイルを自動的にインストールします。 ツールベースのインストール (ゲーム ディスク、外部ストレージ、コンソール間転送) 以外のインストール シナリオをテストしている場合は、xbapp installkey コマンドを使用して CEKB ファイルのみをインストールできます。

Warning

LEKB ファイルの内容はわずかに難読化されているにすぎません。 LEKB ファイルへのアクセスをセキュリティで保護することで、コンテンツ パッケージのセキュリティを確保するのはユーザーの責任です。 makepkg パックによって出力された LEKB ファイルとコンテンツ パッケージ ファイルを所有しているすべてのユーザーがその内容を解読できます。

Warning

CEKB ファイルの内容を使用すると、アクティブな ERA 開発キットにパッケージを読み込むことができます。 CEKB ファイルへのアクセスをセキュリティで保護することで、コンテンツ パッケージのセキュリティを確保するのはユーザーの責任です。 makepkg パックによって出力された CEKB ファイル、アクティブ ERA 開発キット、コンテンツ パッケージ ファイルを所有しているすべてのユーザーがパッケージを開発キットにインストールし、パッケージを起動し、そのパッケージからファイルを xbcp で実行できます。

Important

April 2021 GDK より前に生成された LEKB ファイルは CEKB ファイルを作成しません。 新しい開発キットのサイドロード機能を使用するには、April 2021 以降の GDK ツールで LEKB ファイルを再作成する必要があります。

申請の検証

MakePkg では、パッケージの作成後に、タイトル ファイルに対してサブミッション バリデーター (SubmissionValidator.dll) が自動的に実行されます。 サブミッション バリデーターの目的は、Microsoft での取り込み、マスタリング、またはサーティフィケーションの各プロセスで、あるいは今後のコンテンツ アップデート (CU) で、後からタイトルの問題の原因となる可能性があるエラーや問題がないかをチェックすることです。 検出されたすべての問題を修正してからでないと、パートナー センターにアップロードするための署名済みパッケージを生成できません。

提出検証プロセスでは、エラーの内容および発生箇所が詳細に記録された XML ログ ファイルが生成されます。 このログ ファイルは、MakePkg の /pd パラメーターでパッケージ ファイルの出力先として指定されているのと同じ場所に書き込まれます。 このログにはエラーまたは警告が記録されることがあります。 エラーを解決してからでないと、パッケージを Microsoft に提出できません。 警告については、タイトルがポリシーおよび Xbox 認定要件 (XR) ガイダンスに準拠することを保証するために、適切な処置を検討してください。

パッケージがパートナー センターにアップロードされてマスタリング プロセスに送られるとき、検証チェックが再び実行されます。 これにより、サブミッション バリデーターの最新バージョンを使用してタイトルがチェックされるため、あらゆる問題の早期発見が保証されます。

サブミッション検証テスト

サブミッション検証テスト 説明
外部ファイル 禁止されているファイルがタイトルに含まれていないことを検証します。 禁止ファイルに含まれるのは、ソース ファイルとデバッグ ファイル (例: *.c、*.cpp、*.obj、*.lib、*.cs、*.h)、そしてゲーム OS ボリュームに含まれているすべてのシステム ファイルです。
MicrosoftGame.config MakePkg によって実行されない各種の構成チェック:
  • ロゴや起動画面のイメージの解像度とビット深度
  • パッケージで適切な MOD のサポートをチェックする (PC デスクトップのみ)
バイナリ スキャンすべての .exe ファイルと .dll ファイルは、リテール以外の依存関係をスキャンされます。 マネージド コード バイナリは、エラーの原因となります (本体のみ)。 他に検出される問題には、Xbox 以外の実行可能ファイル (本体のみ) や、32 ビットの実行可能ファイル (本体のみ) などがあります。

テストの中には、新しい問題が特定されるたびに内容が変わっていくものがあります。 サブミッション バリデーターのチェックに合格する場合でも、取り込みやサーティフィケーションのプロセス中にタイトル サブミッションに関してその他の問題が発生しないことを示すものではありません。 むしろ、その目的は、予測可能なエラーによって却下されることでかかる時間とコストを削減することでしかありません。 さらに、サブミッション バリデーターはセキュリティに関連する特定の問題をチェックする場合がありますが、それをタイトルのセキュリティ テストと捉えないでください。

サブミッション バリデーターの最新バージョンは、Xbox Game Developer (XGD) のサイトからダウンロードできます。 ツールは Xbox One ソフトウェア開発キット リリースと異なるペースで更新される場合があるため、検証エラーによるサブミッション プロセスでの却下を避けるために、最新のバージョンを使用するようにしてください。 最新バージョンを入手するには、Xbox Developer Downloads->Xbox One->Submission Validator を参照してください。

サブミッション バリデーターの詳細については、GDK ドキュメントの「サブミッション バリデーター (SubmissionValidator.dll)」を参照してください。

検証プロセスに関するご意見、ご質問については、担当のデベロッパー アカウント マネージャー (DAM) にお問い合わせください。

開発中にパッケージを作成する場合は、次の手順をお勧めします (PC を対象とする場合は、xbapp ではなく wdapp を使用します)。

  1. テスト署名付きパッケージと xbapp install を使用して、開発用 PC からローカルで反復処理を行います。
    MakePkg.exe pack /fMapfile/dLooseContentDir/pdOutputFolder
    開始するには、「ストリーミング インストール 」(Developer Education Materials >All NDA サンプル) を参照してください。
  2. シェルから起動または xbapp launch を使用することによってタイトルを実行します。
    xbapp installlocal-XVC-path または xbapp installhttp-URI
    ストリーミング インストールの別のオプションをテストするには、このトピックで後述する「ストリーミング インストール パッケージのテスト」を参照してください。
  3. ルート フォルダーでブルーレイ ディスクに書き込まれたテスト署名付きパッケージを使用して、光学ディスク ドライブからタイトルのインストールをテストします。 Xbox One 開発キットにディスクを挿入したら、次を実行します。
    * xbapp install XO:*XVC-file-name
  4. テスト署名付きパッケージと同じパッケージ化コマンドと、/l フラグを使用して最終提出の準備を進めます。

ストリーミング インストール パッケージのテスト (PC)

wdapp コマンドを使用して、テスト PC にパッケージをインストールします。

注意

現在、テスト MSIXVC パッケージは、テスト PC 上の物理ドライブまたは Web サーバー上にある必要があります。 今後の更新で、汎用名前付け規則 (UNC) 共有からのインストールが追加されます。

詳細については、「PC 用のパッケージ化を開始する」を参照してください。

ストリーミング インストール パッケージのテスト (本体)

テスト署名付きのストリーミング インストール パッケージのインストールをテストするには 4 つの方法があります。

開発用 PC からのストリーミング

開発用 PC からのストリーミングでは、スループット調整は一切サポートされません。 インストールの速度は、開発用 PC のプロセッサと I/O 特性、および開発用 PC と開発キット間のネットワーク接続の帯域幅に依存します。 物理的なハード ドライブを搭載した最新の開発用 PC では、ギガビット イーサネット接続を経由する場合で 300 Mbps (約 36 MiB/秒) 以上の速度が期待できます。

xbapp installdev-pc-path-to-XVC

Web サーバー上でパッケージをホストする

Web サーバーが帯域幅調整の構成をサポートする場合、Web サーバー上でパッケージをホストするとさまざまなネットワーク配信速度のシミュレーションが可能になります。 接続障害と再試行ロジックは、Xbox One プラットフォームによって処理されます。 インターネット ソースからインストールする場合のタイトルの動作は、速度の点を除いて、光学ディスクからのインストール時と同様です。

xbapp installhttp-URI-to-package

パッケージをディスクに書き込み、コマンド ラインからインストールする

ルート ディレクトリにある XVC を光学ディスクに書き込み、次のコマンドを使用してパッケージをインストールします。

xbapp install XO:*xvc-file-name*

パッケージをディスクに書き込み、シェルを通じてインストールする

パッケージを格納する MSXC という名前のフォルダーを光学ディスクに書き込みます。

実行中の開発キットにディスクを挿入します。 シェルによって自動的にタイトルのインストールが開始され、起動セットがインストールされてタイトルが起動可能になると、開発キットに通知が表示されます。

ベスト プラクティス

サブファイルのコンテンツ アップデート (CU) を使用する

サブファイルのコンテンツ アップデート (CU) を使用して、コンテンツ アップデート (CU) のサイズを小さくします。 将来のコンテンツ アップデート (CU) が最適になるようにパッケージ レイアウトを作成します。

最適なアップデートのためのパッケージ作成の詳細については、「コンテンツ更新のベスト プラクティス (NDA トピック)認可が必須です」を参照してください。

Xbox 要件 034 (XR-034: 初期プレイ マーカーのストリーミング インストール) をお読みください。

初期プレイヤー マーカーを含めることは省略可能ですが、強くお勧めします。 これにより、ユーザーは完全にインストールされる前にタイトルを実行でき、インストールはバックグラウンドで続行されます。 XR-034 :ストリーミング インストール初期プレイヤー マーカー。初期プレイ マーカーを含むタイトルは、初期プレイ マーカーから起動したときにゲームプレイ エクスペリエンスを提供する必要があります。

タイトルをテストする

ソースおよび速度をさまざまに変えてインストールすることで、インストール中のタイトルをテストします。

最新のサブミッション バリデーターを使用する

常に最新バージョンのサブミッション バリデーターを使用します。

サブミッション バリデーターの最新バージョンは、 Xbox Developer Downloads ->Xbox One->Submission Validatorから入手できます。

リソースとガイダンス

以下のドキュメントには、理解しておくことが望ましい有益な基本情報が含まれています。

関連項目

MicrosoftGame.config
サブミッション バリデーター (SubmissionValidator.dll)
サブミッション バリデーターによる品質テスト