意図
マルチプレイヤー セッションの状態 (誰が参加中か、役割、モード、マップ) は、セッションのライフサイクル全体を通して正確なままである必要があります。状態がデシンクしたり破損したりすると、参加中のプレイヤーは間違った情報を見ることになり、既存のプレイヤーは間違ったコンテキストに落とし込まれます。XR-067 は、あらゆる合理的な変動を通じてタイトルがセッション状態を維持することを要求します。適用対象
マルチプレイヤー セッション状態を持つすべてのタイトル (MPSD またはモダンな相当物)。要件
タイトルは以下を 必須 とします:- 状態遷移 (メンバーの参加、メンバーの退出、役割の変更、モードの変更、ホスト マイグレーション) ごとに MPSD セッション状態 をランタイム セッションと同期する。
- ホストが切断された際の ホスト マイグレーション を正しく処理する — 新しいホストを選出し、権限のある状態を転送し、残りのメンバーに通知する。
- メンバーの切断 を処理する — セッション状態から退出したメンバーを削除し、残りのメンバーに通知し、セッションが満員でなくなった場合は参加可能性を調整する。
- ネットワーク グリッチ を処理する — 回復が迅速であれば、ホスト上の一時的なネットワーク損失によりセッションを破棄しない。
- プラットフォーム イベント を処理する — サインアウト、Quick Resume、コントローラーの変更 — 他のメンバーのセッションを破損させない。
- ホスト マイグレーションを通じて セッション ID を正しく永続化 し、プレゼンスからの参加が引き続きマイグレーション後のセッションを見つけられるようにする。
- セッションが自然に終了した際 (全メンバー退出、ゲーム完了) にセッションをクリーンアップし、セッションが MPSD 内でゴースト化しないようにする。
- メンバー間で一貫性のないセッション状態を表示する。
- ランタイム セッションが終了した後も古い MPSD セッションを持続させる。
- ホストが切断された際に残りのすべてのメンバーを退出させる。
- 実際には接続されていないメンバーをセッション状態に捏造する。
テスト シナリオ
- 4 プレイヤー セッションをホストする。ホストを (ネットワーク切断で) 切断させる。ホスト マイグレーションを検証する。残りの 3 メンバーが継続することを検証する。
- ホスト以外のメンバーを切断させる。状態からの正常な削除を検証する。
- 素早くセッションに参加/退出する。セッション状態が一貫していることを検証する。
- ロビー中にゲーム モードを変更する。状態がすべてのメンバーに伝播することを検証する。
- セッション中にサインアウトする。残りのメンバーのためにセッション状態が更新されることを検証する。
ベスト プラクティス
- 権限のあるホスト または 調停セッション を設計し、セッション状態の単一の信頼できるソースがあるようにする。
- MPSD 書き込みを慎重に使用する — XR-132 の下でスロットルされないようレート制限する。
- ネットワーク グリッチ後に整合を取る — 再接続時に MPSD 状態を再読み取りし、ランタイムと差分を取る。
- ホスト マイグレーションに時間制限を設ける — 一定時間内に新しいホストが選出されない場合、ハングせずクリーンに破棄する。
関連 XR
- XR-064 — 参加可能なセッション。
- XR-070 — フレンド リスト。
- XR-074 — 接続の喪失。
- XR-115 — ゲームプレイ中のユーザー追加/削除。
- XR-124 — ゲーム招待。
- XR-132 — サービス アクセスの制限。
