

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Personalize o algoritmo de correspondência
<a name="match-rulesets-components-algorithm"></a>

O FlexMatch otimiza o algoritmo padrão para a maioria dos jogos para levar os jogadores a jogos aceitáveis com tempo de espera mínimo. É possível personalizar o algoritmo e ajustar o criação de partidas para o seu jogo.

A seguir está o algoritmo de criação de partidas padrão do FlexMatch: 

1. O FlexMatch coloca todos os tickets de criação de partidas abertos e os tickets preenchidos em um pool de tickets.

1. O FlexMatch agrupa aleatoriamente os tickets no pool em um ou mais lotes. À medida que o pool de tickets aumenta, o FlexMatch forma lotes adicionais para manter o tamanho ideal do lote.

1. O FlexMatch classifica os tickets por idade, dentro de cada lote.

1. O FlexMatch cria uma combinação com base no ticket mais antigo de cada lote. 

Para personalizar o algoritmo de correspondência, adicione um componente `algorithm` ao esquema do conjunto de regras. Consulte [Esquema de conjunto de regras do FlexMatch](match-ruleset-schema.md) para obter informações completas de referência. 

Use as seguintes personalizações opcionais para impactar diferentes estágios do seu processo de criação de partidas. 
+ [Adicionar classificação pré-lote](#match-rulesets-components-algorithm-presort)
+ [Forme lotes com base nos atributos batchDistance](https://docs.aws.amazon.com//gameliftservers/latest/flexmatchguide/match-rules-reference-ruletype.html#match-rules-reference-ruletype-batchdistance)
+ [Priorize os tickets de preenchimento](#match-rulesets-components-algorithm-backfill)
+ [Favoreça tickets mais antigos com expansões](#match-rulesets-components-algorithm-expansion)

## Adicionar classificação pré-lote
<a name="match-rulesets-components-algorithm-presort"></a>

É possível classificar o pool de tickets antes de formar lotes. Esse tipo de personalização é mais eficaz em jogos com grandes pools de tickets. A classificação pré-lote pode ajudar a acelerar o processo de criação de partidas e aumentar a uniformidade dos jogadores nas características definidas.

Defina métodos de classificação pré-lote usando a propriedade do algoritmo `batchingPreference`. A configuração padrão é `random`.

As opções para personalizar a classificação pré-lote incluem:
+ **Classifique por atributos do jogador.** Forneça uma lista dos atributos do jogador para pré-classificar o pool de tickets. 

  Para classificar por atributos do jogador, defina `batchingPreference` como `sorted` e defina sua lista de atributos do jogador em `sortByAttributes`. Para usar um atributo, primeiro declare o atributo no componente `playerAttributes` do conjunto de regras. 

  No exemplo a seguir, o FlexMatch classifica o pool de tickets com base no mapa de jogo preferido dos jogadores e, em seguida, pela habilidade do jogador. É mais provável que os lotes resultantes contenham jogadores com habilidades semelhantes que desejam usar o mesmo mapa.

  ```
  "algorithm": {
      "batchingPreference": "sorted",
      "sortByAttributes": ["map", "player_skill"],
      "strategy": "exhaustiveSearch"
  },
  ```
+ **Classifique por latência.** Crie jogos com a menor latência disponível ou crie rapidamente jogos com latência aceitável. Essa personalização é útil para conjuntos de regras que formam grandes jogos de mais de 40 jogadores. 

  Defina a propriedade do algoritmo `strategy` como `balanced`. A estratégia balanceada limita os tipos disponíveis de declarações de regras. Para obter mais informações, consulte [Criar uma conjunto de regras de correspondência grande do FlexMatch](match-design-rulesets-large.md). 

  O FlexMatch classifica os tickets com base nos dados de latência relatados pelos jogadores de uma das seguintes maneiras: 
  + *Locais de menor latência.* O pool de tickets é pré-classificado pelos locais em que os jogadores relatam seus valores de latência mais baixos. O FlexMatchem seguida, agrupa os tickets com baixa latência nos mesmos locais, criando uma melhor experiência de jogo. Também reduz o número de tickets em cada lote, então o criação de partidas pode demorar mais. Para usar essa personalização, defina `batchingPreference` como `fastestRegion`, conforme mostrado no exemplo a seguir.

    ```
    "algorithm": {
        "batchingPreference": "fastestRegion",
        "strategy": "balanced"
    },
    ```
  + *A latência aceitável corresponde rapidamente.* O pool de tickets é pré-classificado por locais onde os jogadores relatam um valor de latência aceitável. Isso forma menos lotes contendo mais tickets. Com mais tickets em cada lote, encontrar combinações aceitáveis é mais rápido. Para usar essa personalização, defina a propriedade `batchingPreference` como ` largestPopulation`, conforme mostrado no exemplo a seguir.

    ```
    "algorithm": {
        "batchingPreference": "largestPopulation",
        "strategy": "balanced"
    },
    ```
**nota**  
O valor padrão para a estratégia balanceada é `largestPopulation`.

## Priorize os tickets de preenchimento
<a name="match-rulesets-components-algorithm-backfill"></a>

Se o seu jogo implementa preenchimento automático ou preenchimento manual, você pode personalizar como o FlexMatch processa os tickets de criação de partidas com base no tipo de solicitação. O tipo de solicitação pode ser uma nova solicitação de jogo ou preenchimento. Por padrão, o FlexMatch trata os dois tipos de solicitações da mesma forma.

A priorização do preenchimento afeta a forma como o FlexMatch processa os tickets depois de agrupá-los em lotes. A priorização do preenchimento exige conjuntos de regras para usar a estratégia de pesquisa exaustiva. 

O FlexMatch não combina vários tickets de preenchimento.

Para alterar a priorização dos tickets de preenchimento, defina a propriedade `backfillPriority`.
+ **Combine os tickets de preenchimento primeiro.** Essa opção tenta combinar os tickets preenchidos antes de criar novos jogos. Isso significa que os novos jogadores têm uma chance maior de entrar em um jogo existente. 

  É melhor usar isso se seu jogo usa preenchimento automático. O preenchimento automático é frequentemente usado em jogos com sessões curtas e alta rotatividade de jogadores. O preenchimento automático ajuda esses jogos a formar jogos mínimos viáveis e a iniciá-los, enquanto o FlexMatch procura mais jogadores para preencher as vagas abertas.

  Defina `backfillPriority` como `high` .

  ```
  "algorithm": {
      "backfillPriority": "high",
      "strategy": "exhaustiveSearch"
  },
  ```
+ **Os tickets de preenchimento do jogo duram.** Essa opção ignora os tickets de preenchimento até avaliar todos os outros tickets. Isso significa que o FlexMatch preenche os novos jogadores em jogos existentes quando não consegue combiná-los com novos jogos. 

  Essa opção é útil quando você deseja usar o preenchimento como uma opção de última chance para colocar jogadores em um jogo, como quando não há jogadores suficientes para formar uma novo jogo. 

  Defina `backfillPriority` como `low`. 

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

## Favoreça tickets mais antigos com expansões
<a name="match-rulesets-components-algorithm-expansion"></a>

As regras de expansão relaxam os critérios de jogos quando os jogos são difíceis de concluir. O Amazon GameLift Servers aplica regras de expansão quando os tickets de um jogo parcialmente concluído atingem uma certa idade. Os carimbos de data e hora de criação dos tickets determinam quando o Amazon GameLift Servers aplica as regras; por padrão, o FlexMatch rastreia o carimbo de data e hora do ticket combinado mais recentemente. 

Para alterar quando o FlexMatch aplica as regras de expansão, defina a propriedade `expansionAgeSelection` da seguinte forma: 
+ **Expanda com base nos tickets mais novos.** Essa opção aplica regras de expansão com base no ticket mais novo adicionado à possível jogo. Cada vez que o FlexMatch combina um novo ticket, o relógio de ponto é zerado. Com essa opção, os jogos resultantes tendem a ser de melhor qualidade, mas demoram mais para serem correspondidos; as solicitações de jogos podem expirar antes de serem concluídas se demorarem muito para serem correspondidas. Defina `expansionAgeSelection` como `newest`. `newest` é padrão.
+ **Expanda com base nos tickets mais antigos.** Essa opção aplica regras de expansão com base no ticket mais antigo do jogo potencial. Com essa opção, o FlexMatch aplica expansões mais rapidamente, o que melhora o tempo de espera dos primeiros jogadores combinados, mas diminui a qualidade do jogo para todos os jogadores. Defina `expansionAgeSelection` como `oldest`. 

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