Projetar um FlexMatch conjunto de regras - Amazônia 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á.

Projetar um FlexMatch conjunto de regras

Este tópico aborda a estrutura básica de um conjunto de regras e como criar um conjunto de regras para pequenas correspondências (até 40 jogadores). Um conjunto de regras de marcação de jogos deve fazer duas coisas: definir um tamanho e uma estrutura para a equipe da correspondência e dizer ao marcador de jogos como escolher os jogadores e formar a melhor correspondência possível.

Mas seu conjunto de regras de matchmaking pode fazer mais. Por exemplo, é possível:

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

  • Defina os requisitos de latência mínima do jogador para proteger a qualidade do jogo.

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

  • Defina o tratamento de solicitações de matchmaking em grupo (agregação de grupos).

  • Processe partidas grandes (mais de 40 jogadores). Saiba mais sobre a criação de correspondências grandes em Projetar um FlexMatch conjunto de regras de grande correspondência.

Ao criar um conjunto de regras de marcação de jogos, você pode realizar algumas ou todas as seguintes tarefas:

Descreva o conjunto de regras

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

  • ruleLanguageVersion(obrigatório) — A versão do idioma de expressão de propriedade usada para criar FlexMatch regras. O valor deve ser1.0.

Personalize o algoritmo de correspondência

Você pode alterar o algoritmo de correspondência padrão. O algoritmo padrão é otimizado para a maioria dos jogos para colocar os jogadores em partidas aceitáveis com o mínimo de tempo de espera. Você pode personalizar o algoritmo e ajustar o matchmaking para o seu jogo.

O valor FlexMatch o processo de matchmaking é o seguinte:

  1. FlexMatch coloca todos os ingressos abertos de matchmaking e os ingressos preenchidos em uma bilheteria.

  2. Os ingressos na piscina são agrupados aleatoriamente em um ou mais lotes para serem combinados. À medida que a bilheteria fica maior, FlexMatch forma lotes adicionais para manter o tamanho ideal do lote.

  3. Dentro de cada lote, FlexMatch classifica os ingressos por idade.

  4. FlexMatch cria uma combinação com base no tíquete mais antigo de cada lote.

Para personalizar o algoritmo de correspondência, adicione umalgorithmcomponente do seu esquema de conjunto de regras. ConsulteEsquema conjunto de regras FlexMatchpara obter as informações de referência completas do.

Use as seguintes personalizações opcionais para impactar diferentes estágios do seu processo de matchmaking.

Adicionar classificação pré-lote

Você pode configurar FlexMatch para classificar a bilheteria antes de formar lotes. Esse tipo de personalização é mais eficaz em jogos com grandes pools de ingressos. A classificação pré-lote pode ajudar a acelerar o processo de combinação e aumentar a uniformidade do jogador nas características definidas.

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

As opções para personalizar a classificação pré-lote incluem:

  • Classifique por atributos do jogador. Forneça uma lista de atributos do jogador para pré-ordenar o pool de ingressos. FlexMatch em seguida, cria lotes com mais uniformidade nos atributos classificados. Por exemplo, se você pré-classificar o pool de ingressos por habilidade do jogador, FlexMatch reúne tíquetes com níveis de habilidade semelhantes. Se o seu conjunto de regras também contém regras de jogo com base na habilidade do jogador, a classificação pré-lote pode melhorar a eficiência do matchmaking.

    Para classificar por atributos do jogador, definabatchingPreferenceparasortede definasortByAttributespara a lista de atributos do jogador. Para usar um atributo, declare o atributo naplayerAttributescomponente do conjunto de regras.

    No exemplo a seguir, FlexMatch classifica o pool de ingressos 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. Priorize com base em correspondências com a menor latência disponível ou criando rapidamente correspondências com latência aceitável. Essa personalização é útil para conjuntos de regras que formam partidas grandes (mais de 40 jogadores). A propriedade do algoritmostrategydeverá ser definido comobalanced, o que limita os tipos disponíveis de instruções de regra. Consulte Projetar um FlexMatch conjunto de regras de grande correspondência.

    FlexMatch pré-classifica os tickets com base nos dados de latência relatados de uma das seguintes formas:

    • Coloque os jogadores nas regiões de menor latência. O pool de ingressos é pré-classificado pelas regiões onde os jogadores relatam seus menores valores de latência. FlexMatch em seguida, agrupa tíquetes com baixa latência nas mesmas regiões, criando uma melhor experiência geral de jogo. Também reduz o número de ingressos em cada lote, então a combinação pode levar mais tempo. Para usar essa personalização, definabatchingPreferenceparafastestRegion, conforme mostrado no exemplo a seguir.

      "algorithm": { "batchingPreference": "fastestRegion", "strategy": "balanced" },
    • Coloque os jogadores em partidas de latência aceitáveis rapidamente. O pool de ingressos é pré-classificado por regiões, onde os jogadores relatam qualquer valor de latência aceitável. Isso forma menos lotes contendo mais tickets com latência aceitável nas mesmas regiões. Com mais ingressos em cada lote, encontrar combinações aceitáveis suficientes é mais fácil e rápido. Para usar essa personalização, defina a propriedadebatchingPreferencepara largestPopulation, conforme mostrado no exemplo a seguir.

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

      largetPopulationé a configuração padrão para conjuntos de regras que usam a estratégia balanceada.

