Skip to main content
このトピックでは、Multiplayer Manager を使用して SmartMatch マッチメイキングを実装するために必要な基本的な手順について説明します。 プレイヤーがゲームをプレイしたいときにオンラインのフレンドが十分にいない場合や、単にオンラインでランダムなプレイヤーと対戦したいだけの場合があります。 SmartMatch サービスを使用して、他の XBOX プレイヤーを見つけることができます。

マッチを見つける

以下の手順では、Multiplayer Manager を使用してプレイヤーのフレンドに招待を送信し、そのフレンドが進行中のゲームに参加できるようにします。
  1. Multiplayer Manager を初期化する
  2. ローカル ユーザーを追加してロビー セッションを作成する
  3. フレンドに招待を送信する (オプション)
  4. 招待を承諾する (オプション)
  5. マッチを見つける
手順 1、2、3、および 5 は、招待を実行するデバイスで行います。 手順 4 は通常、プロトコル アクティベーションによるアプリ起動の後、招待された側のデバイスで開始されます。 詳細については、SmartMatch マッチメイキングを使用してゲームをプレイする (フローチャート) を参照してください。

Multiplayer Manager を初期化する

ロビー セッション オブジェクトは、有効なセッション テンプレート名で Multiplayer Manager が初期化されると自動的に作成されます。セッション テンプレートはサービス構成で定義されます。
サービス上のロビー セッション インスタンスは、ユーザーが追加されるまで作成されません。

フラット C API

詳細については、XblMultiplayerManagerInitialize を参照してください。 このトピックの先頭に戻る。

ローカル ユーザーを追加してロビー セッションを作成する

ローカルでサインインしている XBOX services ユーザーをロビー セッションに追加します。 最初のユーザーが追加されると新しいロビーがホストされます。 それ以外のすべてのユーザーは、既存のロビーにセカンダリ ユーザーとして追加されます。 Multiplayer Manager は、フレンドが参加できるようにシェルにロビーを広告します。 ローカル ユーザーを追加した後にのみ、招待の送信、ロビー プロパティの設定、およびロビー メンバーへのアクセスが可能です。 ローカル ユーザーがロビーに参加するとき、その接続アドレスとカスタム プロパティを設定することをお勧めします。 このプロセスは、ローカルでサインインしているすべてのユーザーに対して繰り返す必要があります。

単一のローカル ユーザーの追加

フラット C API

詳細については、以下を参照してください。 このトピックの先頭に戻る。

複数のローカル ユーザーの追加

フラット C API

詳細については、以下を参照してください。 変更は次の XblMultiplayerManagerDoWork 呼び出しでバッチ処理されます。 Multiplayer Manager は、ローカル ユーザーがロビー セッションに追加されるたびに XblMultiplayerEventType::UserAdded イベントを発生させます。 そのユーザーが正常に追加されたかどうかを確認するために、イベントのエラー コードをチェックすることをお勧めします。 失敗した場合は、エラー メッセージが失敗の原因の詳細を提供します。 Multiplayer Manager は、ローカル ユーザーを追加してロビー セッションを作成するために以下の機能を実行します。
  • XBOX services マルチプレイヤー サービスに Real Time-Activity およびマルチプレイヤー サブスクリプションを登録する。
  • ロビー セッションを作成する。
  • すべてのローカル プレイヤーをアクティブとして参加させる。
  • セキュア デバイス アドレス (SDA) をアップロードする。
  • メンバー プロパティを設定する。
  • セッション変更イベントに登録する。
  • ロビー セッションをアクティブなセッションとして設定する。
このトピックの先頭に戻る。

フレンドに招待を送信する (オプション)

プレイヤーがゲームに招待するフレンドまたは最近のプレイヤーを選択できる、標準の XBOX UI を表示します。 プレイヤーが選択を確定すると、Multiplayer Manager は選択されたプレイヤーに招待を送信します。 ゲームは、XblMultiplayerManagerLobbySessionInviteUsers メソッドを使用して、XBOX services ユーザー ID で定義されたプレイヤーの集合に招待を送信することもできます。 このメソッドは、標準の XBOX UI ではなく独自のゲーム内 UI を使用する場合に便利です。

フラット C API

詳細については、XblMultiplayerManagerLobbySessionInviteUsers を参照してください。 Multiplayer Manager は、フレンドに招待を送信するために以下の機能を実行します。
  • XBOX 標準のタイトル呼び出し可能 UI (TCUI) を表示する
  • 選択されたプレイヤーに直接招待を送信する
このトピックの先頭に戻る。

招待を承諾する (オプション)

招待されたプレイヤーがゲーム招待を承諾したり、シェル UI を介してフレンドのゲームに参加したりすると、プロトコル アクティベーションを使用してそのデバイス上でゲームが起動されます。 ゲームの開始後、Multiplayer Manager はプロトコル アクティベーション イベント引数を使用してロビーに参加できます。 招待されたユーザーが XblMultiplayerManagerLobbySessionAddLocalUser を介して追加されていない場合、XblMultiplayerManagerJoinLobby は失敗し、JoinLobbyCompleted イベントで XblMultiplayerEventArgsXuid を呼び出すことにより、招待が送信された対象の xuid を提供します。 ロビーに参加した後、ローカル メンバーの接続アドレスとメンバーのカスタム プロパティを設定することをお勧めします。 また、ホストが存在しない場合は、XblMultiplayerManagerLobbySessionSetSynchronizedHost を介してホストを設定することもできます。 最後に、既にゲームが進行中で、招待されたユーザーのためのスペースがある場合、Multiplayer Manager はユーザーをゲーム セッションに自動参加させます。 タイトルは JoinGameCompleted イベントを通じて通知され、適切なエラー コードとメッセージが提供されます。 エラーまたは成功の結果は、JoinLobbyCompleted イベントを介して処理されます。

フラット C API

詳細については、以下を参照してください。 Multiplayer Manager は、招待を承諾するために以下の機能を実行します。
  • Real-Time Activity およびマルチプレイヤー サブスクリプションを登録する。
  • ロビー セッションに参加する。
  • 既存のロビー状態のクリーンアップ。
  • すべてのローカル プレイヤーをアクティブとして参加させる。
  • SDA をアップロードする。
  • メンバー プロパティを設定する。
  • セッション変更イベントに登録する。
  • ロビー セッションをアクティブなセッションとして設定する。
  • ゲーム セッションに参加する (存在する場合)。
  • 転送ハンドルを使用する。

マッチを見つける

招待が承諾され、ホストがゲームを開始する準備ができたら、SmartMatch を使用して以下のいずれかを実行できます。 XblMultiplayerManagerFindMatch を呼び出す前に、まずサービス構成でホッパーを構成する必要があります。 ホッパーは、SmartMatch がプレイヤーをマッチングするために使用するルールを定義します。

フラット C API

詳細については、XblMultiplayerManagerFindMatch を参照してください。 Multiplayer Manager は、マッチを見つけるために以下の機能を実行します。
  • マッチ チケットを作成する。
  • すべての Quality of Service (QoS) ステージを処理する。
  • ロスター変更を処理する。
  • 再送信する (必要な場合)。
  • ターゲット ゲーム セッションに参加する。
  • ロビー セッションを介してゲームを広告する。
このトピックの先頭に戻る。
最終更新日 2026年8月25日