Erros na criação de tíquetes
A criação de tíquetes pode falhar por vários motivos. Na maioria desses casos, o código de erro do PlayFab identifica algo inválido na solicitação de envio. Corrigir isso permite que você envie com êxito.Os erros
MatchmakingAttributeInvalid e MatchmakingPlayerAttributesInvalid indicam um problema na formatação dos atributos. Para obter detalhes sobre como passar atributos em um tíquete, confira a seção Especificando atributos de tíquete.MatchmakingRateLimitExceeded- Indica que você está enviando tíquetes com muita frequência. Para obter mais detalhes, confira a seção abaixo.MatchmakingTicketMembershipLimitExceeded- Indica que o usuário já está em outro tíquete ativo. Os usuários não podem estar em mais de um tíquete em uma fila ao mesmo tempo, pois não podem jogar duas partidas ao mesmo tempo. Para obter mais informações sobre como corrigir essa situação, confira a seção mais detalhada abaixo.
A chamada retorna MatchmakingRateLimitExceeded
Assim como em outros recursos do PlayFab, o matchmaking do PlayFab restringe o número de chamadas que você faz, de acordo com os limites configurados no Game Manager. Receber o erroMatchmakingRateLimitExceeded indica que o título excedeu o limite para esse tipo de chamada.
No matchmaking, isso ocorre com mais frequência ao sondar GetMatchmakingTicket para verificar se um tíquete foi combinado.
Para evitar esse erro, aumente seu limite ou reduza a frequência das chamadas.
Embora a resposta tenha o código de status HTTP 429, a solicitação em si é válida e ainda pode ser repetida.
Criar ou ingressar em um tíquete retorna MatchmakingTicketMembershipLimitExceeded
No matchmaking do PlayFab, um usuário só pode estar em um tíquete por vez em cada fila, para evitar o caso em que um usuário entra em duas partidas e precisa decidir qual tíquete honrar. A partida que não for honrada ficará com um jogador a menos, e seus jogadores provavelmente serão forçados a voltar ao matchmaking. O erroMatchmakingTicketMembershipLimitExceeded é retornado se um usuário já estiver em um tíquete que não foi cancelado nem combinado e tentar criar ou ingressar em outro.
No entanto, às vezes um título ou servidor pode perder o controle de um tíquete, seja por uma falha, uma reinicialização ou outros erros imprevistos. Quando isso ocorre, fica um tíquete ativo do qual nem o usuário nem o título têm conhecimento.
Esse tíquete perdido impede que quaisquer tíquetes futuros sejam enviados para esse usuário até que ele expire. Se isso acontecer, há duas opções disponíveis para resolver o problema:
Opção 1: Remover o tíquete do matchmaking
Cancele todos os tíquetes existentes de um usuário. Chamar CancelAllMatchmakingTicketsForPlayer executa essa tarefa. Depois disso, o matchmaking não terá tíquetes em andamento e estará pronto para que um novo tíquete seja criado.Opção 2: Encontrar o tíquete perdido
Encontre o tíquete existente do usuário e continue usando-o. Chamar ListMatchmakingTicketsForPlayer retorna todas as IDs de tíquetes de matchmaking das quais o usuário é membro. Chamar GetMatchmakingTicket em cada ticketId fornecido permite recuperar seu estado e continuar monitorando-o até que encontre uma partida.Nem todos os jogadores ingressam em um tíquete multiusuário
Ao criar um tíquete multiusuário, um dos jogadores convidados pode não conseguir ingressar ou se recusar a fazê-lo. Em um caso como esse, o tíquete criado permanece no status WaitingForPlayers até expirar. Os títulos devem esperar que essa situação aconteça de vez em quando e definir um tempo limite razoavelmente curto na interface do usuário. Após esse tempo limite, o título deve cancelar o tíquete e verificar se todos os jogadores ainda concordam em jogar uma partida juntos.GetMatch retorna não encontrado
Depois que uma partida é criada, ela existe por um período e, eventualmente, expira. Se a partida não for recuperada a tempo, esses usuários precisarão reenviar tíquetes para serem combinados novamente. Isso pode ser evitado garantindo que as partidas sejam recuperadas em tempo hábil (ou seja, em poucos minutos). Se você estiver usando Matchmaking e Lobby juntos, conforme descrito aqui, é possível que a lobbyArrangementString continue válida por um período depois que a partida expirar aqui. Certifique-se de recuperar e usar as informações de GetMatch antes que elas expirem.O tíquete é cancelado
Os tíquetes podem ser cancelados por vários motivos. Os casos mais comuns são cancelamentos pelo usuário e tíquetes que expiram, mas o tíquete também pode ser cancelado pelo servidor. Se você chamarGetMatchmakingTicket e descobrir que seu tíquete foi cancelado, o motivo será listado no campo CancellationReason. As possíveis respostas de CancellationReason, junto com possíveis soluções, estão listadas abaixo.
Cancelar um tíquete retorna um erro
Não há garantia de que o cancelamento de um tíquete seja bem-sucedido. Embora a maioria dos erros seja autoexplicativa, o erroMatchmakingTicketAlreadyCompleted indica uma de duas possibilidades:
- O tíquete já foi cancelado.
- O tíquete já foi combinado.
