Exemplo: use uma regra composta para criar uma partida com jogadores com atributos semelhantes ou seleções semelhantes - 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á.

Exemplo: use uma regra composta para criar uma partida com jogadores com atributos semelhantes ou seleções semelhantes

Este exemplo ilustra como configurar um conjunto de regras para jogos com duas equipes usando compound. No exemplo:

  • A regra SimilarLeagueDistance garante que todos os jogadores em uma partida tenham league em 2 dos outros jogadores.

  • A regra SimilarSkillDistance garante que todos os jogadores em uma partida tenham skill em 10 dos outros jogadores. Se um jogador estiver esperando 10 segundos, a distância será expandida para 20. Se um jogador estiver esperando 20 segundos, a distância será expandida para 40.

  • A regra SameMapComparison garante que todos os jogadores de um jogo tenham solicitado o mesmo map.

  • A regra SameModeComparison garante que todos os jogadores de um jogo tenham solicitado o mesmo mode.

  • A regra CompoundRuleMatchmaker garante uma correspondência se pelo menos uma das seguintes condições for true:

    • Os jogadores de um jogo solicitaram o mesmo map e o mesmo mode.

    • Os jogadores de um jogo têm skill atributos league e atributos comparáveis.

{ "ruleLanguageVersion": "1.0", "teams": [{ "name": "red", "minPlayers": 10, "maxPlayers": 20 }, { "name": "blue", "minPlayers": 10, "maxPlayers": 20 }], "algorithm": { "strategy":"balanced", "balancedAttribute": "skill", "batchingPreference":"fastestRegion" }, "playerAttributes": [{ "name": "league", "type": "number" },{ "name": "skill", "type": "number" },{ "name": "map", "type": "string" },{ "name": "mode", "type": "string" }], "rules": [{ "name": "SimilarLeagueDistance", "type": "distance", "measurements": ["max(flatten(teams[*].players.attributes[league]))"], "referenceValue": "min(flatten(teams[*].players.attributes[league]))", "maxDistance": 2 }, { "name": "SimilarSkillDistance", "type": "distance", "measurements": ["max(flatten(teams[*].players.attributes[skill]))"], "referenceValue": "min(flatten(teams[*].players.attributes[skill]))", "maxDistance": 10 }, { "name": "SameMapComparison", "type": "comparison", "operation": "=", "measurements": ["flatten(teams[*].players.attributes[map])"] }, { "name": "SameModeComparison", "type": "comparison", "operation": "=", "measurements": ["flatten(teams[*].players.attributes[mode])"] }, { "name": "CompoundRuleMatchmaker", "type": "compound", "statement": "or(and(SameMapComparison, SameModeComparison), and(SimilarSkillDistance, SimilarLeagueDistance))" }], "expansions": [{ "target": "rules[SimilarSkillDistance].maxDistance", "steps": [{ "waitTimeSeconds": 10, "value": 20 }, { "waitTimeSeconds": 20, "value": 40 }] }] }