ターゲット セッションの初期化と QoS
ここでは、プレイヤーがターゲット セッションにマッチングされたときに、十分な数のプレイヤーが参加していて接続できることをタイトルで確認する方法について説明します。
プレイヤーのグループは、SmartMatch マッチメイキングによってターゲット セッションとマッチされます。 タイトルは、十分なプレイヤーが参加したこと、また、必要に応じて互いに正常に接続できることを確認するための手順を実行する必要があります。 このプロセスは、ターゲット セッションの初期化と呼ばれます。
ピアツーピア ネットワーク トポロジを使用するゲームの場合、ターゲット セッション初期化の重要な側面はサービスの品質 (QoS) の測定と評価です。 次のような関連操作があります。
- Xbox One 以降のコンソール間またはコンソールとサーバー間の待機時間と帯域幅の測定
- ノード間のネットワーク接続の品質を判定するための測定結果の評価
次のフロー チャートは、ターゲット セッションと QoS 操作初期化の実装方法を示しています。
初期化の管理
マルチプレイヤー セッション ディレクトリ (MPSD) は、初期化の管理という機能をサポートします。この機能を通じて、セッションに関与するクライアント間でターゲット セッションの初期化プロセスを調整します。 MPSD は、初期化ステージおよびセッションに関連したタイムアウトを自動的に追跡します。 MPSD は、必要に応じて、クライアント間の接続性も評価します。 初期化の管理は、XblMultiplayerInitializationStage 列挙型で表されます。
注意
タイトルで SmartMatch マッチメイキングを使用して MPSD の初期化の管理機能を活用することを強くお勧めします。
初期化の管理のエピソードおよびステージ
ターゲット セッションでは、マッチメイキングが新しいプレイヤーをセッションに追加するたびに初期化の管理が行われます。 SmartMatch は、セッション メンバーをユーザー状態 Reserved として追加します。つまり、各メンバーはスロットを占有しますが、まだセッションには参加していません。 新しいプレイヤーの各グループは、新しい初期化エピソードをトリガーします。
初期化の完了時、各プレイヤーはプロセスに成功または失敗します。 初期化に成功したプレイヤーは、ターゲット セッションを使用してプレイできます。 失敗したプレイヤーは、マッチメイキングに再送信され、別のセッションにマッチされる必要があります。
セッションが preserveSession
パラメーターを Always
に設定してマッチメイキングに送信される場合、セッションの既存のメンバーで初期化されません。それらのメンバーは適切に設定されていると MPSD が想定するためです。
初期化の管理の各エピソードは以下のステージで構成されます。
-
参加: セッション メンバーは自身をセッションに書き込んでユーザー状態を
Reserved
からActive
に移行します。 また、セキュア デバイス アドレスなどの基本データをアップロードできます。 - 測定: ピア ベースのトポロジでは、セッション メンバーは互いに QoS を測定し、結果をセッションにアップロードします。
- 評価: MPSD は、最後の 2 段階の結果を評価し、セッションやメンバーが正常に初期化されたかどうかを判断します。
タイトル コードは、セッション上で動作して、各プレイヤー (およびその結果としてセッション) の参加および測定フェーズを進めます。 その後タイトルは、評価ステージが成功または失敗した後で、プレイを開始する、またはマッチメイキングに戻ることができます。
初期化のためのターゲット セッションの構成
タイトルは、初期化されるターゲット セッションで定数を使用して、初期化の管理プロセスを構成できます。 これらの定数は、バージョン 107 のセッション テンプレートでは /constants/system の下で設定されます。 このバージョンのテンプレートをお勧めします。
次の 2 種類の構成を設定できます。
初期化の管理プロセス全体を構成する設定
QoS 要件を構成する設定
一般的なタイトル シナリオのセッション テンプレートの例については、「マルチプレイヤー セッション テンプレート」および「マルチプレイヤー セッション ディレクトリの概要」を参照してください。
注意
QoS 要件がターゲット セッションの初期化構成で定義されていない場合、初期化中の測定ステージはスキップされます。
全体としての初期化の管理の構成
初期化の管理を全体的に制御するには、以下のフィールドを設定します。
初期化の管理を制御するために設定するフィールドは、/constants/system/memberInitialization
オブジェクトの一部です。
joinTimeout
: 初期化エピソードの開始後に MPSD が各メンバーの参加を待機する時間を指定します。 既定値は 10 秒です。measurementTimeout
: 測定ステージの開始後に MPSD が各メンバーの QoS 測定結果のアップロードを待機する時間を指定します。 既定値は 30,000 秒です。membersNeededToStart
: 最初の初期化エピソードが成功するために初期化で成功する必要があるメンバーの数を指定します。 既定値は 1 です。
注意
このしきい値が満たされない場合は、すべてのメンバーが初期化に失敗します。
QoS 要件の構成
QoS は、タイトルがピア ツー ピアまたはピアー ツー ホスト トポロジを使用する場合のみ、初期化中に必要です。 各トポロジは、/constants/system/ の下にあるトポロジ固有の定数にマップされます。
ピア ツー ピア トポロジの QoS 要件の構成
注意
ピアーツーピアー トポロジでタイトルが QoS 要件設定を行うことはまれです。 これらの設定は、非常に制約が厳しく、厳格なネットワーク アドレス変換 (NAT) を使用するプレイヤーで問題が発生します。
ピア ツー ピア トポロジの QoS 要件は、peerToPeerRequirements
オブジェクトで設定できます。
すべてのクライアントが他のすべてのクライアントに接続できることが必要です。
peerToPeerRequirements
オブジェクトには、次の関連フィールドがあります。
latencyMaximum
: 任意の 2 つのクライアント間の最大遅延時間を指定します。bandwidthMinimum
: 任意の 2 つのクライアント間の最小帯域幅を指定します。
ピア ツー ホスト トポロジの QoS 要件の構成
ピア ツー ホスト トポロジの QoS 要件は、peerToHostRequirements
オブジェクトで設定できます。
すべてのクライアントが単一の共通ホストに接続できることが必要です。
このオブジェクトが構成され、初期化が成功した場合、MPSD は、可能性のあるホスト (ホスト候補と呼ばれます) であるクライアントの初期リストを作成します。
次のフィールド設定します。
latencyMaximum
: 各ピアとホストの間の最大遅延時間を指定します。bandwidthDownMinimum
: 各ピアとホストの間の最小ダウンストリーム帯域幅を指定します。bandwidthUpMinimum
: 各ピアとホストの間の最小アップストリーム帯域幅を指定します。hostSelectionMetric
: ホストを選択するために使用したメトリックを指定します。