Estou mexendo há algum tempo com um jogo e estou tendo muitos problemas com algo:
Eu tenho dois caracteres, cada um com atributos (cerca de dez) em um intervalo (entre 1 e 20). Eu quero usar esses atributos para gerar um 'roll', de modo que o roll mais alto ganhe esse encontro específico. Vale a pena notar que os dois personagens não estão se danificando / se defendendo. Ambos estão rolando para ver se passam no que eu acho que poderíamos chamar de verificação de habilidade. Ambos estão rolando para passar / falhar contra um valor comum. Eles não interagem um com o outro.
No entanto, quando um dos personagens tem até uma pequena vantagem numérica, qualquer fórmula que eu crie resulta no que é sempre ligeiramente superior, ganhando uma grande maioria do tempo. Isso é indesejável.
Tentei ponderar o atributo 'mais relevante' para o teste em 80% e a soma dos outros atributos em 20%. Também tentei comparar médias para produzir uma diferença relativa e usá-la para aumentar o caráter mais fraco. Ambas as abordagens resultaram nas vantagens significativas que estou tentando remover (por exemplo, se eu executar o encontro 5.000 vezes, produz regularmente um lado vencendo todos os 5.000).
A adição de um componente "sorte" só é importante, ao que parece, se for ponderado de alguma forma a favor do personagem menor, e eu não consegui um bom equilíbrio lá.
Que abordagens posso adotar para atenuar o impacto de uma pequena vantagem numérica, mas ainda preservar e aumentar essa vantagem à medida que a diferença relativa de atributos aumenta?
Por solicitação, aqui estão os detalhes que tenho até agora. Algumas coisas que eu ainda não descobri, então elas permanecem generalidades:
No momento, o rolo é gerado como
0.8 * (mainAttribute) + 0.2 (1/3 * subAttA + 1/3 * subAttB * 1/3 subAttC)
Atualmente, isso produz números na vizinhança de 4,0. Os atributos são gerados aleatoriamente entre os intervalos especificados. O teste atual usa um caractere com atributos de 2 a 4 e o oponente entre 3 e 5. Previsivelmente, esse resultado produz médias próximas a 3 e 4, respectivamente.
Com essa vantagem de um ponto, eu gostaria de ver a vitória mais forte das duas na área de 55% a 60% do tempo, com isso aumentando para ganhar cerca de 80% das vezes, com uma vantagem média de atributo de 5 ou 6, 90% com vantagens de 7 ou 8, deixando espaço para uma vitória improvável quando a diferença aumenta. Eu preferiria nunca ter vitórias garantidas, mas talvez as coisas se tornem muito improváveis - com a vitória de 99,5% ou 99,6% do tempo em que a diferença fica muito grande.
A fórmula atual produz um número não aleatório. A aleatoriedade vem da seleção de quais atributos são relevantes. Nem todos os atributos são usados para cada rolo. É possível que aquele com os atributos mais fracos em geral seja mais forte nas áreas relevantes para essa jogada e roube uma vitória. Mas, previsivelmente, isso acontece raramente.
Minha próxima tentativa foi avaliar seus pontos fortes relativos, medindo uma média de todas as estatísticas de cada um, dividindo-os um contra o outro e usando esse valor para dar um pequeno impulso ao personagem menor. Isso suavizou as coisas um pouco, mas ainda tinha uma tendência pronunciada de produzir coisas como 5.000 vitórias para um cara em cada 5.000 tentativas.