Personalización del algoritmo de coincidencia - Amazon GameLift Servers

Personalización del algoritmo de coincidencia

FlexMatch optimiza el algoritmo predeterminado de la mayoría de los juegos para que los jugadores participen en emparejamientos aceptables con un tiempo de espera mínimo. Puede personalizar el algoritmo y ajustar el emparejamiento para el juego.

El siguiente es el algoritmo de emparejamiento de FlexMatch predeterminado:

  1. FlexMatch coloca todos los tickets de emparejamiento abiertos y los tickets de reposición en un grupo de tickets.

  2. FlexMatch agrupa aleatoriamente los tickets del grupo en uno o más lotes. A medida que aumenta el grupo de tickets, FlexMatch forma lotes adicionales para mantener un tamaño de lote óptimo.

  3. Dentro de cada lote, FlexMatch clasifica los tickets por edad.

  4. FlexMatch compila un emparejamiento basado en el ticket más antiguo de cada lote.

Para personalizar el algoritmo de emparejamiento, añada un componente de algorithm a su esquema de conjunto de reglas. Para obtener información de referencia completa, consulte Esquema del conjunto de reglas de FlexMatch.

Utilice las siguientes personalizaciones opcionales para influir en las diferentes etapas del proceso de emparejamiento.

Adición de la clasificación previa a los lotes

Puede ordenar el grupo de tickets antes de formar los lotes. Este tipo de personalización es más eficaz en juegos con grandes grupos de tickets. La clasificación previa por lotes puede ayudar a acelerar el proceso de emparejamiento y a aumentar la uniformidad de los jugadores en cuanto a las características definidas.

Defina los métodos de clasificación previa a los lotes mediante la propiedad del algoritmo batchingPreference. El ajuste predeterminado es random.

Entre las opciones para personalizar la clasificación previa a los lotes se incluyen las siguientes:

  • Ordenar por atributos de jugador. Proporcione una lista de los atributos de los jugadores para ordenar previamente el grupo de tickets.

    Para ordenar por atributos de jugador, establezca batchingPreference en sorted y defina su lista de atributos de jugador en sortByAttributes. Para usar un atributo, primero declare el atributo en el componente playerAttributes del conjunto de reglas.

    En el siguiente ejemplo, FlexMatch ordena el grupo de tickets según el mapa de juego preferido de los jugadores y, a continuación, según la habilidad del jugador. Es más probable que los lotes resultantes contengan jugadores con habilidades similares que quieran utilizar el mismo mapa.

    "algorithm": { "batchingPreference": "sorted", "sortByAttributes": ["map", "player_skill"], "strategy": "exhaustiveSearch" },
  • Ordenar por latencia. Cree coincidencias con la latencia más baja disponible o cree rápidamente emparejamientos con una latencia aceptable. Esta personalización resulta útil para conjuntos de reglas que forman emparejamientos grandes de más de 40 jugadores.

    Establezca la propiedad del algoritmo strategy enbalanced. La estrategia equilibrada limita los tipos de declaraciones de reglas disponibles. Para obtener más información, consulte Diseño de un conjunto de reglas de emparejamiento amplio de FlexMatch.

    FlexMatch clasifica los tickets en función de los datos de latencia informados por los jugadores de una de las siguientes maneras:

    • Ubicaciones de latencia más baja. El grupo de tickets se clasifica previamente según las ubicaciones en las que los jugadores informan de sus valores de latencia más bajos. FlexMatch agrupa entonces los tickets con una latencia baja en las mismas ubicaciones, lo que contribuye a crear una mejor experiencia de juego. También reduce la cantidad de tickets en cada lote, por lo que el emparejamiento puede llevar más tiempo. Para utilizar esta personalización, establezca batchingPreference en fastestRegion, como se muestra en el siguiente ejemplo.

      "algorithm": { "batchingPreference": "fastestRegion", "strategy": "balanced" },
    • La latencia aceptable realiza el emparejamiento rápidamente. El grupo de tickets se clasifica previamente mediante ubicaciones en las que los jugadores informan de un valor de latencia aceptable. Esto forma menos lotes con más tickets. Con más tickets en cada lote, es más rápido encontrar emparejamientos aceptables. Para utilizar esta personalización, establezca la propiedad batchingPreference en largestPopulation, como se muestra en el siguiente ejemplo.

      "algorithm": { "batchingPreference": "largestPopulation", "strategy": "balanced" },
    nota

    El valor predeterminado para la estrategia equilibrada es largestPopulation.

