Personalize o algoritmo de correspondência - Amazon GameLift

Personalize o algoritmo de correspondência

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 jogos para o seu jogo.

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

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

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

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

  4. 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 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 jogos.

Adicionar classificação pré-lote

É 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 jogos 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 ter mais informações, consulte Projetar um conjunto de regras de jogo grande do FlexMatch.

    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 FlexMatch então 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 jogos 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

Se o seu jogo implementa preenchimento automático ou preenchimento manual, você pode personalizar como o FlexMatch processa os tickets de criação de jogos 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

As regras de expansão relaxam os critérios de jogos quando os jogos são difíceis de concluir. O Amazon GameLift 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 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" },