概要
この記事では、コンテンツ更新の配信方法、更新の生成と測定に使用するツール、そして予期される最適な動作を確保するために主要な更新シナリオをテストする方法について説明します。コンテンツ更新の仕組み
ゲーミング サービスは、ゲーム パッケージへの更新を提供する際に転送する必要のあるバイト数を常に最小化します。この最適化は、ゲーム デバイス上の顧客と、パッケージをアップロードする開発者の両方に適用されます。システムは、高レベルでは 2 つのパッケージ間の 4-KiB セグメントの一致を最大化しようとするアルゴリズムを使用して、この差分 (delta) を計算します。 システムは、この差分を.xsp (更新ストリーミング プラン) ファイルの一部としてエンコードします。これらのファイルを使用することで、システムはネットワークからどのバイトをダウンロードすればよいか、そしてそれらをどのように既存のパッケージ バージョンに適用すればよいかを正確に把握できます。
開発中に正確な差分更新の動作をシミュレートしてテストするには、パッケージを作成するときに適切な makepkg オプションを使用します。また、パッケージのインストールと更新には適切なコマンドを使用します。
以前のパッケージ バージョンに基づいて更新を作成する
makepkg pack を使用してパッケージを作成します。以前のパッケージを使用するパッケージを作成するには、/priorpackage パラメーターを使用します。
[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。
このファイルは、旧パッケージから新パッケージへの更新時に何を変更する必要があるかをエンコードした ストリーミング プラン です。更新のテスト セクションでは、このプランの使用方法を示します。
更新サイズの検査
前述のコマンドを実行すると、同じファイル名の追加ファイルが 2 つ生成されます。.html ファイルと .json ファイルです。 両方のファイルには次の情報が含まれます。- 更新がダウンロードするバイト数の要約
- 特定のタグ、言語、またはデバイス タイプに対して更新がインストールするデータ量を要約した表
- 更新が変更するバイト数と、この変更がファイル全体のサイズに対する割合を示す、ソート可能なファイル表
- 100% 更新されない各ファイルについて、更新が変更する各ファイル内のデータ範囲を示す個別の表へのリンク
packageutil compare も、これらと同じファイルを生成し、パッケージの違いのサマリー出力を提供します。このコマンドは .xsp ファイルも生成します。
差分アップロード
Partner Center へのアップロードは、差分計算アルゴリズムを自動的に活用します。最後にアップロードしたパッケージ (そのブランチの) とアップロード中のパッケージとの差分は、開始時に計算されるため、変更されたデータのみがアップロード マシンから取り込みサービスに転送されます。更新のテスト
システム UI に表示される更新サイズを検証するには、次の手順を実行します。xbapp install[old version.xvc]xbapp update[new version.xvc] (/plan=[.xsp file])
wdapp コマンドを使用します。パッケージ ファイルは .msixvc ファイル拡張子を持ち、インストールと更新の進行状況は、XBOX アプリと Microsoft Store アプリの両方のダウンロード キュー セクションで確認できます。wdapp update は /plan パラメーターをサポートしません。作成されている場合は、対象バージョン向けに生成された .xsp ファイルを使用します。
更新の告知
更新の告知は、他の更新方法とは少し異なります。更新を告知すると、ゲームに更新を 利用可能 にすることになり、特定のシステム動作をもたらします。 利用可能な更新を告知するには、xbapp または wdapp update に /m または /a フラグを適用します。この操作の結果、ゲームが起動されるまで更新は適用されません。この条件が発生すると、次の動作になります。
- コンソール: 更新が必要であることを示すシステム ダイアログが表示されます。
- PC: dev ビルドの場合、システム プロンプトは表示されず、
wdapp installまたはブートストラッパーを使用してビルドがインストールされていない限り、ビルドを自由に起動できます。この場合、ゲームを起動すると PC ブートストラッパーが呼び出され、更新をチェックしてインストールを求められます。
XStore API が反応する結果ももたらし、これによりゲームは利用可能な更新を検出できます。この動作は DLC パッケージに最も関連します。詳細については、更新の確認 を参照してください。
ストア パッケージの更新
前述の例では、ローカル パッケージを使用したインストールと更新について説明しています。一部のシナリオでは、Partner Center にアップロードし、ストア CDN からダウンロードしたパッケージを使用して更新をテストしたい場合があります。このプロセスは、ストアからの更新時のパフォーマンスと、取り込みプロセスの一環として生成されたストリーミング プランの活用の 2 つを検証します。 残念ながら、署名の違いにより、ローカル パッケージからストア パッケージへの更新はできません。他の支援なしにできることは、Partner Center に単一バージョンをアップロードし、そのバージョンを 1 台以上のデブキットのストア アプリからインストールすることです。次に、新しいバージョンをアップロードします。新しいバージョンが公開されたら、古いバージョンがインストールされているデブキットで、新しいバージョンが検出され、予期される差分サイズを使用して更新できることを検証します。 このテストを繰り返すには、更新前に古いバージョンのインストールを外部ドライブにコピーして、後で新しいバージョンの上に戻せるようにします。このバージョンを保存していない場合は、xbapp install または wdapp install を使用して古いバージョンをインストールできる CDN URL を要求できます。古いバージョンをインストールした後、更新テストを繰り返すことができます。
