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

# Control de casos de error comunes

> Controle los casos de error comunes del emparejamiento de PlayFab, como la cancelación de vales, los tiempos de espera, los atributos no válidos y los errores de creación de partidas en su título.

El emparejamiento de PlayFab proporciona una interfaz sencilla para entrar y salir del emparejamiento. A pesar de ello, sigue habiendo varios puntos en los que las cosas *pueden no* salir según lo previsto. A continuación se muestran algunos de los casos de error más comunes, junto con las formas en que un título debe controlarlos.

Esta página presupone que está familiarizado con el flujo general del emparejamiento de PlayFab. Para obtener más información, consulte nuestro [Inicio rápido de emparejamiento](/services/playfab/multiplayer/matchmaking/quickstart) sobre el
uso común del emparejamiento.

## Errores al crear vales

La creación de vales puede producir errores por varios motivos. En la mayoría de estos casos, el código de error de PlayFab identifica algo no válido en la solicitud de envío. Al corregirlo, podrá realizar el envío correctamente.

<Note>
  Los errores `MatchmakingAttributeInvalid` y `MatchmakingPlayerAttributesInvalid` indican un problema con el formato de los atributos. Para obtener más información, consulte la sección sobre [Especificación de atributos de vale](/services/playfab/multiplayer/matchmaking/ticket-attributes) para conocer los detalles de cómo pasar atributos en un vale.
</Note>

Otros códigos de error indican que la solicitud es válida, pero que circunstancias ajenas a la solicitud impiden que se acepte el vale. En concreto, son los siguientes:

