Métodos de aplicação e distorção de precisão em jogos. Gráficos visuais para comparação

É possível calcular o fato de um acerto nos jogos com base na precisão obtida de diferentes maneiras:

  • comparando com um número pseudo-aleatório (que também pode ser obtido de diferentes maneiras [ 1 ]);
  • comparando com o maior ou o menor dos dois números pseudo-aleatórios;
  • comparando a média de dois ou mais números aleatórios (a média também pode ser considerada de maneira diferente).


Os bônus de precisão também podem ser implementados de diferentes maneiras, causando irritação nos jogadores por várias razões.

Da mesma forma, o dano causado pode ser calculado de maneira diferente, especialmente com base em dados (cubos).

Todas essas abordagens diferentes afetam a jogabilidade: sua complexidade e previsibilidade. Cada um deles pode se tornar uma boa decisão, dependendo dos objetivos perseguidos; portanto, é mais benéfico fazer uma escolha conscientemente.

O artigo apresentará gráficos visuais das mudanças nas probabilidades reais em diferentes abordagens, o que lhes permitirá navegar rapidamente e tomar uma decisão melhor.

Manipulação de Precisão


Geralmente, quando o jogador é informado de que a precisão do personagem é de 60%, ele percebe essa informação como: "de 10 tiros, posso contar com 6 acertos". E se, em cada 10 acertos, ele observar 1 acerto em vez de 6, ele certamente considerará que o acidente no jogo está quebrado. Ele ficará especialmente convencido disso se isso acontecer em um segmento de 100 tiros. Para evitar esses problemas, os desenvolvedores frequentemente manipulam secretamente a probabilidade real de um acerto ( ou até abandonam o elemento aleatório ).
Por exemplo, no jogo Fire Emblem: The Binding Blade, para determinar um acerto com precisão, não foi comparado um número aleatório, mas a média de dois números aleatórios [ 2 ].


O resultado dessa manipulação é que ataques bem direcionados (> 50%) caem muito mais frequentemente do que deveriam com uma distribuição uniforme, e ataques não ferozes (<50%) são muito menos comuns. Veja como essa distribuição de probabilidade muda:


Por exemplo, com 10% da precisão indicada, a real é de 1,9%. E em 75%, o real será 87,24%.

Mas, nesse caso, você pode alterar a precisão de várias outras maneiras.

Por exemplo, você pode levar em média 3 números aleatórios:


A distorção resultante disso se torna ainda mais impressionante: a precisão de 10% se torna 0,41%; 75% de precisão torna-se 92,69%.

No entanto, a média também pode ser calculada como a média geométrica. Aqui estão as alterações com uma média geométrica de 2 números aleatórios:


Aqui 10% se transforma em 4,83% e 75% a 88,18%. Mas, mais interessante, a transição ocorre em 30%, e não em 50%, como a média aritmética. Portanto, se você quiser ter certeza de que o jogador sempre terá uma vantagem, certifique-se de que sua precisão mínima nunca seja menor que 30% e que os inimigos sejam tão baixos com bastante frequência ( para inimigos, você pode usar a média aritmética ou algo ainda mais distorcido ).

Uma média geométrica de 3 números leva a aproximadamente os mesmos resultados, mas apenas com uma grande dispersão:


Aqui 10% se transforma em 1,95% e 75% a 93,98%.

Freqüentemente, para aprimorar ou enfraquecer algumas habilidades, uma manipulação mais simples é introduzida quando um dos dois números aleatórios é escolhido para ser o maior ou o menor:


Como resultado disso, a probabilidade de atingir varia muito. Por exemplo, ao escolher o número menor, uma precisão de 10% é convertida em 19,02% e uma precisão de 75% é convertida em 93,75%.
Esse método, por exemplo, é usado no jogo Neverwinter Nights na habilidade “Slippery Mind”, na qual, em caso de falha no teste de salvação, é realizada uma segunda verificação de força de vontade [ 3 ].

Neverwinter Nights - Guerreiro Duende [ 4 ]

Abaixo está uma tabela de distorção de precisão para diferentes métodos de cálculo.


Em um artigo anterior sobre manipulação de probabilidade, um método foi mostrado para eventos muito raros, onde a probabilidade de um evento aumentou com o tempo:
O desenvolvedor Carsten Germer usa a função de aleatoriedade controlada para eventos raros e não apenas [ 5 ]. Por exemplo, para garantir a perda periódica de um bônus particularmente raro com uma chance de 1 em 10.000, após cada "falha", aumenta as chances na ordem: 1 em 9.900; 1 a 9800; 1 a 9700 ... e assim sucessivamente até o evento ser gravado. E para garantir a ausência de raridades frequentes, ele introduziu uma variável adicional que bloqueia a operação em 100% durante as próximas 10 verificações após a última operação.
Conceitos equivocados dos jogadores na avaliação de riscos [ 1 ]

Veja como a probabilidade desse evento raro muda ao usar este método:


