マッチを見つける
以下の手順では、Multiplayer Manager を使用してプレイヤーのフレンドに招待を送信し、そのフレンドが進行中のゲームに参加できるようにします。- Multiplayer Manager を初期化する
- ローカル ユーザーを追加してロビー セッションを作成する
- フレンドに招待を送信する (オプション)
- 招待を承諾する (オプション)
- マッチを見つける
Multiplayer Manager を初期化する
ロビー セッション オブジェクトは、有効なセッション テンプレート名で Multiplayer Manager が初期化されると自動的に作成されます。セッション テンプレートはサービス構成で定義されます。サービス上のロビー セッション インスタンスは、ユーザーが追加されるまで作成されません。
フラット C API
ローカル ユーザーを追加してロビー セッションを作成する
ローカルでサインインしている XBOX services ユーザーをロビー セッションに追加します。 最初のユーザーが追加されると新しいロビーがホストされます。 それ以外のすべてのユーザーは、既存のロビーにセカンダリ ユーザーとして追加されます。 Multiplayer Manager は、フレンドが参加できるようにシェルにロビーを広告します。 ローカル ユーザーを追加した後にのみ、招待の送信、ロビー プロパティの設定、およびロビー メンバーへのアクセスが可能です。 ローカル ユーザーがロビーに参加するとき、その接続アドレスとカスタム プロパティを設定することをお勧めします。 このプロセスは、ローカルでサインインしているすべてのユーザーに対して繰り返す必要があります。単一のローカル ユーザーの追加
フラット C API
- XblMultiplayerManagerLobbySessionAddLocalUser
- XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress
- XblMultiplayerManagerLobbySessionSetProperties
複数のローカル ユーザーの追加
フラット C API
- XblMultiplayerManagerLobbySessionAddLocalUser
- XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress
- XblMultiplayerManagerLobbySessionSetProperties
::UserAdded イベントを発生させます。
そのユーザーが正常に追加されたかどうかを確認するために、イベントのエラー コードをチェックすることをお勧めします。
失敗した場合は、エラー メッセージが失敗の原因の詳細を提供します。
Multiplayer Manager は、ローカル ユーザーを追加してロビー セッションを作成するために以下の機能を実行します。
- XBOX services マルチプレイヤー サービスに Real Time-Activity およびマルチプレイヤー サブスクリプションを登録する。
- ロビー セッションを作成する。
- すべてのローカル プレイヤーをアクティブとして参加させる。
- セキュア デバイス アドレス (SDA) をアップロードする。
- メンバー プロパティを設定する。
- セッション変更イベントに登録する。
- ロビー セッションをアクティブなセッションとして設定する。
フレンドに招待を送信する (オプション)
プレイヤーがゲームに招待するフレンドまたは最近のプレイヤーを選択できる、標準の XBOX UI を表示します。 プレイヤーが選択を確定すると、Multiplayer Manager は選択されたプレイヤーに招待を送信します。 ゲームは、XblMultiplayerManagerLobbySessionInviteUsers メソッドを使用して、XBOX services ユーザー ID で定義されたプレイヤーの集合に招待を送信することもできます。 このメソッドは、標準の XBOX UI ではなく独自のゲーム内 UI を使用する場合に便利です。フラット C API
- XBOX 標準のタイトル呼び出し可能 UI (TCUI) を表示する
- 選択されたプレイヤーに直接招待を送信する
招待を承諾する (オプション)
招待されたプレイヤーがゲーム招待を承諾したり、シェル UI を介してフレンドのゲームに参加したりすると、プロトコル アクティベーションを使用してそのデバイス上でゲームが起動されます。 ゲームの開始後、Multiplayer Manager はプロトコル アクティベーション イベント引数を使用してロビーに参加できます。 招待されたユーザーが XblMultiplayerManagerLobbySessionAddLocalUser を介して追加されていない場合、XblMultiplayerManagerJoinLobby は失敗し、JoinLobbyCompleted イベントで XblMultiplayerEventArgsXuid を呼び出すことにより、招待が送信された対象の xuid を提供します。
ロビーに参加した後、ローカル メンバーの接続アドレスとメンバーのカスタム プロパティを設定することをお勧めします。
また、ホストが存在しない場合は、XblMultiplayerManagerLobbySessionSetSynchronizedHost を介してホストを設定することもできます。
最後に、既にゲームが進行中で、招待されたユーザーのためのスペースがある場合、Multiplayer Manager はユーザーをゲーム セッションに自動参加させます。
タイトルは JoinGameCompleted イベントを通じて通知され、適切なエラー コードとメッセージが提供されます。
エラーまたは成功の結果は、JoinLobbyCompleted イベントを介して処理されます。
フラット C API
- Real-Time Activity およびマルチプレイヤー サブスクリプションを登録する。
- ロビー セッションに参加する。
- 既存のロビー状態のクリーンアップ。
- すべてのローカル プレイヤーをアクティブとして参加させる。
- SDA をアップロードする。
- メンバー プロパティを設定する。
- セッション変更イベントに登録する。
- ロビー セッションをアクティブなセッションとして設定する。
- ゲーム セッションに参加する (存在する場合)。
- 転送ハンドルを使用する。
マッチを見つける
招待が承諾され、ホストがゲームを開始する準備ができたら、SmartMatch を使用して以下のいずれかを実行できます。- XblMultiplayerManagerFindMatch を呼び出すことにより、ロビー セッションのすべてのメンバーに対して十分な空きプレイヤー スロットを持つ既存のゲームを見つけます。
- XblMultiplayerManagerJoinGameFromLobby の後に XblMultiplayerManagerAutoFillMembersDuringMatchmaking を呼び出すことにより、ロビー セッションのすべてのメンバーを含む新しいゲーム セッションを作成し、同じゲーム タイプのマッチを探している他のプレイヤーで空きスロットを埋めます。
フラット C API
- マッチ チケットを作成する。
- すべての Quality of Service (QoS) ステージを処理する。
- ロスター変更を処理する。
- 再送信する (必要な場合)。
- ターゲット ゲーム セッションに参加する。
- ロビー セッションを介してゲームを広告する。