Priorizar tíquetes de preenchimento

Se o seu jogo implementar preenchimento automático ou preenchimento manual, você pode personalizar como FlexMatch processa tickets de matchmaking com base no tipo de solicitação (nova partida ou solicitação de preenchimento). Por padrão, FlexMatch trata os dois tipos de solicitações da mesma forma. Você pode determinar se FlexMatch tenta preencher os tíquetes de preenchimento primeiro ou se FlexMatch preenche o tíquete de preenchimento quando novas partidas não podem ser feitas.

A priorização do preenchimento afeta como FlexMatch lida com os tíquetes depois de serem lotados. Use apenas a priorização de preenchimento com conjuntos de regras que usam a estratégia de pesquisa exaustiva. FlexMatch não corresponde a vários tíquetes preenchidos.

Para alterar a priorização dos tíquetes de preenchimento, defina a propriedadebackfillPrioritycomo segue:

  • Combine primeiro os ingressos preenchidos Esta opção prompts FlexMatch para tentar preencher os tíquetes antes de criar novas partidas. Isso significa que os jogadores entrantes têm uma chance maior de entrar em um jogo existente. Defina backfillPriority para high.

    Se o seu jogo estiver usando preenchimento automático, use isso como uma prática recomendada. O preenchimento automático é mais frequentemente usado em jogos com períodos curtos de sessões de jogo e alto tempo de resposta do jogador. O preenchimento automático ajuda esses jogos a formar rapidamente o mínimo de partidas viáveis e iniciá-las, mesmo que FlexMatchprocura mais jogadores para preencher as vagas abertas.

    "algorithm": { "backfillPriority": "high", "strategy": "exhaustiveSearch" },
  • Os ingressos preenchidos pela última vez. Esta opção prompts FlexMatch ignorar os tickets preenchidos até que ele avalie todos os outros tickets. Isto significa que FlexMatch preenche os novos jogadores em jogos existentes quando não consegue combiná-los com novos jogos. Defina backfillPriority para low.

    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 há poucos jogadores para formar uma nova partida. Não despriorize o preenchimento automático de tíquetes com o preenchimento automático.

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

Prefira ingressos mais antigos com expansões

É possível personalizar como FlexMatch aplica regras de expansão, que relaxam os critérios de correspondência quando as partidas são difíceis de concluir. GameLift aplica regras de expansão quando os tíquetes de uma partida parcialmente concluída atingem uma certa idade. Os carimbos de data/hora de criação dos tickets determinam quando GameLift aplica as regras; por padrão, FlexMatch rastreia a data e hora do tíquete correspondido mais recentemente.

