Criar um conjunto de regras do FlexMatch - Amazon GameLift

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

Criar um conjunto de regras do FlexMatch

Este tópico aborda a estrutura básica de um conjunto de regras e como usá-las para compilar um conjunto de regras para jogos pequenos de até 40 jogadores. Um conjunto de regras de criação de jogos faz duas coisas: define um tamanho e uma estrutura para a equipe do jogo e diz ao matchmaker como escolher os jogadores e formar o melhor jogo possível.

Mas seu conjunto de regras de criação de jogos pode fazer mais. Por exemplo, é possível:

  • Otimize o algoritmo de criação de jogos para o seu jogo.

  • Configure os requisitos mínimos de latência do jogador para proteger a qualidade da jogabilidade.

  • Relaxe gradualmente os requisitos da equipe e as regras do jogo ao longo do tempo para que todos os jogadores ativos possam encontrar um jogo aceitável quando quiserem.

  • Defina o tratamento de solicitações de criação de jogos em grupo usando agregação de grupos.

  • Processe grandes jogos de 40 jogadores ou mais. Para obter mais informações sobre a criação de jogos grandes, consulte Projetar um conjunto de regras de jogo grande do FlexMatch.

Ao criar um conjunto de regras de criação de jogos, considere as seguintes tarefas opcionais e obrigatórias:

É possível criar seu conjunto de regras usando o console do Amazon GameLift ou a operação CreateMatchmakingRuleSet.

Descreva o conjunto de regras (obrigatório)

Forneça os detalhes do conjunto de regras.

  • nome (opcional): um rótulo descritivo para seu próprio uso. Esse valor não está associado ao nome do conjunto de regras que você especifica ao criar o conjunto de regras com o Amazon GameLift.

  • ruleLanguageVersion: esta é a versão do idioma de expressão de propriedade usada para criar as regras do FlexMatch. O valor deve ser 1.0.

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

Declarar os atributos do jogador

Nesta seção, liste os atributos individuais do jogador a serem incluídos nas solicitações de criação de jogos. Há duas razões pelas quais você pode declarar os atributos do jogador em um conjunto de regras:

  • Quando o conjunto de regras contém regras que dependem dos atributos do jogador.

  • Quando você quiser passar um atributo de jogador para a sessão do jogo por meio da solicitação de jogo. Por exemplo, talvez você queira passar as escolhas do personagem do jogador para a sessão do jogo antes que cada jogador se conecte.

Ao declarar um atributo de jogador, inclua as seguintes informações:

  • nome (obrigatório): este valor deve ser exclusivo para o conjunto de regras.

  • tipo (obrigatório): este é o tipo de dados do valor do atributo. Os tipos de dados válidos são número, string ou mapa de string.

  • padrão (opcional): insira um valor padrão a ser usado se uma solicitação de criação de jogos não fornecer um valor de atributo. Se nenhum padrão for declarado e uma solicitação não incluir um valor, o FlexMatch não poderá atender à solicitação.

Defina as equipes do jogo

Descreva a estrutura e o tamanho das equipes de um jogo. Cada jogo deve ter pelo menos uma equipe, e você pode definir quantas equipes quiser. Suas equipes podem ter o mesmo número de jogadores ou ser assimétricas. Por exemplo, você pode definir um time de monstros de jogadores únicos e uma equipe de caçadores com 10 jogadores.

O FlexMatch processa as solicitações de jogo pequenas e grandes com base na definição do conjunto de regras sobre o tamanhos das equipes. Os jogos em potencial de até 40 jogadores são pequenos, enquanto os com mais de 40 são grandes. Para determinar um conjunto de regras do jogo em potencial, adicione as configurações maxPlayer para todas as equipes definidas no conjunto de regras.

  • name (obrigatório): atribua um nome exclusivo à cada equipe. Você usa esse nome em regras e expansões, e referências FlexMatch para os dados de criação de jogos em uma sessão de jogo.

  • maxPlayers (obrigatório): especifique o número máximo de jogadores que podem ser atribuídos ao grupo.

  • minPlayers (obrigatório): especifique o número mínimo de jogadores que podem ser atribuídos ao grupo.

  • quantidade (opcional): especifique o número de equipes a serem formadas com essa definição. Quando o FlexMatch cria um jogo, ele dá a essas equipes o nome fornecido com um número anexado. Por exemplo Red-Team1, Red-Team2 e Red-Team3.

