Hearthstone

Sacadas do Desenvolvedor: A ciência do balanceamento da Arena

Sacadas do Desenvolvedor: A ciência do balanceamento da Arena

Olá! Eu me chamo Tian, sou cientista de dados sênior na equipe de Hearthstone e hoje vamos falar da matemática por trás do balanceamento da Arena.

As partidas de Arena são disputadas o tempo todo e geram uma infinidade de dados que usamos para manter a Arena balanceada. São muitos, MUITOS dados. Se fosse para trabalhar no Laboratório Cabum, eu certamente estaria no departamento de matemática!

O jogo do balanceamento

ABunchOfKnobs_option02.jpg

O balanceamento da Arena é feito em duas fases. Primeiro, determinamos em que pote(s) cada card entra (o pote é um subconjunto de cards com desempenho semelhante). O card geralmente entra em dois, e nós dividimos os cards Lendários e não Lendários em dois sistemas de potes diferentes. Decidimos em que pote cada card entra pela taxa de vitórias e pela taxa de escolha em partidas. Isso significa que os três cards que você vê durante a escolha estão em categorias de poder semelhante.

Depois, nós balanceamos a taxa de vitórias entre as nove classes. Idealmente, ela fica o mais perto possível de 50%. Alcançamos o equilíbrio ajustando os pesos associados a cada card. O peso é um número que representa a probabilidade relativa de o card aparecer na seleção. Quanto mais peso o card tem, maior é a probabilidade de ele aparecer durante a seleção. Se o peso do card for alterado, isso também muda as chances de o pote dele aparecer.

Muitos dados são necessários para fazer o sistema funcionar, mas, devido ao grande número de partidas de Arena jogadas diariamente, temos muitos para utilizar. 

ThreeSteps_EK_600x260.png

Usar os dados para afetar o balanceamento requer três passos. 

  1. A construção de um modelo
  2. A solução de problemas de otimização com restrições
  3. O cálculos dos pesos

Com isso feito, nós temos que agendar ajustes para aplicar as mudanças.

A construção de um modelo

Se joga com frequência na Arena, você já deve estar familiarizado com cálculos de probabilidade de vitória. Alguns cards afetam a probabilidade de maneira mais severa. Por exemplo, tirar o Lich Rei em uma partida afeta sua probabilidade de vitória muito mais que o Pinguim Esquiador.

EN_SnowFlippaLichKing.png

Vamos supor que você compre o Lich Rei durante uma partida. Você pode pensar: “Qual é a minha probabilidade de vitória agora que tirei o Lich Rei? 60%? 50%? Como avaliar isso quantitativamente?” Então, no turno seguinte, você compra Barreira de Gelo. Certamente você vai querer reavaliar as chances que tem de vencer.

Nós criamos um modelo de machine learning para responder. O computador recebe grandes quantidades de dados. Usando detalhes de cada partida jogada na Arena, ele aprende a prever a probabilidade de vitória com base nas informações recebidas. Em termos um pouco mais formais, nós “treinamos” o modelo que criamos. Assim, ele consegue calcular a probabilidade de vitória de um número X cards de quando queremos saber.

A solução de problemas de otimização com restrições

ABunchOfKnobs_option03.jpg

Vamos voltar um instante e imaginar que o modelo é uma caixa com vários controles que você pode ajustar. Cada controle está associado a um card específico. Mexendo nesse controle, você na verdade está alterando os números do card.

Digamos que, antes de fazer um ajuste, a caixa diz que atualmente você tem 40% de chance de vitória. Depois da mudança, a probabilidade de vitória vai a 46%. Com isso, vem uma pergunta interessante: mexendo em vários desses controles, você consegue alterar a probabilidade de vitória da maneira que quer?

Assim, nós somos levados a construir um problema de otimização. Em termos matemáticos, nós queremos encontrar a melhor solução de todas as factíveis. Queremos estabelecer um alvo o mais perto possível do que queremos “mexendo em vários controles” ao mesmo tempo. Em termos formais, minimizamos a função objetiva com um vetor de grandes dimensões.

No balanceamento da Arena, nós queremos prever uma taxa de vitórias o mais próxima possível de 50% seja qual for a classe, e para isso nós mudamos os números associados a cada card.

No entanto, os controles não podem ser alterados arbitrariamente — há algumas restrições. Esta é uma lista de restrições que programamos na nossa “caixa”.

  • O novo número deve permanecer entre +/-30% em relação ao valor fixado. Mudanças drásticas podem acabar afetando o jogo negativamente.
  • Para reduzir a força de uma classe na Arena, cards mais fortes terão que aparecer com menos frequência que cards com um nível de poder mais baixo. E vice-versa, para o caso de deixar uma classe mais forte.
  • Algumas restrições físicas são necessárias para manter o problema válido. Por exemplo, o ganho total na probabilidade de aparição tem que ser igual à perda total (soma zero, em termos matemáticos).

O cálculos dos pesos

HeavyLooking.pngO último passo para usar os dados da Arena para afetar o balanceamento é ajustar os pesos atribuídos a cada card com base no que obtemos nos dois primeiros passos. De modo geral, um card com peso 2 aparece duas vezes mais que um com peso 1. A otimização com restrições nos diz “que controles ajustar” e “como ajustar esses controles”. Aí, nós vinculamos cada “controle” à probabilidade de cada card aparecer na seleção. Assim, nós sabemos quanto é preciso mudar o peso de um card, além de outros modificadores com base nas características do card (p. ex.: feitiço, arma, expansão, etc.).

Nivelando o jogo

Depois do estágio de balanceamento, a taxa de vitória de todas as classes deve ficar muito próxima de +/-50%. No entanto, em algumas raras situações, a taxa de vitórias após o balanceamento ainda não é a ideal. Isso pode acontecer se a taxa de vitórias de um determinada classe estiver muito distante de 50% antes de fazermos os ajustes de peso. Podemos não ter alcançado o número ideal, mas eles vão estar mais próximos disso que antes.

Como o sistema é capaz de aplicar aos dados da Arena matemática computacional avançada e machine learning, nós conseguimos determinar se uma classe precisa ser fortalecida ou enfraquecida, escolhendo o peso ideal para cada card de cada classe.

ABunchOfKnobs_option05.jpg

Espero que essa visão do sistema de microajuste da Arena tenha sido interessante! Queremos saber a sua opinião, por isso não deixe de enviar suas perguntas pelos comentários.

Próximo artigo

Destaques