Para mudar quando FlexMatch aplica regras de expansão, define a propriedadeexpansionAgeSelectioncomo segue:

  • Expanda com base nos ingressos mais recentes. Essa opção aplica regras de expansão com base no tíquete mais recente adicionado à possível correspondência. Cada vez FlexMatch corresponde a um novo tíquete, o relógio é zerado. Com essa opção, as partidas resultantes tendem a ser de maior qualidade, mas demoram mais para corresponder; as solicitações de partidas podem expirar antes de serem concluídas se demorarem muito para serem combinadas. DefinaexpansionAgeSelectionparanewest.newesté padrão.

  • Expanda com base nos ingressos mais antigos. Essa opção aplica regras de expansão com base no tíquete mais antigo da possível correspondência. Com essa opção, FlexMatch aplica expansões mais rapidamente, o que melhora os tempos de espera dos primeiros jogadores combinados, mas diminui a qualidade da partida para todos os jogadores. Defina expansionAgeSelection para oldest.

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

Declarar os atributos do jogador

Nesta seção, liste os atributos individuais dos jogadores para incluir nas solicitações de matchmaking. 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 partida. Por exemplo, você pode querer passar as escolhas de personagens 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) — 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 para usar, se uma solicitação de marcaçã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, FlexMatchnão consigo atender à solicitação.

Defina as equipes da partida

Descreva a estrutura e o tamanho das equipes de uma correspondência. Cada correspondência 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.

FlexMatch O processa as solicitações de correspondência pequenas e grandes com base na definição do conjunto de regras sobre o tamanhos das equipes. As correspondências em potencial de até 40 jogadores são pequenas, as com mais de 40 são grandes. Para determinar um conjunto de regras da correspondência em potencial, adicione as configurações maxPlayer para todas as equipes definidas no conjunto de regras.

  • nome(obrigatório) — atribua um nome exclusivo à cada equipe. Você usa esse nome em regras e expansões e FlexMatchreferências para os dados de matchmaking em uma sessão de jogo.

  • MaxPlayers(obrigatório) - Especifique o número máximo de jogadores atribuídos ao grupo.

  • minPlayers(obrigatório) - Especifique o número mínimo de jogadores a serem atribuídos ao grupo.

  • quantidade(opcional) — Especifique o número de equipes a serem formadas com essa definição. Quando FlexMatch cria uma correspondência, dá a essas equipes o nome fornecido com um número anexado. Por exemploRed-Team_1,Red-Team_2, eRed-Team_3.

FlexMatch tenta preencher as equipes com o máximo de jogadores, mas cria equipes com um número menor. Se você deseja que todas as equipes da correspondência sejam do mesmo tamanho, crie uma regra para isso. Consulte oExemplos de conjunto de regras FlexMatchtópico para um exemplo de umEqualTeamSizesregra.

Defina regras para combinar jogadores

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

  • nome(obrigatório) — 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 do FlexMatch.

  • Propriedade do tipo de regra (pode ser necessária) — Dependendo do tipo de regra definida, pode ser preciso definir determinadas propriedades. Saiba mais sobre as propriedades e como usar o FlexMatch linguagem de expressão de propriedade emLinguagem do FlexMatch.

Deixe que os requisitos relaxem com o tempo

As expansões permitem que você diminua os critérios das regras ao longo do tempo quando FlexMatch não consigo encontrar uma combinação. Esse recurso garante que FlexMatch disponibiliza o melhor quando não consegue fazer uma combinação perfeita. Ao diminuir as regras com uma expansão, você expande gradualmente o grupo de jogadores que são aceitáveis.

As expansões começam quando a idade do tíquete mais novo na partida incompleta coincide com o tempo de espera de expansão. Quando FlexMatch adiciona um novo tíquete à partida, o relógio do tempo de espera da expansão pode ser redefinido. Você pode personalizar a forma como as expansões começam naalgorithmseção 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 a partida. O conjunto de regras usa uma declaração de regra de distância, chamadaSkillDeltaexigir que todos os jogadores em uma correspondência estejam dentro de 5 níveis de habilidades em relação ao outro. Se nenhuma nova partida for feita por quinze segundos, essa expansão procurará uma diferença de nível de habilidade de 10 e, dez segundos depois, procurará uma diferença de 20.

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

Com marcadores de jogos que têm a alocação automática ativada, 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 a alocação automática. Uma abordagem melhor é iniciar 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 equipe, então faça testes para encontrar a melhor estratégia de expansão para o seu jogo.