O FlexMatch tenta preencher as equipes até o tamanho máximo de jogadores, mas cria equipes com menos jogadores. Se você deseja que todas as equipes do jogo sejam do mesmo tamanho, crie uma regra para isso. Consulte o tópico FlexMatch exemplos de conjuntos de regras para obter um exemplo de uma regra EqualTeamSizes.

Definir regras de correspondência de jogadores

Crie um conjunto de instruções de regras que avaliam os jogadores para aceitação em um jogo. As regras podem definir os requisitos que se aplicam a jogadores individuais, a equipes ou a um jogo inteiro. Quando o Amazon GameLift processa uma solicitação de correspondência, ele começa com o jogador mais antigo na seleção de jogadores disponíveis e cria uma correspondência para cada jogador. Para obter ajuda detalhada sobre a criação de regras do FlexMatch, consulte Tipos de regras do FlexMatch.

  • name (obrigatório): este é um nome significativo que identifica exclusivamente a regra dentro de um conjunto de regras. Os nomes de regra também são referenciados em logs de eventos e métricas que controlam as atividades relacionadas a essa regra.

  • descrição (opcional): use este elemento para anexar uma descrição de texto livre.

  • tipo (obrigatório): o elemento tipo identifica uma operação ser usada ao processar a regra. Cada tipo de regra exige um conjunto de propriedades adicionais. Veja uma lista dos tipos de regra válidos e as propriedades em Linguagem de regras do FlexMatch.

  • Propriedade do tipo de regra (pode ser necessária): dependendo do tipo de regra que está definido, pode ser preciso definir determinadas propriedades. Saiba mais sobre as propriedades e como usar a linguagem de expressão de propriedade do FlexMatch em Linguagem de regras do FlexMatch.

Permita que os requisitos diminuam com o tempo

As expansões permitem que você relaxe os critérios das regras ao longo do tempo, quando o FlexMatch não consegue encontrar um jogo. Esse atributo garante que o FlexMatch disponibilize o melhor quando não consegue fazer uma combinação perfeita. Ao relaxar as regras com uma expansão, você está expandindo gradualmente o pool de jogadores que são uma correspondência aceitável.

As expansões começam quando a idade do ticket mais novo no jogo incompleto coincide com o tempo de espera da expansão. Quando o FlexMatch adiciona um novo ticket ao jogo, o tempo de espera da expansão pode ser redefinido. É possível personalizar como as expansões começam na seção algorithm do conjunto de regras.

Aqui está um exemplo de uma expansão que aumenta gradualmente o nível mínimo de habilidade necessário para o jogo. O conjunto de regras usa uma declaração de regra de distância, chamada SkillDelta, para exigir que todos os jogadores em um jogo estejam dentro de cinco níveis de habilidade um do outro. Se nenhum novo jogo for feito por quinze segundos, essa expansão busca uma diferença de nível de habilidade de 10 e, dez segundos depois, uma diferença de 20.

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

Com rmatchmakers que tenham o preenchimento automático ativado, não diminua os requisitos de contagem de jogadores muito rapidamente. Leva alguns segundos para a nova sessão de jogo iniciar e começar o preenchimento automático. Uma abordagem melhor é definir a expansão depois que as tendências de alocação iniciarem para seus jogos. O tempo de expansão varia de acordo com a composição da sua equipe, então faça testes para encontrar a melhor estratégia de expansão para seu jogo.