Como você pode ver, no final, não há nada a ver com a probabilidade de 1 em 10.000, mas para os propósitos da jogabilidade, isso pode ter sido suficiente. Embora pareça mais uma ocultação não intencional de probabilidades reais do próprio desenvolvedor, o que pode levar a decisões incorretas em futuras melhorias do programa.

Abaixo, também dou uma alteração no evento de 1%, que acontecerá pelo menos uma vez à medida que o número de tentativas aumentar. Algoritmo de distorção: as 10 primeiras tentativas - uma falha garantida. Então, a cada falta, a probabilidade aumenta em 1% (0,1% e 0,01%) antes de ser atingida. Então tudo desde o começo.


No entanto, se seu objetivo principal como desenvolvedor é garantir que um usuário em um evento de 1% não caia em uma série de 1000 erros consecutivos, será mais fácil e mais transparente definir 100% de acerto depois de 200 erros consecutivos. Isso evitará a rara perplexidade dos jogadores e permitirá que você deixe o código do programa mais conciso e amigável para futuras melhorias.

Diferentes maneiras de acumular bônus de precisão


Se houver poucos bônus de precisão no jogo e eles forem facilmente controlados pelo desenvolvedor, é mais fácil usar a abordagem mais simples com aumento linear na precisão, adicionando simplesmente o valor base . Este método é mais fácil de implementar no jogo e é sempre compreensível para os jogadores. Com essa abordagem, é possível obter 100% de precisão, o que nem sempre corresponde aos planos do desenvolvedor.





Se o jogo planeja muitos bônus significativos para a precisão, então, para não exceder a precisão garantida de 100%, você pode calcular a precisão final como uma série de jogadas adicionais ( geralmente improváveis ​​separadamente ). Por exemplo, com um acerto de 70% e um bônus de 50%, a probabilidade final de um acerto será de 85%, como verificar dois lances sucessivos quando pelo menos um acerto for suficiente.




Um pouco exótica é a abordagem para mudar a essência do bônus para a precisão pelo bônus de reduzir a probabilidade de uma falha .

// newAccuracy -    % // baseAccuracy -    % // bonusAccuracy -     % let newAccuracy = 100 - ( (1 - baseAccuracy * 0.01) / (1 + bonusAccuracy * 0.01) ) * 100; 

Garante que sempre haverá uma chance de uma falha com qualquer bônus. Graças a isso, o jogo pode dar bônus à "precisão" de mais de 100%, pelo menos 1000%. E ainda haverá uma chance de uma falta. Mas é mais provável que o jogador confunda e, portanto, decepcione.



Na maioria das vezes, a abordagem com uma soma simples de bônus é usada, como a mais compreensível para o jogador e fácil de implementar pelo desenvolvedor.

Distribuição de dano baseada em dados


Este item é inteiramente baseado em dados visuais da publicação “ Probability and Games: Damage Rolls from Red Blob Games [6] ”. Aqui, apresento brevemente alguns exemplos e conclusões desta publicação. No artigo original, você receberá conclusões mais detalhadas e gráficos de distribuição interativos, além de funções interativas personalizáveis ​​para selecionar várias combinações exclusivas.

O exemplo mais óbvio (mas não o único) de cálculo de dano de dados diferentes é apresentado com base no cálculo do dano no valor máximo de 12. O resultado pode ser obtido usando dados diferentes ( por exemplo, se você joga um jogo de tabuleiro e não possui dados especiais ):

1d12 - um dado com 12 faces


2d6 - dois dados com 6 faces diferentes


3d4 - três dados com 4 faces diferentes


4d3 - quatro dados com 3 faces diferentes


6d2 - seis dados com 2 faces diferentes


Como você pode ver, o uso de cubos inadequados pode alterar bastante o equilíbrio do jogo.

Conclusão


Assim, foram considerados os seguintes tópicos:

  • manipulações com precisão usando vários métodos de verificação;
  • maneiras diferentes de acumular bônus de precisão;
  • distribuição de danos baseada em dados.

Cada um dos métodos pode ser útil para o desenvolvedor. Para jogos com um público mais casual, os algoritmos de economia são mais frequentemente escolhidos, nos quais a probabilidade de sucesso do jogador é superestimada e, para aumentar a excitação, é criada uma ilusão de uma vitória improvável (mais em um dos artigos anteriores: [ 7 ]).

Referências


1. Equívocos dos jogadores na avaliação de riscos. Controle de um gerador de números aleatórios em desenvolvimento .
2. Fire Emblem Wiki - Gerador de Números Aleatórios .
3. Noites de Inverno 2 - Habilidades de Classe - Mente Escorregadia .
4. Noites do Inverno - Guerreiro Pixie .
5. “Aleatoriedade não tão aleatória” em Design e Programação de Jogos .
6. Probabilidade e Jogos: Rolos de Dano dos Jogos de Red Blob .
7. Geração de chamada fechada em jogos: "À beira da derrota" ou "Quase venceu" .

Source: https://habr.com/ru/post/pt434928/


All Articles