Erreurs lors de la création d’un ticket
La création d’un ticket peut échouer pour plusieurs raisons. Dans la plupart de ces cas, le code d’erreur PlayFab identifie un élément non valide dans la requête de soumission. Le corriger vous permet d’effectuer la soumission avec succès.Les erreurs
MatchmakingAttributeInvalid et MatchmakingPlayerAttributesInvalid indiquent un problème de mise en forme des attributs. Pour plus d’informations sur la façon de transmettre des attributs dans un ticket, consultez la section Spécification des attributs de ticket.MatchmakingRateLimitExceeded: indique que vous avez soumis des tickets trop fréquemment. Pour plus d’informations, consultez la section ci-dessous.MatchmakingTicketMembershipLimitExceeded: indique que l’utilisateur fait déjà partie d’un autre ticket actif. Les utilisateurs ne peuvent pas faire partie de plus d’un ticket à la fois dans une file d’attente, car ils ne peuvent pas jouer à deux parties en même temps. Pour plus d’informations sur la correction de cette situation, consultez la section détaillée ci-dessous.
L’appel renvoie MatchmakingRateLimitExceeded
Comme d’autres fonctionnalités PlayFab, le matchmaking PlayFab limite le nombre d’appels que vous effectuez, selon les limites configurées dans Game Manager. La réception de l’erreurMatchmakingRateLimitExceeded indique que le titre a dépassé la limite pour ce type d’appel.
Dans le matchmaking, cela se produit le plus souvent lors de l’interrogation de GetMatchmakingTicket pour vérifier si un ticket a été mis en correspondance.
Pour éviter cette erreur, augmentez votre limite ou réduisez la fréquence de vos appels.
Bien que la réponse ait un code d’état HTTP 429, la requête elle-même est valide et peut toujours être réessayée.
La création ou la jonction d’un ticket renvoie MatchmakingTicketMembershipLimitExceeded
Dans le matchmaking PlayFab, un utilisateur ne peut faire partie que d’un seul ticket à la fois par file d’attente, afin d’éviter qu’un utilisateur entre dans deux correspondances et doive décider quel ticket honorer. La correspondance non honorée se retrouverait avec un joueur en moins, et ses joueurs seraient probablement contraints de revenir dans le matchmaking. L’erreurMatchmakingTicketMembershipLimitExceeded est renvoyée si un utilisateur fait déjà partie d’un ticket qui n’est ni annulé ni mis en correspondance, mais tente d’en créer ou d’en rejoindre un autre.
Cependant, il arrive qu’un titre ou un serveur perde la trace d’un ticket, à la suite d’un plantage, d’un redémarrage ou d’autres erreurs imprévues. Dans ce cas, il reste un ticket actif dont ni l’utilisateur ni le titre n’ont connaissance.
Ce ticket perdu empêche la soumission de tout ticket ultérieur pour cet utilisateur jusqu’à son expiration. Si cela se produit, deux options sont disponibles pour résoudre le problème :
Option 1 : effacer le ticket du matchmaking
Annulez tous les tickets existants d’un utilisateur. L’appel de CancelAllMatchmakingTicketsForPlayer effectue cette tâche. Ensuite, le matchmaking n’a plus aucun ticket en cours et est prêt pour la création d’un nouveau ticket.Option 2 : retrouver le ticket perdu
Retrouvez le ticket existant de l’utilisateur et continuez à l’utiliser. L’appel de ListMatchmakingTicketsForPlayer renvoie tous les ID de tickets de matchmaking dont l’utilisateur est membre. L’appel de GetMatchmakingTicket sur chaque ticketId fourni vous permet de récupérer son état et de continuer à le surveiller jusqu’à ce qu’il trouve une correspondance.Tous les joueurs ne rejoignent pas un ticket multi-utilisateur
Lors de la création d’un ticket multi-utilisateur, l’un des joueurs invités peut échouer ou refuser de le rejoindre. Dans ce cas, le ticket créé reste à l’état WaitingForPlayers jusqu’à son expiration. Les titres doivent s’attendre à ce que cette situation se produise de temps à autre et définir un délai d’expiration assez court dans l’interface utilisateur. Après ce délai, le titre doit annuler le ticket et vérifier que tous les joueurs acceptent toujours de jouer ensemble.GetMatch renvoie « introuvable »
Une fois qu’une correspondance est créée, elle existe pendant un certain temps puis finit par expirer. Si la correspondance n’est pas récupérée à temps, ces utilisateurs doivent soumettre de nouveau des tickets pour être mis en correspondance. Vous pouvez éviter cela en veillant à récupérer les correspondances en temps opportun (c’est-à-dire en quelques minutes). Si vous utilisez Matchmaking et Lobby ensemble comme décrit ici, il est possible que la lobbyArrangementString reste valide pendant un certain temps après l’expiration de la correspondance. Veillez à récupérer et à utiliser les informations de GetMatch avant leur expiration.Le ticket est annulé
Les tickets peuvent être annulés pour plusieurs raisons. Les cas les plus courants sont les annulations par l’utilisateur et l’expiration des tickets, mais le ticket peut également être annulé par le serveur. Si vous appelezGetMatchmakingTicket et découvrez que votre ticket est annulé, la raison est indiquée dans le champ CancellationReason. Les réponses CancellationReason possibles, ainsi que les résolutions potentielles, sont répertoriées ci-dessous.
L’annulation d’un ticket renvoie une erreur
L’annulation d’un ticket n’est pas garantie. Si la plupart des erreurs sont explicites, l’erreurMatchmakingTicketAlreadyCompleted indique l’une des deux possibilités suivantes :
- Le ticket a déjà été annulé.
- Le ticket a déjà été mis en correspondance.
