Games-as-a-Service (GaaS) のサポート
特定の時点でリリースされるスタンドアロン ゲームではなく、一部のゲームはサービスとして扱われるモデルに移行し、長期にわたって利用されるか、長年にわたってゲームの内容を新鮮に保つために更新されます。 こうしたモデルは Games-as-a-Service (GaaS) と呼ばれます。 GDK には、このモデルに対する優れたサポートがあります。 このドキュメントでは、GDK を使用してサービスとしてのゲームの公開をサポートする場合に考慮すべきベスト プラクティスの概要について説明します。
GDK の導入
各 GDK は 1 年間のみサポートされます。 既存のゲームは、廃止された GDK を使用して引き続き提供できますが、サービスとして提供されるゲームではこれが問題になる可能性があります。 GDK の廃止後に新機能を導入するゲームでは、GDK の以前のユース ケースでは見られなかったバグや統合の問題が発生する可能性があります。 また、ゲームでは、これからリリースされる最新の GDK にのみ用意されている機能を利用することをおすすめします。
1 つの GDK を対象にゲームを構築する必要があります。 ゲームでは、ある GDK のコンポーネントを別の GDK と混在させることはできません。 本体では、ゲームには 1 つのゲーム OS のみが含まれており、さまざまな GDK ライブラリがその基盤となる OS に依存している可能性があります。 PC では、ゲーム ランタイムの 1 つのバージョンのみがゲーム プロセスに読み込まれ、本体で見られるように同様の "単一バージョン" 環境が作成されます。
GaaS タイトルは、まだサポートされている、より最近リリースされた GDK に定期的に更新することをお勧めします。
インテリジェント配信
GaaS タイトルは、新しいコンテンツの導入により、長年にわたって大きくなっていく可能性があります。 ゲーマー側では、記憶領域の量が限られている可能性があります。 これは、ゲームの最新の更新をインストールする機能に影響を与える可能性があります。 ゲーマーが自身の記憶領域を管理できるのは事実ですが、インテリジェント配信を使用して構築されたゲームでは、ゲーム全体をアンインストールできるだけでなく、ゲーマーの自由度が増し、記憶領域の使用方法を選択して、デバイスにインストールされているより多くのゲームをはるかに長く維持できます。
インテリジェント配信を使用すると、ゲームでは機能とレシピを利用することで、既定でインストールされるものを選択し、ゲームのどの部分をインストールしたままにし、使用しなくなったために削除する部分を管理するための機能がゲームで実現されます。
GaaS タイトルでは、この種の管理を有効にするために、新しいコンテンツを個別の機能に配置することを選択できます。 これは、新しいコンテンツは非消費型アイテムであるという考え方です。 これを簡単に管理できるようにする 1 つの推奨事項を次に示します。
- ゲームのレイアウト ファイルで、各非消費型アイテムを機能に対応させます。
- 機能は、ゲーマーがそのコンテンツのライセンスを持っている場合にインストールする必要があるレイアウト ファイル内のチャンクを示すために使用できる 1 つ以上のタグを宣言します。
- レイアウト ファイルに、Store ID の子を持つレシピが含まれていることを確認します。 このレシピでは、同じ Store ID に対応する 1 つの機能を参照する必要があります。 レシピを追加すると、ゲーマーが以前にこのコンテンツを購入した場合、自動的にインストールされるようになります。
注意
他にも、非消費型アイテムとは関係のない機能やレシピがある場合があります。
この推奨事項に従うことで、ゲームで次のことが可能になります。
- XPackageEnumerateFeatures を呼び出して機能を列挙する。
- XPackageFeature にある返された Store ID を使用して、ライセンスの確認、詳細の照会、またはストア購入フローの呼び出しを行う。
40 GB を超えるすべてのゲームでは、インテリジェント配信の使用を強く検討する必要があります。 ゲームでは、GaaS をサポートするために非消費型アイテムを使用することを検討できます。
ダウンロード コンテンツ
一部の GaaS タイトルでは、ベース パッケージを継続的に進化させる代わりに、ダウンロード コンテンツ (DLC) を使用して長年にわたって進化させることを選択できる場合があります。 ゲームでは、アセットまたは実行可能コードをその DLC に配置することを選択できます。 実行可能コードでは、DLL と EXE の 2 つのパスが考えられます。
ゲームが DLC に DLL を配置する場合、次のことができます。
- XPackageMountWithUiAsync を使用してその DLC をマウントする。
- LoadLibraryEx を使用する。
- 以前にマウントされたすべての DLC はマウントされたままになります。
ゲームが DLC に EXE を配置する場合、次のことができます。
- XPackageMountWithUiAsync を使用してその DLC をマウントする。
- マウントされた DLC からのパスを使用して XLaunchNewGames を呼び出す。
- 既存のゲーム プロセスは終了します。
- XLaunchNewGames のターゲットを除くすべての DLC はマウント解除されます。
- G: ドライブは、新しく起動された EXE ではなく、ベース パッケージのルートを参照し続けます。
ゲームでは、LoadLibraryEx を使用してその実行可能コードにアクセスする DLC に実行可能コードを配置することをお勧めします。