コンテンツの更新プログラムの作成、調査、テスト
概要
このドキュメントでは、コンテンツの更新プログラムの配信方法、更新プログラムの生成と測定に使用するツール、予期される最適な動作を保証するために主な更新シナリオをテストする方法の詳細について説明します。
コンテンツの更新プログラムのしくみ
ゲーム サービスは、ゲーム パッケージの更新プログラムを提供するときに転送する必要があるバイト数を常に最小限に抑えます。これには、ゲーム デバイスを使用するユーザーへの転送と、パッケージのアップロード時の開発者からの転送の両方が該当します。 この違い ("デルタ") は、2 つのパッケージ間の 4KiB セグメントの一致を最大化しようとするアルゴリズムを使用して計算されます。
このデルタは、ネットワークからダウンロードする必要があるバイト数と、既存のパッケージ バージョンに適用する方法を正確に把握するためにシステムが使用する .xsp (更新プログラム ストリーミング プラン) ファイルの一部としてエンコードされます。
そのため、開発中の正確なデルタ更新動作をシミュレートしてテストするには、パッケージの作成に適切な makepkg
オプションを使用し、パッケージをインストールおよび更新するための適切なコマンドを使用する必要があります。
以前のパッケージ バージョンに基づいて更新プログラムを作成する
makepkg
パックはパッケージの作成に使用されます。
前のパッケージを利用するパッケージを作成するには、/priorpackage
パラメーターを使用します。
makepkg pack /f chunks_layout.xml /d [build directory] /pd .\output /priorpackage [previous version].xvc
前のパッケージは、microsoftgame.config で定義されているように、作成するパッケージと同じパッケージ ID を共有する必要があります。
このコマンドの結果、[new package name]_update-[old version number].[guid].xsp
という名前の .xsp ファイルを取得します (41336MicrosoftATG.ATGGameHubRequiredGame_200.0.0.0_neutral__dspnxghe87tn0_xs_update-100.0.0.0.5890f4a0-b449-4c5d-80ff-b78b19ed3439.xsp など)。
これは、古いパッケージから新しいパッケージに更新するときに変更する必要がある内容をエンコードするストリーミング プランです。 この使用方法については、以下の「更新プログラムのテスト」セクションで説明します。
更新プログラムのサイズを調べる
上記のコマンドを実行すると、同じファイル名を持つファイル (.html ファイイルと .json ファイル) が追加で生成されます。
どちらにも次のものが含まれます:
- 更新プログラムの一部としてダウンロードされるバイトの概要
- 特定のタグ、言語、またはデバイスの種類ごとにインストールされるデータの量をまとめたテーブル
- 更新されるバイト数と、それが表すファイル全体のサイズの割合を示す、並べ替え可能なファイルのテーブル
- 100% 更新されていないファイルごとに、更新される各ファイル内のデータ範囲を示す個々のテーブルにリンクされます。
この情報により、更新プログラムで最も変更されたファイルを特定し、個々のファイルを確認して、変更の割合と場所が予期していたとおりかどうかを確認できます。 通常よりも大きな更新が行われるように見えるファイルが見つかった場合、「更新プログラムを効率的に作成する認可が必須です」セクションにあるガイドラインをご確認ください。
2 つの .xvc ファイルの packageutil compare
でもこれらの同じファイルが生成され、パッケージの相違点の概要出力が提供されます。このコマンドでは、.xsp ファイルも生成されます。
デルタのアップロード
パートナー センターへのアップロードでは、デルタ計算アルゴリズムが自動的に利用されます。 最後にアップロードしたパッケージ (そのブランチ) とアップロードするパッケージの間のデルタが最初に計算され、変更されたデータのみがアップロード マシンからインジェスト サービスに転送されます。
アップデートのテスト
システム UI に表示される更新プログラムのサイズを検証するには、次の手順を実行します:
-
xbapp install
[古いバージョン.xvc] -
xbapp update
[新しいバージョン.xvc](/plan=
[.xsp ファイル])
更新時にシステム UI の [キュー] に移動して、更新されているバイト数のわかりやすい表示を確認します。
/plan パラメーターは、.xsp が以前に他のコマンドによって生成されており、.xvc ファイルと同じ場所にある場合は省略可能です。
PC では、代わりに wdapp
コマンドが使用され、パッケージ ファイルには .msixvc ファイル拡張子があります。また、インストールと更新の進行状況は Xbox アプリと Microsoft Store アプリの両方のダウンロード キュー セクションで確認できます。
wdapp update
で /plan パラメーターはサポートされていません。ターゲット バージョン用に .xsp ファイルが作成された場合、生成されたそのファイルが使用されます。
更新プログラムを公開する
更新プログラムの公開は、ゲームで更新プログラムを入手可能にするという点で若干異なります。これにより、特定のシステム動作が発生します。
入手可能な更新プログラムを公開するには、xbapp
/wdapp
更新プログラムに /m
または /a
フラグを適用します。
これにより、ゲームが起動するまで更新プログラムが適用されません。
"これ" が発生した場合:
- 本体: 更新が必要であることを示すシステム ダイアログが表示されます
- PC: 開発ビルドの場合、システム プロンプトは表示されず、ビルドを自由に起動できます。ただし、ビルドが
wdapp install
/bootstrapper と一緒にインストールされている場合を除きます。 その場合は、ゲームを起動すると PC ブートストラッパーが呼び出されます。これにより、更新プログラムが検索され、プロンプトが表示されます。
また、更新プログラムを公開すると特定の XStore
API が反応し、ゲームも入手可能な更新プログラムを検出できるようになります。これは DLC パッケージに最も関係があります。 詳細については、「更新プログラムの確認」をご覧ください。
Store パッケージの更新プログラム
上記の例では、ローカル パッケージのインストールと更新が含まれます。 パートナー センターにアップロードされ、Store CDN からダウンロードされたパッケージで更新をテストすることが望ましい場合があります。 これにより、2 つのことが検証されます。Store から更新するときのパフォーマンスと、インジェスト プロセスの一部として生成されるストリーミング プランの利用です。
残念ながら、署名の違いにより、ローカル パッケージから Store パッケージに更新することはできません。 追加のヘルプなしで可能なのは、1 つのバージョンを (パートナー センターに) アップロードし、このバージョンを Store アプリから 1 つ以上の開発キットにインストールすることです。 新しいバージョンをアップロードし、発行されたら、以前のバージョンがインストールされている開発キットで新しいバージョンが検出され、予期されるデルタ サイズで更新できることを確認します。
このテストを繰り返すには、更新する前に、古いバージョンのインストールを外部ドライブにコピーして、後で新しいバージョンにコピーできるようにします。
これが保存されていない場合は、古いバージョンを xbapp
/wdapp install
できる CDN URL を要求できます。 サポートが必要な場合は、Microsoft の担当者にお問い合わせください。
古いバージョンがインストールされたら、更新テストを繰り返すことができます。
ハイブリッド ディスク +CDN 更新プログラム
更新は、光ディスクのインストールにも関連します。 ディスクのインストールが行われると、入手可能な最新のデジタル パッケージに対して変更のないディスク コンテンツがディスクからインストールされます。残りは Store CDN から同時にインストールされます。 これは自動的に行われます。
これをシミュレートするには、次のコマンドを使用します:
xbapp update http://server/[latest version].xvc /p:[disc package].xvc`
HTTP サーバーを介して更新プログラム パッケージを提供することは、インストールでは開発用 PC のローカル ストレージから 1 つのソースしか持つことができないという事実に対する回避策です。
ディスク パッケージは、ディスク .xvc パッケージを使用してテスト ディスクを書き込んだ場合、光ディスク パスを指すことができます。