チケット作成時のエラー
チケットの作成は、さまざまな理由で失敗する可能性があります。ほとんどの場合、PlayFab エラー コードが送信要求に関する無効な内容を識別します。これを修正することで、正常に送信できます。エラー
MatchmakingAttributeInvalid および MatchmakingPlayerAttributesInvalid は、属性のフォーマットに関する問題を示します。チケット内で属性を渡す方法の詳細については、チケット属性の指定 セクションを参照してください。MatchmakingRateLimitExceeded- チケットの送信頻度が高すぎることを示します。詳細については、以下 のセクションを参照してください。MatchmakingTicketMembershipLimitExceeded- ユーザーがすでに別のアクティブなチケットに参加していることを示します。ユーザーは 2 つのゲームを同時にプレイできないため、キュー内で同時に複数のチケットに参加することは制限されています。この状況を修正する方法の詳細については、以下 のより詳細なセクションを参照してください。
呼び出しが MatchmakingRateLimitExceeded を返す
他の PlayFab 機能と同様に、PlayFab マッチメイキングは、Game Manager 内で構成された制限に従って、呼び出しの数を制限します。MatchmakingRateLimitExceeded エラーを受信することは、タイトルがこの呼び出しタイプの制限を超えたことを示します。
マッチメイキングでは、これは GetMatchmakingTicket をポーリングしてチケットがマッチしたかどうかを確認する際に最もよく発生します。
このエラーを回避するには、制限を増やすか、呼び出し頻度を減らしてください。
応答の HTTP ステータス コードは 429 ですが、要求自体は有効であり、再試行できます。
チケットの作成または参加が MatchmakingTicketMembershipLimitExceeded を返す
PlayFab マッチメイキングでは、ユーザーが 2 つのマッチに参加してどちらのチケットを尊重するかを決めなければならない状況を避けるため、ユーザーはキューごとに一度に 1 つのチケットにしか参加できません。尊重されない方のマッチは 1 人プレイヤーが不足することになり、そのプレイヤーはマッチメイキングに再度参加する必要が生じる可能性が高くなります。ユーザーがキャンセルもマッチもされていないチケットに既に参加している状態で別のチケットを作成または参加しようとすると、MatchmakingTicketMembershipLimitExceeded エラーが返されます。
しかし、タイトルやサーバーがクラッシュ、再起動、その他の予期しないエラーなどにより、チケットを見失うことがあります。これが発生すると、ユーザーもタイトルも認識していないアクティブなチケットが残されます。
この失われたチケットは、有効期限が切れるまで、このユーザーの今後のチケットの送信を妨げます。これが発生した場合、問題を解決するための 2 つの選択肢があります。
オプション 1: マッチメイキングからチケットを削除する
ユーザーの既存のチケットをすべてキャンセルします。CancelAllMatchmakingTicketsForPlayer を呼び出すと、このタスクを実行できます。その後、マッチメイキングには処理中のチケットが存在しなくなり、新しいチケットの作成準備が整います。オプション 2: 失われたチケットを見つける
ユーザーの既存のチケットを見つけて使用し続けます。ListMatchmakingTicketsForPlayer を呼び出すと、そのユーザーがメンバーであるすべてのマッチメイキング チケット ID が返されます。提供された各 ticketId に対して GetMatchmakingTicket を呼び出すことで、その状態を取得し、マッチが見つかるまでモニタリングを継続できます。マルチ ユーザー チケットに全プレイヤーが参加しない
マルチ ユーザー チケットを作成するとき、招待されたプレイヤーの 1 人が失敗する、または参加を拒否することがあります。このような場合、作成されたチケットは有効期限が切れるまで WaitingForPlayers ステータスのままになります。タイトルはこの状況が時々発生することを想定し、UI 内でかなり短いタイムアウトを設定するべきです。 そのタイムアウト後、タイトルはチケットをキャンセルし、すべてのプレイヤーが依然として一緒にゲームをプレイすることに同意しているかを確認する必要があります。GetMatch が not found を返す
マッチが作成されると、マッチは一定期間存続し、最終的に期限切れになります。マッチが時間内に取得されない場合、それらのユーザーは再度マッチさせるためにチケットを再送信する必要があります。マッチが適切なタイミング (数分以内) で取得されるようにすることで、これを回避できます。 こちら で説明されているように、マッチメイキングとロビーを一緒に使用している場合、マッチがここでタイムアウトしてから一定期間 lobbyArrangementString が有効なままである可能性があります。期限が切れる前に GetMatch から情報を取得して使用するようにしてください。チケットがキャンセルされる
チケットは複数の理由でキャンセルされることがあります。最も一般的なケースは、ユーザーによるキャンセルとチケットの有効期限切れですが、サーバーによってもチケットをキャンセルできます。GetMatchmakingTicket を呼び出してチケットがキャンセルされていることが判明した場合、その理由は CancellationReason フィールドに記載されています。使用可能な CancellationReason 応答と、対応する解決策を以下に示します。
チケットのキャンセルがエラーを返す
チケットのキャンセルは必ず成功するとは限りません。ほとんどのエラーは自明ですが、MatchmakingTicketAlreadyCompleted エラーは、以下の 2 つの可能性のうちいずれかを示します。
- チケットは既にキャンセルされている。
- チケットは既にマッチされている。
