Lobby と Matchmaking の関係を理解する
Lobby と Matchmaking はシームレスに連携し、タイトル向けに一貫性のあるマルチプレイヤー マッチメイキング体験を作り出します。- Matchmaking はゲーム セッションへの参加を希望する一連のプレイヤーを集めます。
- マッチメイキングでプレイヤーのセットが特定された後、Lobby はゲーム セッションへの参加を調整するためのコミュニケーション手段を提供します。
- ロビーの一般的なシナリオには、ゲーム サーバー接続情報の共有、ピアツーピア ゲーム用のクライアント IP の共有、プレイヤー構成の共有などがあります。
アレンジ済みロビー
タイトルは「アレンジ済みロビー」を利用して、マッチメイキングによってグループ化されたプレイヤー向けのロビーを簡単に作成できます。 マッチメイキング チケットがプレイヤーのグループにマッチすると、そのマッチメイキング チケットには lobbyArrangementString が含まれます。その後、各プレイヤーは PFMultiplayerJoinArrangedLobby にアレンジメント文字列を渡して同じロビーに参加できます。サンプル シナリオ
プレイヤーは他の人と一緒にプレイしたいと考えています。プレイヤーはマルチプレイヤー ゲームを開始し、フレンドを招待し、他のプレイヤーの参加を待ちます。設計仕様
- ゲームは誰でも参加可能な状態で開かれています。
- 最初のプレイヤー セットはマッチメイキングを通じて集められます。
- ロビーのオーナーはフレンドを招待して参加させられます。
- 必要な人数のプレイヤーが集まると、ロビー内のすべてのプレイヤーにゲーム開始の準備が整ったか尋ねるメッセージが送られます。応答時間は 1 分です。全プレイヤーがゲーム開始準備完了を確認するとゲームが開始されます。
- ロビー内のプレイヤーがプレイ可能ステータスを確認しなかった場合、ロビーのオーナーはそれらを非アクティブなプレイヤーとして削除し、マッチメイキングを使って新しいプレイヤーを迅速に補充できます。
- ゲーム中にプレイヤーが予期せず切断された場合、タイトルはサーバー バックフィルを使うマッチメイキングを通じて、切断したプレイヤーの新しい代替を見つける必要があります。
- ゲームが終了すると、すべてのプレイヤーはロビーに戻ります。プレイヤーにはチーム アチーブメントが均等に授与されます。ロビーに残って別のゲームを一緒に開始することも、退出することもできます。
実装
このセクションでは、Matchmaking と Lobby を使用して 設計仕様 を実装する方法を説明します。- マッチメイキングによるロビーを作成する
- フレンドに招待を送信する
- プレイヤーがゲームを見つけて参加できるようにする
- ゲーム開始のプレイヤー確認を取得する
- 非アクティブなプレイヤーを削除して置き換える
- 終了したゲームを処理する
マッチメイキングによるロビーを作成する
マッチメイキングされたプレイヤーのグループのために公開ロビーを作成します。- 各プレイヤーは、指定したマッチメイキング属性でマッチメイキング チケットを作成します。
- 詳細については、チケット属性の指定 を参照してください。
- 作成されたすべてのチケットは、マッチメイキング キューに追加されて相互にマッチされます。
- チケットはルールに基づいてマッチされます。
- ルールはマッチメイキング キューの構成で定義できます。
- 詳細については、マッチメイキング キューの構成 を参照してください。
- マッチメイキング後、各プレイヤーはマッチメイキング チケットの lobbyArrangementString を介してマッチ済みロビーに参加します。
- アレンジ済みロビーに参加する際は、ロビーの accessPolicy に Public を指定して、ロビーを開放します。
- 詳細については、アレンジ済みロビー を参照してください。
- アレンジ済みロビーに最初に参加したプレイヤーがロビーのオーナーになります。
- ロビー プロパティを使用して、ゲーム セッションで使用するゲーム マップを指定できます。
- 詳細については、ロビーのプロパティ を参照してください。
- 検索プロパティを使用して、タイトル内のすべてのアクティブなロビーの中からこのロビーとゲーム セッションをプレイヤーが見つけられるようにします。
- 詳細については、検索プロパティ を参照してください。
フレンドに招待を送信する
ロビー オーナーがフレンドを選択して招待を送信できるようにします。- ロビー オーナーのフレンド リストを取得します。
- ロビー オーナーが招待するフレンドを選択できるようにゲーム UI を表示します。
- 選択したフレンドにゲーム内招待を送信します。
- 詳細については、ロビーの招待 を参照してください。
プレイヤーがゲームを見つけて参加できるようにする
他のプレイヤーがロビーを見つけられるように、ロビーの検索プロパティを設定します。- ゲーム UI にすべてのロビーを表示します。タイトルは、プレイヤーの検索条件を受け付ける手段も提供する必要があります。
- プレイヤーの検索パラメーターを使用して PFMultiplayerFindLobbies を実行し、条件に一致するロビーのリストを返します。
- プレイヤーがゲームに参加することを選択した後、PFMultiplayerJoinLobby を使ってプレイヤーをゲームに追加します。
ゲーム開始のプレイヤー確認を取得する
ゲーム開始の準備が整ったことをロビー内のすべてのプレイヤーに通知します。- 必要な人数のプレイヤーがロビーに集まったら、プレイ開始の準備ができたことをプレイヤーが確認できるゲーム UI を表示します。
- ロビー オーナーがこれらの確認応答を確認できるようにします。
非アクティブなプレイヤーを削除して置き換える
ロビー オーナーは、非アクティブまたは切断されたプレイヤーを削除し、残りの席を埋めるためにマッチメイキングを開始できます。- プレイヤーが切断された場合や指定された時間 (1 分) 内に応答しなかった場合、PFLobbyForceRemoveMember を使ってプレイヤーを削除します。
- ロビー オーナーは CreateServerBackfillTicket を使ってマッチメイキング チケットを作成します。この API で作成されたチケットは検索時に優先されます。このアプローチにより、ゲームプレイの中断を最小限に抑えます。詳細については、サーバー バックフィル チケットの使用 を参照してください。
- バックフィル ロビーに参加した後、ゲームのロビー オーナーは元のロビーの接続文字列を新しいバックフィル プレイヤーと共有し、彼らが元のロビーに参加できるようにします。
- 適切な場合はゲーム開始時間を延長します。
終了したゲームを処理する
ゲーム終了後、すべてのプレイヤーはロビー画面に戻ってゲーム セッションを完了します。- ロビーは一時的なものなので、この時点で永続化すべきロビーのデータは各プレイヤーが保持する必要があります。
- たとえば、一部のゲーム シナリオでは、メンバー プロパティに格納されたデータを処理してプレイヤーのアチーブメントに変換すると有益な場合があります。
- 同じグループでプレイを続けたいプレイヤーはロビーに残ります。
- 同じグループでのプレイを終了したいプレイヤーは PFLobbyLeave でロビーを退出し、新しいマッチメイキング グループでプロセスを再開します。
