

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Diseño de un conjunto de reglas de FlexMatch
<a name="match-design-ruleset"></a>

En este tema se trata la estructura básica de un conjunto de reglas y cómo compilar un conjunto de reglas para emparejamientos pequeños de hasta 40 jugadores. Un conjunto de reglas de emparejamiento hace dos cosas: establece una estructura y tamaño del equipo de un emparejamiento, e indica al emparejador cómo elegir a los jugadores para formar el mejor emparejamiento posible. 

Sin embargo, el conjunto de reglas de emparejamiento puede hacer más. Por ejemplo, puede hacer lo siguiente:
+ Optimizar el algoritmo de emparejamiento para el juego.
+ Establecer requisitos mínimos de latencia de los jugadores para proteger la calidad del juego.
+ Con el tiempo, flexibilizar los requisitos del equipo y las reglas de los emparejamientos para que todos los jugadores activos puedan encontrar un emparejamiento aceptable cuando lo deseen.
+ Definir la gestión de las solicitudes de emparejamiento grupal mediante la agregación de grupos.
+ Procesar emparejamientos de gran tamaño de 40 o más jugadores. Para obtener más información sobre la compilación de emparejamientos de gran tamaño, consulte [Diseño de un conjunto de reglas de emparejamiento amplio de FlexMatch](match-design-rulesets-large.md).

Al compilar un conjunto de reglas de emparejamiento, tenga en cuenta las siguientes tareas opcionales y obligatorias: 
+ [Descripción del conjunto de reglas (obligatorio)](match-rulesets-components-set.md)
+ [Personalización del algoritmo de coincidencia](match-rulesets-components-algorithm.md)
+ [Declaración de atributos de jugador](match-rulesets-components-attributes.md)
+ [Definición de los equipos de emparejamiento](match-rulesets-components-teams.md)
+ [Establecimiento de reglas para el emparejamiento de jugador](match-rulesets-components-rules.md)
+ [Permiso para que los requisitos se flexibilicen con el tiempo](match-rulesets-components-expansion.md)

Puede compilar el conjunto de reglas mediante la consola de Amazon GameLift Servers o la operación `[CreateMatchmakingRuleSet](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateMatchmakingRuleSet.html)`.

# Descripción del conjunto de reglas (obligatorio)
<a name="match-rulesets-components-set"></a>

Proporcione detalles para el conjunto de reglas.
+ *nombre* (opcional): una etiqueta descriptiva para su uso personal. Este valor no está asociado al nombre del conjunto de reglas que especifique al crear el conjunto de reglas con Amazon GameLift Servers.
+ *ruleLanguageVersion*— La versión del lenguaje de expresión de propiedades que se utiliza para crear FlexMatch reglas. El valor debe ser `1.0`.

# Personalización del algoritmo de coincidencia
<a name="match-rulesets-components-algorithm"></a>

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.

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

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

