XR-052: ユーザー状態とタイトル セーブの場所、ローミング、依存性
タイトルは、進行状況、保存状態、初期設定、実績、およびその他のリワードを、その進行状況を記録、初期設定を選択、またはリワードを獲得したユーザーと関連付ける必要があります。 タイトルは、ユーザー変更通知を適切に処理することで、これを達成する。 タイトルは、サインインしていないユーザーの状態が保存されないようにしなければならない。 ゲームのセーブ データは、共有コンテンツまたはローカル ストレージに依存してはなりません。
プラットフォーム、デバイス、および/または本体世代の間で同一の TitleID を使用するゲームの場合、セーブデータの進行状況はユーザーが次の方法で Xbox ネットワークにサインインしたときにローミングする必要があります。
- 同じプラットフォーム内 (Xbox 本体)。
- 同じプラットフォームのデバイス内 (Xbox One と Xbox One S など)。
- デバイスのプラットフォームの世代間 (Xbox One と Xbox Series X|S など)。
- Windows プラットフォームの PC 間 (2 つの異なる PC 間など)。
- Windows プラットフォームと Xbox コンソール プラットフォーム (Windows や Xbox Series X|S など) の PC 間でのゲームセーブ ローミングは必須ではありませんが、このプレイヤー エクスペリエンスをサポートすることをお勧めします。
- Microsoft 以外のプラットフォーム (iOS、Android、Switch、PlayStation® など) の場合、ゲームセーブ ローミングは必須ではありませんが、このプレイヤー エクスペリエンスをサポートすることをお勧めします。
その他の情報
共有コンテンツとは、セーブ データが読み込まれた際にローミングされた本体に存在しない可能性があるコンテンツです (ゲーム追加コンテンツなど)。 このコンテンツは、現在サインインしているユーザーがダウンロードしたコンテンツでも所有しているコンテンツでもないため、使用することができない可能性があります。
プレイヤー データを保存するための API とサービスは、SDK によって異なります。
GDK/SDK | ローミング保存が必要ですか? | API への対応 |
---|---|---|
GDK | 必須 |
xgamesave.h の XGameSave API |
XDK を使用する ERA | 必須 |
Windows.Xbox.Storage 名前空間の ConnectedStorage API |
Windows SDK - UWP | 必須 |
Windows.Gaming.XboxLive.Storage 名前空間の GameSaveProvider API |
- GDK を使用してゲーム状態を保存する方法については、「ゲームの保存」をご覧ください。
- ゲームの状態の管理と GDK を使用したデータの保存については、「Xbox ゲーム ライフサイクル」をご覧ください。
この要件の重要な側面は、タイトルがアクティブの間、一時停止している間、または終了している間にタイトルのアクティブ ユーザーが変更された場合の処理に関連しています。 タイトルが、それを最後に起動したユーザー以外のユーザーの [ホーム] 画面から起動され、本体の他のユーザーがタイトル進行中の任意の時点でサインインまたはサインアウトした場合に、タイトルの "アクティブ ユーザー" が変更されます。 タイトルは、アクティブ ユーザーおよび本体の他のユーザーに適切な体験を提供し、ユーザーごとにタイトル状態の情報を保存する必要があります。 ユーザーは、任意のタイトルの状況と無関係に Xbox ネットワークにサインイン (およびサインアウト) できるため、タイトルは、ユーザーが変更された場合でも動作する必要があります。 たとえば、タイトルは、サインインしていないユーザーのトークンまたは ID を使用しないようにしなければなりません。
タイトルでは、意図しないユーザー データの消失が発生してはなりません。
次の表は、GDK のシンプルなユーザー モデルまたは GDK の高度なユーザー モデル、ERA、UWP マルチユーザー アプリケーションを使用している場合に、どのテスト ケースがタイトルに適用されるかを示しています。 シンプルなユーザー モデルと高度なユーザー モデルの使用に関する詳細については、「XR-112」を参照してください。
テスト ケース | GDK のシンプルなユーザー モデルに適用可能 | GDK の高度なユーザー モデル、ERA、および UWP MUA に適用可能 |
---|---|---|
052-01 ユーザーのサインインおよびサインアウト | いいえ | はい |
052-02 一時停止状態または終了状態でのユーザー変更 | いいえ | はい |
052-05 正確なユーザーの関連付け | はい | はい |
052-06 クラウド ストレージ: ローミング | はい | はい |
052-01 ユーザーのサインインおよびサインアウト
環境設定:
このテスト ケースは、本体にのみ適用されます。 Xbox デバイスでは、xbuser
コマンド ライン ユーティリティを使用して、ユーザーのサインインまたはサインアウトをいつでもテストできます。
xbuser signin /i:\<user ID> [/p:password]
xbuser signin /e:\<email> [/p:password]
xbuser signout /i:\<user ID> [/p:password]
xbuser signout /e:\<email> [/p:password]
テスト手順
- プロフィール A とプロフィール B で本体がホームに設定されていることを確認します。
- プロフィール A にゲームの進行状況やユーザーの初期設定などのセーブ データがあることを確認します。
- プロフィール B にセーブ データがないことを確認します。
- プロフィール A にサインインして、タイトルを起動します。 タイトルのすべてのエリアを確認して (たとえば以下が含まれますが、これらに限りません)、すべてのセーブ データと初期設定が保持されていることを確認します。
- シングルプレイヤーまたはマルチプレイヤー ゲーム セッション
- メニュー
- ビデオまたはオーディオの再生
- プロフィール A からサインアウトして、プロフィール B にサインインします。
- 手順 4 で確認したタイトルのすべてのエリアを再び確認して、プロフィール B のユーザー進行状況、保存状態、初期設定、実績、またはその他のアワードが正しく更新されていることを確認します。
- ゲームプレイを開始して、進行状況のセーブ データを保存し、プロフィール B のユーザー初期設定を変更します。
- タイトルを終了して再び起動し、手順 7 のセーブ データが正しく反映されていることを確認します。
- プロフィール B からサインアウトします。
- プロフィール A からセーブ データ 'Everywhere' を削除し、手順 4 から 8 を繰り返します。
想定される結果
アクティブ ユーザーの変更がタイトルによって適切に処理されなければなりません。
成功例
- ユーザーの変更後、ユーザーの進行状況、保存状態、初期設定、実績、およびその他のアワードが正しいユーザーに関連付けられています。
失敗例
- ユーザーの変更後、ユーザーの進行状況、保存状態、初期設定、実績、およびその他のアワードがユーザーに適切に関連付けられていません。
- 引き続き最初のユーザーにセーブ データが書き込まれます。
- 前のユーザーがサインアウトした後、新しいユーザーが前のユーザーのセーブ データ、状態、プロフィールを変更できます。
052-02 一時停止状態または終了状態でのユーザー変更
環境設定:
このテスト ケースは、本体にのみ適用されます。 プロセス ライフタイム管理 (PLM) の状態遷移をテストするために、以下のコマンドを GDK/XDK で実行すると便利です。
xbapp suspend [package full name]
xbapp resume [package full name]
注意: コマンド プロンプトではなく GUI で作業する場合は、Xbox One Manager の使用を検討してください。 これは、ユーザーの管理や PLM イベントのテストを他の一般的なタスクと同様に本体上で実行できるデスクトップ アプリケーションです。
テスト手順
- プロフィールにサインインして、タイトルを起動します。
- タイトルのすべてのエリアを確認します。たとえば以下が含まれますが、これらに限りません。
- シングルプレイヤーまたはマルチプレイヤー ゲーム セッション
- メニュー
- ビデオまたはオーディオの再生
- xbapp suspend [パッケージ フルネーム] を実行してタイトルを一時停止します。
- タイトルが完全に一時停止し、一時停止によってすべての HTTP 要求が中断されるまで、少なくとも 30 秒待ちます。
- アクティブ ユーザーをサインアウトし、別のユーザーとしてサインインします。
- 新しいユーザーを使用してタイトルを起動し、以前のユーザーの場所からタイトルを続けます。
- タイトルのすべてのエリアについて手順 1 から 6 を繰り返します。
- 手順 1 から 7 を繰り返し、タイトルを一時停止する代わりに終了します。
想定される結果
アクティブ ユーザーの変更がタイトルによって適切に処理されなければなりません。
成功例
- 別のユーザーで起動したとき、タイトルの状態はコンテキストに応じてタイトルのタイプにふさわしい状態になります。
- ユーザーの変更後、ユーザーの進行状況、保存状態、初期設定、実績、およびその他のアワードが正しいユーザーに関連付けられています。
失敗例
- ユーザーの変更後、ユーザーの進行状況、保存状態、初期設定、実績、およびその他のアワードがユーザーに適切に関連付けられていません。
- 引き続き最初のユーザーにセーブ データが書き込まれます。
- 前のユーザーがサインアウトした後、新しいユーザーが前のユーザーのセーブ データ、状態、プロフィールを変更できます。
052-05 正確なユーザーの関連付け
テスト手順
- プロフィールにサインインして、タイトルを起動します。
- ゲームプレイを開始し、ゲームの進行状況を保存します。
- タイトルを終了します。
- 手順 1 のプロフィールからサインアウトし、新しいプロフィールにサインインします。
- タイトルを起動し、保存された進行状況へのアクセスを試みます。
想定される結果
元のユーザーに関する進行状況のセーブ データが新しいプロファイルによって表示またはアクセスできないようにする必要があります。
成功例
- 手順 4 でユーザーに関連付けられた進行状況のセーブ データだけが手順 5 で表示されます。
失敗例
- タイトルで、新しいプロファイルで別のプロファイルの保存された進行状況を読み込むことができます。
052-06 クラウド ストレージ: ローミング
必要なデバイス:
- Xbox One
- Xbox One S
- Xbox One X
- Xbox Series X 開発キット (Xbox Series X|S リテール版本体モードの使用)
- 2 台の PC
テスト手順
- デバイス A で Xbox プロフィールにサインインして、タイトルを起動します。
- ゲームプレイを開始し、進行状況をセーブします (可能な場合は、設定を変更するか新しい設定を追加することで、設定のセーブを作成します)。
- タイトルを終了します。
- 手順 1 で使用したのと同じプロフィールを使用して、手順 1 で使用したのと同じプラットフォーム/世代 (Xbox Series S と Xbox Series X、Xbox One と Xbox One S および 2 台目の PC など) から別のデバイスにサインインします。
- 手順 1 と同じタイトルを起動し、すべてのセーブ データや任意の設定または構成ファイルにアクセスしてそれらが正しく読み込めること、およびそれらが共有コンテンツに依存していないことを確認します。
- 世代を超えた同じプラットフォームで同じ Title ID を使用するゲーム (Xbox One や Xbox Series X|S など) の場合は、手順 4 を繰り返します。
- Windows プラットフォームで同じ TitleID を使用する PC ゲームの場合は、手順 4 を繰り返します。
- サポートされている場合、プラットフォームを超えて同じ Title ID を使用するゲーム (Windows や Xbox Series X|S など) の場合:
- 手順 1 と同じタイトルを、サポートされている他のプラットフォームで起動し、すべてのセーブ データや任意の設定または構成ファイルにアクセスしてそれらが正しく読み込めること、およびそれらが共有コンテンツに依存していないことを確認します。
想定される結果
タイトルの保存の進行状況はユーザー プロファイルに関連付けられている必要があり、ユーザーが Xbox サービスにサインインしている場合は、同じデバイスやプラットフォーム間でローミングする必要があります。 世代を超えた同じプラットフォームで同じ TitleID を使用するゲームの場合、ゲームのセーブ データはこれらのプラットフォーム間をローミングする必要があります。 Windows プラットフォームで同じ TitleID を使用する PC ゲームの場合、ゲームのセーブ データはこれらの PC 間をローミングする必要があります。 ゲームのセーブ データは、共有コンテンツに依存してはなりません。
成功例
- ゲームのセーブ データと関連する設定ファイルは、同じ本体プラットフォーム/世代 (Xbox Series S と Xbox Series X、Xbox One と Xbox One S など) の 2 番目の本体に正常にダウンロードできます。
- ゲームのセーブ データと関連する設定ファイルが、Windows プラットフォームの 2 番目の PC に正常にダウンロードできます。
- 世代を超えて同じプラットフォームで同じ Title ID を共有する本体用ゲーム (Xbox One と Xbox Series X|S など) の場合、保存および関連する設定ファイルをこれらのデバイス間でローミングできます。
- ゲームのセーブ データは、共有コンテンツに依存していません。
失敗例
- ゲームのセーブ データと関連する設定ファイルを同じプラットフォーム/世代 (Xbox Series S と Xbox Series X、Xbox One と Xbox One S など) の 2 番目の本体に正常にダウンロードできません。
- ゲームのセーブ データと関連する設定ファイルを Windows プラットフォームの 2 番目の PC に正常にダウンロードできません。
- 世代を超えて同じプラットフォームで同じ Title ID を共有する本体用ゲーム (Xbox One と Xbox Series X|S など) の場合、保存および関連する設定ファイルをこれらのデバイス間でローミングできません。
- タイトルの初回起動時にクラウドのセーブが認識されません。また、その後プレイヤーの操作なしに、2 台目のデバイスでクラウドのセーブが上書きされます。
- ゲームのセーブ データが、共有コンテンツに依存しています。