ロビーとマッチメイキングを一緒に使用する
マルチプレイヤー ゲームを設計する場合、マッチメイキングとロビーは、多くの場合、グループを形成して一緒にプレイするのに役立ちます。
PlayFab ロビーと PlayFab マッチメイキングは、さまざまなマルチプレイヤー シナリオを実装するのに役立ちます。
この記事では、これら 2 つのサービス間の関係について説明し、これらを一緒に使用して、以下に指定するゲーム シナリオを実装する方法について説明します。
ロビーとマッチメイキングの関係を理解する
ロビーとマッチメイキングはシームレスに連携して、タイトルにまとまりのあるマルチプレイヤー マッチメイキング エクスペリエンスを作成します。
- マッチメイキングは、ゲーム セッションに参加しようとしている一連のプレイヤーを一緒に収集します。
- マッチメイキングによって一連のプレイヤーが特定された後、ロビーは、ゲーム セッションに一緒での参加を調整するためのコミュニケーション メディアを提供します。
- ロビーの一般的なシナリオとしては、ゲーム サーバーの接続情報の共有、ピアツーピア ゲームのクライアント IP の共有、プレイヤー構成の共有などがあります。
配置されたロビー
タイトルは "配置されたロビー" を使用して、マッチメイキングを介してグループ化されたプレイヤーのロビーの簡単な作成をサポートできます。
マッチメイキング チケットがプレイヤーのグループと正常に一致すると、マッチメイキング チケットには lobbyArrangementString が含まれます。 その後、各プレイヤーは並べ替え文字列を PFMultiplayerJoinArrangedLobby に渡して、同じロビーに参加できます。
シナリオ例
1 人のプレイヤーが他の人と遊びたいと思っています。 このプレイヤーはマルチプレイヤー ゲームを開始し、フレンドを招待し、他のユーザーが参加するのを待ちます。
設計仕様
- このゲームは、すべてのユーザーが参加できるように開かれています。
- 一連の初期プレイヤーは、マッチメイキングを介して設定されます。
- ロビーの所有者は、フレンドを招待して参加させることができます。
- 必要なプレイヤー数が満たされると、ロビー内のすべてのプレイヤーに、ゲームを開始する準備ができているかどうかを確認するメッセージが表示されます。 応答する時間は 1 分です。 すべてのプレイヤーがゲームを開始する準備ができていることを確認した後、ゲームが開始されます。
- ロビーのプレイヤーがプレイ準備完了状態であることを確認しなかった場合、ロビー所有者はこれらのプレイヤーを非アクティブなプレイヤーとして削除し、マッチメイキングを使用して新しいプレイヤーを見つけてすぐに交替できます。
- ゲーム中にプレイヤーが予期せず切断されると、タイトルはサーバー バックフィルを使用したマッチメイキングを通じて、削除されたプレイヤーの新しい交替要員を見つける必要があります。
- ゲームが終了すると、すべてのプレイヤーがロビーに戻ります。 プレイヤーには、チームの実績が均等に付与されます。 彼らには、一緒に別のゲームを開始するために残るか、ロビーを離れるオプションがあります。
実装
このセクションでは、マッチメイキングとロビーを使用して上記の 設計仕様を実装する方法について説明します。
- マッチメイキングされたロビーを作成する
- フレンドに招待を送信する
- ユーザーがゲームを見つけて参加できるようにする
- プレイヤーにゲームを開始するよう通知する
- 非アクティブなプレイヤーを削除して交替する
- 完成したゲームを処理する
マッチメイキングされたロビーを作成する
マッチメイキングされたプレイヤーのグループのためのパブリック ロビーを作成します。
- 各プレイヤーは、指定されたマッチメイキング属性を使用してマッチメイキング チケットを作成します。
- 詳細については、「チケット属性の指定」を参照してください。
- 作成されたすべてのチケットがマッチメイキング キューに追加され、相互に照合されます。
- チケットはルールに基づいて照合されます。
- ルールは、マッチメイキング キューの構成で定義できます。
- 詳細については、「マッチメイキング キューの構成」を参照してください。
- マッチメイキングの後、各プレイヤーはマッチメイキング チケットの lobbyArrangementString を介して、マッチメイキングされたロビーに参加します。
- 配置されたロビーに参加するときは、ロビーの accessPolicy を Public として指定して、ロビーを開きます。
- 詳細については、「配置されたロビー」を参照してください。
- 配置されたロビーに最初に参加したプレイヤーが、ロビーの所有者になります。
- ロビーのプロパティを使用して、ゲーム セッションで使用するゲーム マップを指定できます。
- 詳細については、「ロビーのプロパティ」を参照してください。
- 検索プロパティを使用して、プレイヤーがタイトル内のすべてのアクティブなロビー内でこのロビーとゲーム セッションを見つけられるようにします。
- 詳細については、「検索プロパティ」を参照してください。
フレンドに招待を送信する
ロビー所有者がフレンドを選択し、招待を送信できるようにします。
- ロビー所有者のフレンド リストを取得する
- ロビー所有者が招待するフレンドを選択できるようにゲーム UI を表示する
- 選択したフレンドにゲーム内の招待を送信します。
- 詳細については、「ロビーの招待」を参照してください。
ユーザーがゲームを見つけて参加できるようにする
ロビーの検索プロパティを設定して、他のプレイヤーが見つけられるようにする
- ゲーム UI にすべてのロビーを表示します。 タイトルには、プレイヤーの検索語句を受け入れる方法も用意されている必要があります。
- プレーヤーの検索パラメーターを使用して PFMultiplayerFindLobbies を使用して、条件に一致するロビーのリストを返します。
- プレイヤーがゲームへの参加を選択したら、PFMultiplayerJoinLobby を使用してプレイヤーをゲームに追加します。
プレイヤーにゲームを開始するよう通知する
ゲームを開始する準備ができていることをロビー内のすべてのプレイヤーに通知する
- ロビーにいるプレイヤーの人数が必要な数に達したら、ゲーム UI を表示して、プレイを開始する準備ができていることをプレイヤーに確認させます。
- ロビー所有者がこれらの確認応答を表示できるようにします。
非アクティブなプレイヤーを削除して交替する
ロビー所有者には、非アクティブなプレイヤーまたは切断されたプレイヤーを削除し、マッチメイキングを開始して残りのスポットを埋めることができる機能があります
- プレイヤーが切断したか、設定されている一定時間 (1 分) 内に応答しなかった場合は、PFLobbyForceRemoveMember を使用してプレーヤーを削除します。
- ロビー所有者は、CreateServerBackfillTicket を使用してマッチメイキング チケットを作成します。 この API を使用して作成されたチケットは、検索中に優先されます。 これは、ゲームプレイの中断を最小限に抑えるためです。 詳細については、「サーバー バックフィル チケットの使用」を参照してください。
- バックフィル ロビーに参加した後、ゲームのロビー所有者は元のロビーの接続文字列を新しいバックフィル プレーヤーと共有でき、これらのプレイヤーは元のロビーに参加できます。
- 必要に応じてゲームの開始時刻を延長します。
完成したゲームを処理する
ゲームが終了すると、すべてのプレイヤーがロビー画面に戻り、ゲーム セッションを完了します。
- ロビーは一時的であるため、保存する必要があるロビーのデータは、この時点で各プレイヤーが保持する必要があります。
- たとえば、一部のゲーム シナリオでは、メンバー プロパティに格納されているデータを処理し、そのデータをプレイヤーの実績に変換することでメリットが得られる場合があります。
- 引き続き同じグループでプレイしたいプレイヤーはロビーに残ります。
- 同じグループでのプレイを停止したいプレイヤーは、PFLobbyLeave を使用してロビーを離れ、新しいマッチメイキング グループでプロセスを再開します。