Exemplo: use uma classificação explícita para encontrar as melhores correspondências - Amazon GameLift Servers

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

Exemplo: use uma classificação explícita para encontrar as melhores correspondências

Este exemplo configura uma correspondência simples com duas equipes de três jogadores. Ele ilustra como usar as regras de classificação explícitas para ajudar a encontrar as melhores correspondências o mais rápido possível. Essas regras classificam todos os tíquetes de criação de partidas ativos para criar as melhores correspondências com base em determinadas exigências principais. Este exemplo é implementado com as seguintes instruções:

  • Crie duas equipes de jogadores.

  • Inclua exatamente três jogadores em cada equipe.

  • Inclua os atributos de jogador a seguir:

    • Nível de experiência (se não for fornecido, o padrão é 50).

    • Modos de jogo preferidos (pode listar vários valores) (se não forem fornecidos, os padrões são “cooperação” e “combate mortal”).

    • Mapas de jogo preferidos, incluindo o nome do mapa e ponderação preferida (se não for fornecido, o padrão é "defaultMap" com um peso 100).

  • Configurar pré-classificação:

    • Classifique os jogadores com base na preferência pelo mesmo mapa de jogo que o jogador âncora. Os jogadores podem ter vários mapas de jogo favoritos, portanto, este exemplo usa um valor preferencial.

    • Classifique os jogadores com base na proximidade do nível de experiência deles com a do jogador âncora. Com essa classificação, todos os jogadores em todas as equipes terão níveis de experiência o mais próximos possíveis.

  • Todos os jogadores em todas as equipes precisam ter selecionado pelo menos um modo de jogo em comum.

  • Todos os jogadores em todas as equipes precisam ter selecionado pelo menos um mapa de jogo em comum.

Observações sobre como usar o conjunto de regras:

  • A classificação do mapa de jogo usa uma classificação absoluta que compara o valor do atributo mapPreference. Como é o primeiro no conjunto de regras, esse tipo é realizado primeiro.

  • A classificação da experiência usa uma classificação de distância para comparar um nível de habilidade do jogador em potencial com a habilidade do jogador âncora.

  • As classificações são feitas na ordem que são listadas em um conjunto de regras. Neste cenário, os jogadores são classificados pela preferência de mapa de jogo e depois pelo nível de experiência.

{ "name": "multi_map_game", "ruleLanguageVersion": "1.0", "playerAttributes": [{ "name": "experience", "type": "number", "default": 50 }, { "name": "gameMode", "type": "string_list", "default": [ "deathmatch", "coop" ] }, { "name": "mapPreference", "type": "string_number_map", "default": { "defaultMap": 100 } }, { "name": "acceptableMaps", "type": "string_list", "default": [ "defaultMap" ] }], "teams": [{ "name": "red", "maxPlayers": 3, "minPlayers": 3 }, { "name": "blue", "maxPlayers": 3, "minPlayers": 3 }], "rules": [{ // We placed this rule first since we want to prioritize players preferring the same map "name": "MapPreference", "description": "Favor grouping players that have the highest map preference aligned with the anchor's favorite", // This rule is just for sorting potential matches. We sort by the absolute value of a field. "type": "absoluteSort", // Highest values go first "sortDirection": "descending", // Sort is based on the mapPreference attribute. "sortAttribute": "mapPreference", // We find the key in the anchor's mapPreference attribute that has the highest value. // That's the key that we use for all players when sorting. "mapKey": "maxValue" }, { // This rule is second because any tie-breakers should be ordered by similar experience values "name": "ExperienceAffinity", "description": "Favor players with similar experience", // This rule is just for sorting potential matches. We sort by the distance from the anchor. "type": "distanceSort", // Lowest distance goes first "sortDirection": "ascending", "sortAttribute": "experience" }, { "name": "SharedMode", "description": "The players must have at least one game mode in common", "type": "collection", "operation": "intersection", "measurements": [ "flatten(teams[*].players.attributes[gameMode])"], "minCount": 1 }, { "name": "MapOverlap", "description": "The players must have at least one map in common", "type": "collection", "operation": "intersection", "measurements": [ "flatten(teams[*].players.attributes[acceptableMaps])"], "minCount": 1 }] }