> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gestion des cas d'erreur courants

> Gérez les cas d'erreur courants de PlayFab Matchmaking, notamment l'annulation de tickets, les délais d'expiration, les attributs non valides et les échecs de création de correspondance dans votre titre.

Le matchmaking PlayFab fournit une interface simple pour entrer dans le matchmaking et en sortir. Malgré cela, il existe plusieurs points où les choses *peuvent ne pas* se dérouler comme prévu. Certains des cas d'erreur les plus courants sont présentés ci-dessous, ainsi que la façon dont un titre doit les gérer.

Cette page suppose que vous connaissez le flux général du matchmaking PlayFab. Pour plus d'informations sur l'utilisation courante du matchmaking, consultez notre [Démarrage rapide du matchmaking](/fr/services/playfab/multiplayer/matchmaking/quickstart).

## 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.

<Note>
  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](/fr/services/playfab/multiplayer/matchmaking/ticket-attributes).
</Note>

D'autres codes d'erreur indiquent que la requête est valide, mais que des circonstances extérieures à la requête empêchent l'acceptation du ticket. Il s'agit notamment de :

1. `MatchmakingRateLimitExceeded` : indique que vous avez soumis des tickets trop fréquemment. Pour plus d'informations, consultez la section [ci-dessous](#call-returns-matchmakingratelimitexceeded).
2. `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](#creating-or-joining-a-ticket-returns-matchmakingticketmembershiplimitexceeded).

Si vous recevez un code d'erreur HTTP 503, réessayez votre requête après un court délai.

<a id="call-returns-matchmakingratelimitexceeded" />

## 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'erreur `MatchmakingRateLimitExceeded` 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](xref:titleid.playfabapi.com.multiplayer.matchmaking.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.

<Note>
  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.
</Note>

<a id="creating-or-joining-a-ticket-returns-matchmakingticketmembershiplimitexceeded" />

## 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'erreur `MatchmakingTicketMembershipLimitExceeded` 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](xref:titleid.playfabapi.com.multiplayer.matchmaking.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](xref:titleid.playfabapi.com.multiplayer.matchmaking.listmatchmakingticketsforplayer)
renvoie tous les ID de tickets de matchmaking dont l'utilisateur est membre. L'appel de [GetMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.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](/fr/services/playfab/multiplayer/lobby/lobby-and-matchmaking), 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 appelez `GetMatchmakingTicket` 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.

| CancellationReason | Description | Résolution |
| - | - | - |
| User | L'utilisateur a annulé le ticket de matchmaking | Intentionnel. Créez un nouveau ticket si vous le souhaitez. |
| Server | Le service a annulé le ticket de matchmaking via l'API serveur | Intentionnel. Créez un nouveau ticket si vous le souhaitez. |
| Timeout | Le ticket a expiré en atteignant GiveUpAfterSeconds | Réessayez avec un nouveau ticket et ajustez les attributs du ticket si nécessaire. |
| ServerAllocationFailed | La file d'attente alloue un serveur, mais la requête d'allocation a échoué | Vérifiez que des serveurs en veille sont disponibles dans les régions et réessayez avec un nouveau ticket. |
| TicketUnmatchable | La combinaison des paramètres du ticket et des règles de la file d'attente rend ce ticket impossible à mettre en correspondance | Ajustez les attributs du ticket ou la configuration de la file d'attente pour les rendre compatibles. |
| RetryRequired | Erreur temporaire interne du matchmaking | Réessayez avec un nouveau ticket ; il s'agit probablement d'un problème de synchronisation qui devrait se résoudre à la requête suivante. |
| Internal | Erreur interne du service de matchmaking | Réessayez avec un nouveau ticket. |

## 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'erreur `MatchmakingTicketAlreadyCompleted` indique l'une des deux possibilités suivantes :

1. Le ticket a déjà été annulé.
2. Le ticket a déjà été mis en correspondance.

Lorsqu'ils reçoivent cette erreur, les titres doivent appeler [GetMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatchmakingticket) pour distinguer ces deux cas. Dans le premier cas, le ticket est déjà dans l'état souhaité et aucune autre action n'est nécessaire. Le second cas indique que l'annulation de l'utilisateur est arrivée trop tard et que le ticket a déjà été mis en correspondance. Cette situation de concurrence entre l'annulation d'un utilisateur et la découverte d'une correspondance est inévitable et doit être gérée par le titre.

Le titre dispose de deux options pour résoudre ce problème : rejoindre malgré tout la correspondance, en ignorant la demande d'annulation de l'utilisateur, ou laisser la correspondance commencer en sachant qu'un joueur ne la rejoindra pas. Aucune des deux options n'est parfaite, mais il est important de s'attendre à cette situation et de concevoir consciemment un flux de titre pour y faire face. Notez également que des joueurs peuvent ne pas rejoindre une correspondance pour de nombreuses raisons ; un titre doit donc gérer ce cas indépendamment de la situation de concurrence mentionnée ici.


## Related topics

- [Matchmaking](/fr/services/playfab/multiplayer/matchmaking/index.md)
- [Gestion des erreurs des places de marché](/fr/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-error-handling.md)
- [Bonnes pratiques de gestion des erreurs du SDK](/fr/services/playfab/live-service-management/service-gateway/automation/cloudscript/sdk-error-handling-best-practices.md)
- [Types de gestion des erreurs](/fr/services/xbox-services/develop/error-handling/live-types-of-error-handling.md)
- [FAQ sur la gestion des erreurs de Game Saves](/fr/services/playfab/player-progression/game-saves/error-handling-faq.md)