1. `MatchmakingRateLimitExceeded` - Indica que ha estado enviando vales con demasiada frecuencia. Para obtener más información, consulte la sección [siguiente](#call-returns-matchmakingratelimitexceeded) para conocer más detalles.
2. `MatchmakingTicketMembershipLimitExceeded` - Indica que el usuario ya está en otro vale activo. Los usuarios tienen restringido estar en más de un vale a la vez dentro de una cola, ya que no pueden jugar dos partidas al mismo tiempo. Para obtener más información, consulte la sección más detallada [siguiente](#creating-or-joining-a-ticket-returns-matchmakingticketmembershiplimitexceeded) sobre cómo corregir esta situación.

Si recibe un código de error HTTP 503, reintente la solicitud tras una breve espera.

## La llamada devuelve MatchmakingRateLimitExceeded

Al igual que otras características de PlayFab, el emparejamiento de PlayFab restringe el número de llamadas que realiza, según los límites configurados en el administrador de juegos. Recibir el error `MatchmakingRateLimitExceeded` indica que el título ha superado el límite para este tipo de llamada.

En el emparejamiento, esto ocurre con mayor frecuencia al sondear [GetMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatchmakingticket) para ver si un vale ha coincidido.

Para evitar este error, aumente el límite o reduzca la frecuencia de llamadas.

<Note>
  Aunque la respuesta tiene un código de estado HTTP 429, la solicitud en sí es válida y aún puede reintentarse.
</Note>

## Crear un vale o unirse a él devuelve MatchmakingTicketMembershipLimitExceeded

En el emparejamiento de PlayFab, un usuario solo puede estar en un vale a la vez por cola, para evitar el caso en que un usuario entre en dos partidas y deba decidir qué vale respetar. La partida que no se respete quedará con un jugador menos, y sus jugadores probablemente se verán obligados a volver a entrar en el emparejamiento. El error `MatchmakingTicketMembershipLimitExceeded` se devuelve si un usuario ya está en un vale que no se ha cancelado ni ha coincidido, pero intenta crear otro o unirse a otro.

Sin embargo, a veces un título o servidor puede perder el rastro de un vale, ya sea por un bloqueo, un reinicio u otros errores imprevistos. Cuando esto ocurre, queda un vale activo del que ni el usuario ni el título tienen constancia.

Este vale perdido impide que se envíen futuros vales para este usuario hasta que expire. Si esto ocurre, hay dos opciones disponibles para resolver el problema:

### Opción 1: Borrar el vale del emparejamiento

Cancele todos los vales existentes de un usuario. Llamar a [CancelAllMatchmakingTicketsForPlayer](xref:titleid.playfabapi.com.multiplayer.matchmaking.cancelallmatchmakingticketsforplayer) realiza esta tarea. Después, el emparejamiento no tendrá vales en curso y estará listo para que se cree un vale nuevo.

### Opción 2: Encontrar el vale perdido

Encuentre el vale existente del usuario y siga usándolo. Llamar a
[ListMatchmakingTicketsForPlayer](xref:titleid.playfabapi.com.multiplayer.matchmaking.listmatchmakingticketsforplayer)
devuelve todos los identificadores de vale de emparejamiento de los que el usuario es miembro. Llamar a [GetMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatchmakingticket)
con cada ticketId proporcionado le permite recuperar su estado y seguir supervisándolo hasta que encuentre una partida.

## No todos los jugadores se unen a un vale multiusuario

Al crear un vale multiusuario, es posible que uno de los jugadores invitados no pueda unirse o se niegue a hacerlo. En un caso así, el vale creado permanece en el estado WaitingForPlayers hasta que expira. Los títulos deben prever que esta situación ocurra de vez en cuando y establecer un tiempo de espera bastante corto en la interfaz de usuario.

Transcurrido ese tiempo de espera, el título debe cancelar el vale y comprobar que todos los jugadores siguen de acuerdo en jugar una partida juntos.

## GetMatch devuelve no encontrado

Una vez creada una partida, esta se mantiene durante un período de tiempo y finalmente caduca. Si la partida no se recupera a tiempo, esos usuarios deberán volver a enviar vales para emparejarse de nuevo. Esto puede evitarse asegurándose de que las partidas se recuperen a tiempo (es decir, en cuestión de unos minutos).

Si usa el emparejamiento y el lobby juntos como se describe [aquí](/services/playfab/multiplayer/lobby/lobby-and-matchmaking), es posible que el lobbyArrangementString sea válido durante un período de tiempo después de que la partida caduque aquí. Asegúrese de recuperar y usar la información de GetMatch antes de que expire.

## El vale se cancela

Los vales pueden cancelarse por varios motivos. Los casos más comunes son las cancelaciones de usuarios y la expiración de los vales, pero el vale también puede ser cancelado por el servidor. Si llama a `GetMatchmakingTicket` y descubre que su vale está cancelado, el motivo aparece en el campo `CancellationReason`. Las posibles respuestas de `CancellationReason`, junto con las posibles resoluciones, se enumeran a continuación.

| CancellationReason     | Descripción                                                                                             | Resolución                                                                                                                                    |
| ---------------------- | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| User                   | El usuario canceló el vale de emparejamiento                                                            | Intencionado. Cree un vale nuevo si lo desea.                                                                                                 |
| Server                 | El servicio canceló el vale de emparejamiento mediante la API de servidor                               | Intencionado. Cree un vale nuevo si lo desea.                                                                                                 |
| Timeout                | El vale expiró al alcanzar GiveUpAfterSeconds                                                           | Inténtelo de nuevo con un vale nuevo y ajuste los atributos del vale si es necesario.                                                         |
| ServerAllocationFailed | La cola asigna un servidor pero la solicitud de asignación produjo un error                             | Confirme que hay servidores en espera disponibles en las regiones e inténtelo de nuevo con un vale nuevo.                                     |
| TicketUnmatchable      | La combinación de los parámetros del vale y las reglas de la cola hace que este vale no pueda coincidir | Ajuste los atributos del vale o la configuración de la cola para que sean compatibles.                                                        |
| RetryRequired          | Error transitorio interno del emparejamiento                                                            | Inténtelo de nuevo con un vale nuevo; probablemente se deba a un problema de sincronización que debería resolverse en la siguiente solicitud. |
| Internal               | Error interno del servicio de emparejamiento                                                            | Inténtelo de nuevo con un vale nuevo.                                                                                                         |

## La cancelación de un vale devuelve un error

No se garantiza que la cancelación de un vale se realice correctamente. Aunque la mayoría de los errores se explican por sí mismos, el error `MatchmakingTicketAlreadyCompleted` indica una de dos posibilidades:

1. El vale ya se había cancelado.
2. El vale ya había coincidido.

Al recibir este error, los títulos deben llamar a [GetMatchmakingTicket](xref:titleid.playfabapi.com.multiplayer.matchmaking.getmatchmakingticket) para diferenciar entre estos dos casos. En el primer caso, el vale ya está en el estado deseado y no es necesario realizar ninguna acción adicional. El segundo caso indica que la cancelación del usuario llegó demasiado tarde y que ya se había producido la coincidencia. Esta condición de carrera entre la cancelación de un usuario y la búsqueda de una partida es inevitable y debe ser controlada por el título.

El título tiene dos opciones para resolverlo: unirse a la partida de todos modos, ignorando la solicitud de cancelación del usuario, o permitir que la partida comience sabiendo que un jugador no se unirá. Ninguna de las opciones es perfecta, pero es importante prever que esta situación ocurra y crear conscientemente un flujo del título para ella. También cabe señalar que los jugadores pueden no unirse a una partida por muchos motivos, por lo que un título debe controlar este caso independientemente de la condición de carrera mencionada aquí.


## Related topics

- [Casos de prueba con más errores en PC](/es/publishing/certification/pc-top-failing.md)
- [Tipos de control de errores](/es/services/xbox-services/develop/error-handling/live-types-of-error-handling.md)
- [Control de errores de PlayFab](/es/services/playfab/sdks/c/errors.md)
- [Control de errores del marketplace](/es/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-error-handling.md)
- [Miembros de XError](/es/reference/system/xerror/xerror_members.md)
