サーバー上でホストされているゲームでは、追加のプレイヤーを探す必要が生じることがあります。多くの場合、これはゲームが進行中に 1 人以上のプレイヤーが切断したときに起こります。サーバー バックフィル チケットにより、ゲーム サーバーは現在プレイ中のゲームに適合する追加のプレイヤーを検索できます。
サーバー バックフィル チケットは、通常のマッチメイキング チケットとは以下の点で異なります。
- マッチング
- バックフィル チケットは互いにマッチできません。
- バックフィル チケットは検索時に優先されるため、プレイヤーベースの断片化を軽減します。
- コントラクト
- バックフィル チケットは
ServerDetails フィールド付きで作成できます。これによりサーバーは、マッチしたプレイヤーがどのように接続すべきかを示すことができます。
- バックフィル チケットはチーム割り当てを伴って作成できます。これによりチームのあるゲームでは、チーム情報を維持できます。
- キューのプロパティ
- 所有権
- バックフィル チケットはユーザーではなく、ゲーム サーバーが所有します。ユーザーはバックフィル チケットを表示したり操作したりすることはできません。
前提条件
- PlayFab Multiplayer SDK の基本的な理解。詳細については、マッチメイキング SDK クイックスタート を参照してください。
- マッチメイキング ヘッダーを含める前に
PFMULTIPLAYER_INCLUDE_SERVER_APIS を定義してください。例:
サーバー バックフィル チケットを構成する
必要な詳細を PFMatchmakingServerBackfillTicketConfiguration 構造体に作成して設定します。
PFMultiplayerServerDetails::ipv4Address フィールドは検証されず、クライアントに任意の接続文字列情報を提供するために使用できます。
サーバー バックフィル チケットを作成する
PFMultiplayerCreateServerBackfillTicket を使用してサーバー バックフィル チケットを作成するには、前のステップで作成したバックフィル構成とともに、ゲーム サーバーのエンティティ (PFEntityKey として) を渡す必要があります。
マッチメイキング チケットのステータスを確認する
チケットの更新を確認するには、PFMultiplayerStartProcessingMatchmakingStateChanges を呼び出して状態変更を受信し、それらの状態変更の処理が終わったら PFMultiplayerFinishProcessingMatchmakingStateChanges を呼び出す必要があります。
SDK は、チケットのステータスが変わるたびに TicketStatusChanged 状態変更を返し、マッチメイキングが完了したときに TicketCompleted 状態変更を返します。
マッチを取得する
PFMatchmakingStateChangeType::TicketCompleted 状態変更を受信した後、PFMatchmakingTicketGetMatch を呼び出してマッチの詳細を取得します。これらの詳細には、マッチ ID、マッチした状態のユーザー、そのマッチに推奨されるリージョン、およびマッチに関連付けられたロビーの arrangement string が含まれます。
PFMatchmakingMatchDetails 構造体から必要な情報を取得したら、PFMultiplayerDestroyMatchmakingTicket でチケットを破棄する必要があります。
チケットをキャンセルする
PFMatchmakingServerBackfillTicketConfiguration で設定したタイムアウト前にマッチメイキング処理をキャンセルしたい場合は、チケット ハンドルを指定して PFMatchmakingTicketCancel を呼び出します。
この API を呼び出しても、チケットがキャンセルされることは保証されません。キャンセルが処理される前にチケットが完了する場合や、ネットワークやサービスのエラーによりキャンセル要求が失敗する場合があります。次に進む前にチケットのキャンセルが完了したことを確認したい場合は、引き続きマッチメイキングの状態変更を処理してチケットの結果を取得できます。それ以外の場合は、即座に PFMultiplayerDestroyMatchmakingTicket を呼び出すことができます。