建立票證時的錯誤
建立票證可能因許多原因而失敗。在大多數情況下,PlayFab 錯誤碼會指出提交要求中的無效之處。修正之後,您就能成功提交。錯誤
MatchmakingAttributeInvalid 和 MatchmakingPlayerAttributesInvalid 表示屬性格式有問題。如需如何在票證中傳遞屬性的詳細資訊,請參閱指定票證屬性一節。MatchmakingRateLimitExceeded- 這表示您提交票證的頻率太高。如需詳細資訊,請參閱下方一節。MatchmakingTicketMembershipLimitExceeded- 這表示使用者已在另一張作用中的票證中。使用者在同一個佇列中一次只能位於一張票證中,因為他們無法同時玩兩場遊戲。如需修正此情況的詳細資訊,請參閱下方更詳細的章節。
呼叫傳回 MatchmakingRateLimitExceeded
與其他 PlayFab 功能類似,PlayFab 配對會根據 Game Manager 內設定的限制,限制您進行的呼叫次數。收到MatchmakingRateLimitExceeded 錯誤表示遊戲已超過此呼叫類型的限制。
在配對中,這最常發生在輪詢 GetMatchmakingTicket 以查看票證是否已配對時。
若要避免此錯誤,請提高您的限制,或降低呼叫頻率。
雖然回應的 HTTP 狀態碼為 429,但要求本身是有效的,仍可重試。
建立或加入票證時傳回 MatchmakingTicketMembershipLimitExceeded
在 PlayFab 配對中,使用者在每個佇列中一次只能位於一張票證中,以避免使用者進入兩場比賽,而必須決定要履行哪張票證的情況。未被履行的比賽會少一位玩家,其玩家很可能被迫重新進入配對。如果使用者已位於一張尚未取消或配對的票證中,卻嘗試建立或加入另一張票證,就會傳回錯誤MatchmakingTicketMembershipLimitExceeded。
不過,有時遊戲或伺服器可能會因為當機、重新啟動或其他無法預期的錯誤而失去票證的追蹤。發生這種情況時,就會留下一張使用者和遊戲都不知道的作用中票證。
這張遺失的票證會阻止為此使用者提交任何未來的票證,直到其到期為止。如果發生這種情況,有兩個選項可以解決此問題:
選項 1:從配對中清除票證
取消使用者所有現有的票證。呼叫 CancelAllMatchmakingTicketsForPlayer 即可執行此工作。之後,配對中不會有任何進行中的票證,並準備好建立新的票證。選項 2:找出遺失的票證
找出使用者現有的票證並繼續使用。呼叫 ListMatchmakingTicketsForPlayer 會傳回使用者所屬的所有配對票證識別碼。對每個提供的 ticketId 呼叫 GetMatchmakingTicket,即可擷取其狀態並持續監視,直到找到比賽為止。並非所有玩家都加入多使用者票證
建立多使用者票證時,其中一位受邀玩家可能無法加入或拒絕加入。在這種情況下,建立的票證會維持在 WaitingForPlayers 狀態,直到到期為止。遊戲應預期這種情況偶爾會發生,並在 UI 中設定相當短的逾時。 逾時之後,遊戲應取消票證,並確認所有玩家仍同意一起玩遊戲。GetMatch 傳回找不到
比賽建立後會存在一段時間,最終會過期。如果未及時擷取比賽,這些使用者需要重新提交票證才能再次配對。確保及時 (也就是在幾分鐘內) 擷取比賽即可避免這種情況。 如果您依照這裡所述同時使用 Matchmaking 和 Lobby,lobbyArrangementString 可能會在比賽於此逾時後仍有效一段時間。請務必在 GetMatch 的資訊到期之前擷取並使用。票證已取消
票證可能因多種原因而被取消。最常見的情況是使用者取消和票證到期,但票證也可能被伺服器取消。如果您呼叫GetMatchmakingTicket 並發現票證已取消,原因會列在 CancellationReason 欄位中。下表列出可能的 CancellationReason 回應及可能的解決方式。
取消票證時傳回錯誤
取消票證不保證一定會成功。雖然大多數錯誤都很容易理解,但錯誤MatchmakingTicketAlreadyCompleted 表示以下兩種可能性之一:
- 票證已經被取消。
- 票證已經配對成功。