1. 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](match-ruleset-schema.md). 

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](#match-rulesets-components-algorithm-presort)
+ [Formación de lotes en función de los atributos de batchDistance](https://docs.aws.amazon.com//gameliftservers/latest/flexmatchguide/match-rules-reference-ruletype.html#match-rules-reference-ruletype-batchdistance)
+ [Priorización los tickets de reposición](#match-rulesets-components-algorithm-backfill)
+ [Preferencia de los tickets más antiguos con expansiones](#match-rulesets-components-algorithm-expansion)

## Adición de la clasificación previa a los lotes
<a name="match-rulesets-components-algorithm-presort"></a>

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` en`balanced`. 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](match-design-rulesets-large.md). 

  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
<a name="match-rulesets-components-algorithm-backfill"></a>

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
<a name="match-rulesets-components-algorithm-expansion"></a>

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"
},
```

# Declaración de atributos de jugador
<a name="match-rulesets-components-attributes"></a>

En esta sección aparecen los atributos individuales de los jugadores para incluirlos en las solicitudes de emparejamiento. Hay dos motivos por los que puede declarar los atributos de los jugadores en un conjunto de reglas: 
+ Cuando el conjunto de reglas contiene reglas que se basan en los atributos del jugador.
+ Cuando quiere pasar un atributo de jugador a la sesión de juego a través de la solicitud de emparejamiento. Por ejemplo, es posible que desees transferir las opciones de personaje del jugador a la sesión de juego antes de que cada jugador se conecte. 

Al declarar el atributo del jugador, incluya la siguiente información: 
+ *nombre* (obligatorio): este valor debe ser único en el conjunto de reglas. 
+ *tipo* (obligatorio): es el tipo de datos del valor de atributo. Los tipos de datos válidos son number, string, string list o string map.
+ *predeterminado* (opcional): introduce un valor predeterminado para usarlo si una solicitud de emparejamiento no proporciona un valor de atributo. Si no se declara ningún valor predeterminado y la solicitud no incluye un valor, FlexMatch no podrá tramitar la solicitud.

# Definición de los equipos de emparejamiento
<a name="match-rulesets-components-teams"></a>

Describa la estructura y el tamaño de los equipos para un emparejamiento. Cada emparejamiento debe tener al menos un equipo, y puede definir tantos equipos como quiera. Los equipos pueden tener el mismo número de jugadores o ser asimétricos. Por ejemplo, puede definir un equipo monstruo de un jugador y un equipo de cazadores con 10 jugadores. 

FlexMatch procesa las solicitudes de emparejamiento como emparejamientos reducidos o de gran tamaño en función de la forma en la que el conjunto de reglas define los tamaños de los equipos. Los emparejamientos potenciales de hasta 40 jugadores son emparejamientos reducidos, mientras que los emparejamientos con más de 40 jugadores son emparejamientos de gran tamaño. Para determinar el tamaño de emparejamiento potencial de un conjunto de reglas, sume la configuración de *maxPlayer* para todos los equipos definidos en el conjunto de reglas. 
+ *nombre* (obligatorio): permite asignar un nombre único a cada equipo. Utilice este nombre en las reglas y expansiones, y FlexMatch hará referencia a los datos de emparejamiento en una sesión de juego.
+ *maxPlayers* (obligatorio): permite especificar el número máximo de jugadores que desea asignar al equipo.
+ *minPlayers* (obligatorio): permite especificar el número máximo de jugadores que desea asignar al equipo. 
+ *cantidad* (opcional): permite especificar el número de equipos que quiere formar con esta definición. Cuando FlexMatch crea un emparejamiento, proporciona a esos equipos el nombre proporcionado con un número adjunto. Por ejemplo `Red-Team1`, `Red-Team2` y `Red-Team3`. 

FlexMatch intenta llenar los equipos hasta el tamaño máximo de jugadores, pero crea equipos con menos jugadores. Si desea que todos los equipos del emparejamiento tengan el mismo tamaño, puede crear una regla para eso. Consulte el tema [Ejemplos de conjuntos de reglas de FlexMatch](match-examples.md) para ver un ejemplo de una regla de `EqualTeamSizes` .

# Establecimiento de reglas para el emparejamiento de jugador
<a name="match-rulesets-components-rules"></a>

Cree un conjunto de declaraciones de reglas que evalúe a los jugadores para su aceptación en un emparejamiento. Las reglas pueden establecer requisitos aplicables a jugadores individuales, equipos o a todo el emparejamiento. Cuando Amazon GameLift Servers procesa una solicitud de emparejamiento, comienza con el jugador más antiguo del grupo de jugadores disponibles y crea un emparejamiento alrededor de ese jugador. Para obtener ayuda detallada sobre la creación de reglas de FlexMatch, consulte [Tipos de reglas de FlexMatch](match-rules-reference-ruletype.md).
+ *nombre* (obligatorio): es un nombre fácil de recordar, que identifica de forma exclusiva la regla dentro de un conjunto de reglas. También se hace referencia a los nombres de la reglas en registros de eventos y métricas que realizan un seguimiento de la actividad relacionada con esta regla. 
+ *descripción* (opcional): utilice este elemento para asociar una descripción de texto de formato libre.
+ *tipo* (obligatorio): el elemento “tipo” identifica la operación que se debe utilizar al procesar la regla. Cada tipo de regla requiere un conjunto de propiedades adicionales. Consulte una lista de tipos de reglas y propiedades válidos en [Lenguaje de las reglas de FlexMatch](match-rules-reference.md). 
+ Propiedad de tipo de regla (puede ser obligatoria): según el tipo de regla definido, es posible que deba configurar determinadas propiedades de la regla. Para obtener más información sobre las propiedades y cómo usar el lenguaje de expresión de propiedades FlexMatch, consulte [Lenguaje de las reglas de FlexMatch](match-rules-reference.md).

# Permiso para que los requisitos se flexibilicen con el tiempo
<a name="match-rulesets-components-expansion"></a>

Las expansiones le permiten flexibilizar los criterios de las reglas con el tiempo cuando FlexMatch no puede encontrar un emparejamiento. Esta característica garantiza que FlexMatch hará todo lo posible cuando no pueda ofrecer un emparejamiento perfecto. Al flexibilizar las reglas con una expansión, está ampliando gradualmente el grupo de jugadores que se puede emparejar. 

Las expansiones comienzan cuando la antigüedad del ticket más reciente del emparejamiento incompleto coincide con el tiempo de espera de una expansión. Cuando FlexMatch añade un nuevo ticket al emparejamiento, es posible que se restablezca el reloj de espera de la expansión. Puede personalizar el inicio de las expansiones en la sección `algorithm` del conjunto de reglas.

Este es un ejemplo de una expansión que aumenta gradualmente el nivel mínimo de habilidad necesario para el emparejamiento. El conjunto de reglas utiliza una regla de distancia, llamada así *SkillDelta*para exigir que todos los jugadores de una partida tengan una diferencia de 5 niveles de habilidad entre sí. Si no se realizan nuevos emparejamientos durante quince segundos, esta expansión busca una diferencia de nivel de habilidad de 10 y, diez segundos después, busca una diferencia de 20.

```
"expansions": [{
        "target": "rules[SkillDelta].maxDistance",
        "steps": [{
            "waitTimeSeconds": 15,
            "value": 10
        }, {
            "waitTimeSeconds": 25,
            "value": 20
        }]
    }]
```

Si un emparejador tiene habilitada la reposición automática, no flexibilice los requisitos de recuento de jugadores demasiado rápido. La nueva sesión del juego tarda unos segundos en arrancar y en iniciar la reposición automática. Es mejor iniciar la expansión después de que la reposición automática tienda a activarse para sus juegos. El tiempo de expansión varía en función de la composición del equipo, así que realice las pruebas para encontrar la mejor estrategia de expansión para el juego.