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.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 para conocer los detalles de cómo pasar atributos en un vale.MatchmakingRateLimitExceeded- Indica que ha estado enviando vales con demasiada frecuencia. Para obtener más información, consulte la sección siguiente para conocer más detalles.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 sobre cómo corregir esta situación.
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 errorMatchmakingRateLimitExceeded 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 para ver si un vale ha coincidido.
Para evitar este error, aumente el límite o reduzca la frecuencia de llamadas.
Aunque la respuesta tiene un código de estado HTTP 429, la solicitud en sí es válida y aún puede reintentarse.
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 errorMatchmakingTicketMembershipLimitExceeded 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 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 devuelve todos los identificadores de vale de emparejamiento de los que el usuario es miembro. Llamar a 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í, 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 aGetMatchmakingTicket 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.
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 errorMatchmakingTicketAlreadyCompleted indica una de dos posibilidades:
- El vale ya se había cancelado.
- El vale ya había coincidido.
