XR-115: ゲームプレイ中のユーザーまたはコントローラーの追加と削除 *
バージョン 1.1、2021/5/1 複数ユーザーをサポートするタイトルは、ユーザーの追加や削除、アクティブプレイヤーにコントローラーが割り当てられていないシナリオ、またはゲームプレイ中にコントローラーが失われたシナリオに、以下のように対応する必要があります。 コントローラーの追加: タイトルが初期のユーザーとコントローラーを選択または提供された後、タイトルはオプションで他のコントローラーからの入力を受け付けることができます。マルチプレイヤー体験をサポートするタイトルは、追加のプレイヤーやコントローラーがどのようにゲームプレイに追加され、XUserAddAsync でユーザーにバインドされるかを検討する必要があります。たとえば、「A を押して参加」や、プレイヤー選択画面でコントローラーのシルエットを表示するなどです。
コントローラーの削除: ゲームプレイを進めているプレイヤーのコントローラーがゲームプレイ中に取り外された場合、タイトルは新しいアクティブコントローラーの再確立を許可する必要があります (たとえば、「A を押して続行」や、ERA での ControllerPairingChanged イベントの受信、または GDK で有効なコントローラーを持つアクティブユーザーの XUserDeviceAssociationChangedCallback イベントを受信するなど)。タイトルは XUserFindControllerForUserWithUiAsync を使用してシステム UX を呼び出し、ユーザーにコントローラーをユーザーにペアリングするよう促し、ゲームプレイに戻すこともできます。
ユーザーの追加: ERA または UWP を使用する場合、新しいユーザーがサインインしたときに、タイトルがマルチユーザー体験をサポートしていれば、タイトルにそのユーザーを追加できます。ただし、タイトルは新しいサインインユーザーイベントに基づいてアクティブユーザーを新しいユーザーに自動的に切り替えたり、アクティブユーザーの体験を中断したりしてはなりません。
GDK を使用する場合 (Simplified または Advanced User Model のいずれかを使用)、タイトルが XUserAddAsync を呼び出したときにのみユーザーが追加されます。
プライマリユーザーの削除: ERA または GDK Advanced User Model を使用するタイトルの場合、プライマリユーザーがサインアウト (ガイド、SPOP、またはその他の手段で) されると、タイトルはそのプレイヤーをゲームから削除するか、ユーザーとアクティブコントローラーを再確立する必要があります。
GDK Simplified User Model を使用するタイトルの場合、プライマリプレイヤーが削除されると、タイトルはシステムレベルでサスペンドされます。
すべてのシナリオで、タイトルはゲームを良好な状態に置くことで削除/クローズを処理します。これには、コネクテッドストレージへの書き込み、関連する MPSD セッションへのユーザーが退出したことの通知、および新しいユーザーが追加されていない場合はサインインのための適切な場所にユーザーを移動することが含まれます。
追加/セカンダリユーザーの削除: タイトルはこのイベントを裁量で処理でき、通常はプレイヤーを直ちにゲームプレイから削除するか、使用中のマルチプレイヤー体験のコンテキストで再参加するようにプレイヤーに促します。
実装ガイダンスとベストプラクティス
ベストプラクティスは、アクティブプレイヤーのコントローラーが取り外されたときにゲームプレイを一時停止することです。 アクティブユーザーがサインアウトしたときは、ユーザーが体験に戻ったときにほぼ中断した場所に戻れるように、できるだけ多くのユーザーの進行状況を保存することがベストプラクティスです。 タイトルが複数のサインインユーザーをサポートし、アクティブユーザーがサインアウトしても他のアクティブユーザーがサインインしたままである場合、他のアクティブユーザーが現在の体験を可能な限り継続できるようにすることがベストプラクティスです。ゲームの場合、サインアウトしたユーザーをゲームプレイから完全に削除するか、コンピューター制御のプレイヤーに置き換えることができます。追加リソース
認定テストケース
以下の表は、GDK Simplified User Model、または GDK Advanced User Model、ERA、UWP マルチユーザーアプリケーションを使用している場合に、XR-115 のどのテストケースがタイトルに適用されるかを示しています。
* 115-01 ユーザーの追加 は、ERA および UWP マルチユーザーアプリケーションにのみ適用されます。GDK では、タイトルは意図的に追加したユーザーのみを表示できます。シェル経由で追加されたユーザーは、GDK タイトルには認識されません。
115-01 ユーザーの追加
テスト手順- プロフィール A にサインインし、他のプロフィールがサインインしていないことを確認します。
- タイトルを起動し、ゲームプレイに進みます。
- タイトルの使用中のさまざまな時点で、2 つ目のコントローラーを接続し、プロフィール B にサインインします。
- プロフィール B がタイトルにコントローラー入力を提供しようとします。
- タイトルは、アクティブユーザーを新しいユーザーに自動的に切り替えたり、アクティブユーザーの体験を中断したりしません。
- ゲームタイトルは、現在のコンテキストに応じて、プロフィール B がタイトルを操作することを許可することを選択できます。
- タイトルは、アクティブユーザーとして即座にコンテキストをプロフィール B に切り替えます。
115-02 コントローラーの削除
テスト手順- プロフィールにサインインし、タイトルを起動します。
- タイトルの使用中のさまざまな時点で、コントローラーからバッテリーを取り外します。
- コントローラーのバッテリーを交換し、ユーザーがタイトルを引き続き使用できることを確認します。
- バッテリーを交換する代わりに 2 つ目のコントローラーを接続して、手順 1〜3 を繰り返します。
- アクティブユーザーは、コントローラーの取り外しまたは追加後もタイトルを引き続き使用できる必要があります。
- ユーザーは、新しいアクティブコントローラーを再確立するよう促されます (たとえば、「A を押して続行」やシステム UX を呼び出すなど)。
- コントローラーの取り外し後、ユーザーがタイトルを使い続けることができません。
115-03 ユーザーの削除
テスト手順- プロフィール A にサインインし、他のプロフィールがサインインしていないことを確認します。
- タイトルを起動し、ゲームプレイに進みます。
- タイトルの使用中のさまざまな時点で、プロフィール A からサインアウトします。
- タイトルがアカウントピッカーを呼び出すか、ユーザーをフロントエンドに戻すことを確認します。
- 可能な場合は、次の方法でタイトルとやり取りします。
- プロフィール A にサインインし、タイトルがユーザーの体験をさらに中断しないことを確認します。
- プロフィール B にサインインし、タイトルが新しいユーザーのコンテキストに更新されることを確認します。
- タイトルは、プレイヤーをゲームから削除し、フロントエンドに戻します。
- タイトルは、ユーザーが新しいユーザーを再確立することを許可し、関連するユーザーコンテキストに正しく更新します。
- タイトルは、ユーザーの状態の変化に反応しません。
- 新しいプロフィールが選択された後も、タイトルはプロフィール A のユーザーの状態を使用し続けます。