Priorización los tickets de reposición

Si el juego implementa la reposición automática o manual, puede personalizar la forma en que FlexMatch procesa los tickets de emparejamiento según el tipo de solicitud. El tipo de solicitud puede ser un nuevo emparejamiento o una solicitud de relleno. De forma predeterminada, FlexMatch trata ambos tipos de solicitudes de la misma manera.

La priorización de reposición afecta a la forma en que FlexMatch gestiona los tickets después de agruparlos por lotes. La priorización de reposición requiere conjuntos de reglas para utilizar la estrategia de búsqueda exhaustiva.

FlexMatch no combina varios tickets de reposición.

Para cambiar la prioridad de los tickets de reposición, configure la propiedad backfillPriority.

  • Emparejar primero los tickets de reposición. Con esta opción se intenta igualar los tickets de reposición antes de crear nuevos emparejamientos. Esto significa que los jugadores entrantes tienen más probabilidades de unirse a un juego existente.

    Es mejor usar esto si el juego utiliza la reposición automática. La reposición automática se suele utilizar en juegos con sesiones de juego cortas y una alta rotación de jugadores. Además, la reposición automática ayuda a estos juegos a formar emparejamientos mínimos viables y a que comiencen, mientras que FlexMatch busca más jugadores para llenar las ranuras abiertas.

    Configure el backfillPriority en high.

    "algorithm": { "backfillPriority": "high", "strategy": "exhaustiveSearch" },
  • Emparejar los tickets de reposición al final. Con esta opción se ignoran los tickets de reposición hasta que evalúa todos los demás tickets. Esto significa que FlexMatch repone a los jugadores entrantes en los juegos existentes cuando no puede unirlos a juegos nuevos.

    Esta opción resulta útil cuando quiere utilizar la reposición como última opción para atraer jugadores a un juego, por ejemplo, cuando no hay suficientes jugadores para formar un nuevo juego.

    Establece backfillPriority en low.

    "algorithm": { "backfillPriority": "low", "strategy": "exhaustiveSearch" },

Preferencia de los tickets más antiguos con expansiones

Las reglas de expansión flexibilizan los criterios de los emparejamientos cuando estos son difíciles de completar. Amazon GameLift Servers aplica reglas de expansión cuando los tickets de un emparejamiento parcialmente completado alcanzan una antigüedad determinada. Las marcas de tiempo de creación de los tickets determinan cuándo Amazon GameLift Servers aplica las reglas; de forma predeterminada, FlexMatch realiza un seguimiento de la marca de tiempo del ticket emparejado más recientemente.

Para cambiar el momento en que FlexMatch aplica las reglas de expansión, defina la propiedad expansionAgeSelection de la siguiente manera:

  • Ampliar en función de los tickets más recientes. Esta opción permite aplicar las reglas de expansión en función del ticket más reciente que se añada al posible emparejamiento. Cada vez que FlexMatch empareja un ticket nuevo, el reloj se restablece. Con esta opción, los emparejamientos resultantes suelen ser de mayor calidad, pero tardan más en igualarse; las solicitudes de emparejamiento pueden agotarse antes de completarse si tardan demasiado en emparejarse. Establezca expansionAgeSelection en newest. newest es el valor predeterminado.

  • Ampliar en función de los tickets más antiguos. Esta opción permite aplicar las reglas de expansión en función del ticket más antiguo en el posible emparejamiento. Con esta opción, FlexMatch aplica las expansiones más rápido, lo que mejora los tiempos de espera para los primeros jugadores emparejados, pero reduce la calidad del emparejamiento para todos los jugadores. Establece expansionAgeSelection en oldest.

"algorithm": { "expansionAgeSelection": "oldest", "strategy": "exhaustiveSearch" },