Skip to main content
En este artículo se describe cómo el emparejamiento de PlayFab evalúa los vales, aplica las reglas y forma las partidas. Comprender el proceso de coincidencia le ayuda a diseñar configuraciones de cola que produzcan partidas de alta calidad de forma eficaz.

Información general de la formación de partidas

Cuando envía un vale a una cola, el servicio de emparejamiento lo coloca junto a otros vales en espera. El servicio ejecuta continuamente un bucle de coincidencia que intenta agrupar vales compatibles en partidas. Esto es lo que ocurre en cada paso:
  1. Se quitan los vales expirados. Los vales que superan su tiempo de espera GiveUpAfterSeconds se cancelan.
  2. Los vales se ordenan por tiempo de espera: El vale que lleva más tiempo esperando se convierte en la semilla, o punto de partida, de una posible partida.
  3. Los candidatos se clasifican por compatibilidad: Cada vale restante recibe una puntuación de distancia en función de lo bien que sus atributos se alinean con el vale semilla, según las reglas de la cola.
  4. Se construye un grupo de forma voraz: Empezando por los candidatos más cercanos, los vales se agregan al grupo de uno en uno, hasta MaxMatchSize.
  5. Cada adición se valida: A medida que se agrega un vale, cada regla comprueba si el candidato sigue siendo compatible con el grupo formado hasta ese momento. Si alguna regla lo rechaza, el candidato se omite.
  6. El grupo completo se valida: Una vez que un grupo alcanza al menos MinMatchSize, un pase final de validación confirma que el grupo cumple todas las reglas. Si lo supera, se crea una partida.
  7. Retroceso: Si no se puede formar ningún grupo válido, el servicio quita el último vale agregado y prueba con el siguiente candidato. Este proceso explora agrupaciones alternativas antes de renunciar a la semilla actual.
A continuación, el servicio pasa al siguiente vale que lleva más tiempo esperando como nueva semilla y repite el proceso.
El algoritmo da prioridad a los vales que llevan más tiempo esperando. Esta prioridad garantiza que los jugadores que esperan más tiempo sean los primeros en recibir partidas.

Cómo influyen las reglas en la coincidencia

Las reglas cumplen dos propósitos durante la formación de partidas: filtrado y ordenación.

Filtrado

Una regla puede impedir que un vale se una a un grupo. Por ejemplo, una StringEqualityRule sobre la versión de compilación del juego rechaza cualquier vale cuya compilación no coincida con la compilación del grupo. El servicio de emparejamiento comprueba el filtrado cada vez que considera un candidato. No es solo una comprobación única al principio.

Ordenación (distancia)

Las reglas también aportan una puntuación de distancia que determina qué candidatos se prueban primero. Una distancia menor significa mayor compatibilidad.
  • Un vale con un valor de atributo idéntico suele obtener una distancia de 0.
  • Un vale en el límite del intervalo permitido por una regla obtiene una distancia cercana a 1.
  • Un vale fuera del intervalo permitido se filtra (distancia efectivamente infinita).
Cuando una cola tiene varias reglas, la distancia de cada regla se multiplica por su peso y se suman entre sí. Los vales se prueban en orden de menor a mayor distancia total, de modo que los candidatos más compatibles se prueban primero.
Use los pesos de las reglas para expresar la importancia relativa. Por ejemplo, si la similitud de habilidad importa más que la preferencia de región, asigne a la regla de habilidad un peso mayor.

Validación

Algunas restricciones solo pueden comprobarse después de formarse un grupo completo. Por ejemplo, las reglas de equilibrio de equipos (TeamDifferenceRule, TeamSizeBalanceRule) necesitan ver el grupo completo antes de poder evaluar si los equipos están equilibrados. Estas reglas se ejecutan como paso final de validación.

Expansión y relajación

Cuando un vale espera, las reglas relajan sus restricciones para ampliar la búsqueda. Dos mecanismos controlan este proceso:
  • Expansión: Una regla ajusta gradualmente su umbral con el tiempo. Por ejemplo, una DifferenceRule con un umbral de habilidad de 0,2 podría expandirse en 0,1 cada 5 segundos, hasta permitir finalmente una diferencia de 0,5.
  • Segundos hasta que sea opcional: Después de un tiempo configurado, la regla deja de filtrar por completo. La regla sigue contribuyendo a la ordenación (distancia), pero ya no bloquea las partidas.
La expansión siempre está basada en el tiempo. Se aplica uniformemente a todos los vales en función del tiempo que llevan esperando. Los vales que esperan más tiempo alcanzan de forma natural fases de expansión más amplias y pueden coincidir con un grupo más amplio de candidatos.
La relajación no significa que se ignore la calidad de la partida. Incluso cuando una regla se vuelve opcional, sigue aportando distancia al paso de ordenación. Los candidatos que cumplen la regla se prueban antes que los que no la cumplen.
Para obtener más detalles sobre la configuración de expansiones, consulte Configuración de colas de emparejamiento.

Escalado y particionamiento

Cuando una cola recibe un gran volumen de vales, el servicio particiona los vales en grupos que evalúa de forma independiente. El particionamiento usa atributos de reglas que dividen la población de forma natural. Por ejemplo, una StringEqualityRule sobre el modo de juego crea límites de partición claros. A medida que disminuye la carga, las particiones se vuelven a combinar. Este proceso proporciona al servicio un grupo más grande de candidatos y mejora la calidad de las partidas. Para obtener más detalles sobre el diseño de colas que escalen bien, consulte Escalado del emparejamiento.

Diseño para preferencias asimétricas

Algunos escenarios de emparejamiento implican preferencias asimétricas, en las que el jugador A está dispuesto a emparejarse con el jugador B, pero el jugador B no está dispuesto a emparejarse con el jugador A. La configuración de juego cruzado es el ejemplo más común. Para ver un patrón de configuración recomendado y un ejemplo desarrollado, consulte Control de preferencias asimétricas de juego cruzado.

Consulte también

Última modificación el 28 de agosto de 2026