Fórmula para três heróis concorrentes, cada um com um que eles podem vencer e outro que são vencidos por

12

Estou tentando criar um jogo para um projeto que tenho. A idéia principal é:

3 Tipos de heróis
3 Estatísticas por herói

Não há níveis envolvidos, portanto as diferenças devem estar localizadas nas estatísticas.

Lógica da luta - A lógica da luta é que type1hero tem boas chances de ganhar type2hero, type2hero tem boas chances type3hero e type3hero tem boas chances de ganhar type1hero.

Por mais de uma semana, estou tentando encontrar uma fórmula baseada em estatísticas que me permita corrigir isso, mas não posso. Estava interferindo nos números de ontem e foi decente, mas não consigo extrair a fórmula.

Você poderia me orientar ou me dar dicas de como devo começar a criar fórmulas em um jogo não lvl que atenda à lógica da luta?

Georgiadis Abraam
fonte
1
"Por mais de uma semana, estou tentando encontrar uma fórmula baseada em estatísticas que me permita corrigir isso" - Corrigir o que? Este é um mecânico de pedra, papel e tesoura ; você não pode descrevê-lo matematicamente, porque não há x, y, z x > y ∧ z > x ∧ y > zpelo menos não em matemática básica que conheço e uso.
Markus von Broady
2
Embora você tenha recebido uma ótima resposta, essa pergunta não é muito boa.
MichaelHouse
@ MarkusvonBroady: A maneira usual de descrever matematicamente um pedido como este é com um gráfico direcionado / relação intransitiva. Você está certo de que não fará isso com números reais.
Joren
5
@ Byte56: Embora eu concorde que não seja apresentada de uma maneira muito agradável, a questão oculta permanece interessante: como modular um sistema de combate de três vias de maneira genérica, como em pedra-papel-tesoura, como expresso nas respostas abaixo. Não vale -1, imho.
precisa
@JesseEmond Na resposta abaixo *. O problema é muito simples, como comentei na resposta, são apenas várias armaduras e tipos de ataque disfarçados de mecânico de pedra-papel-tesoura. Embora a fórmula fornecida seja muito elegante.
Markus von Broady '

Respostas:

38

Seu jogo é um jogo não - transitivo . Você pode implementá-lo com 3 estatísticas R , P e S , usando a lógica pedra-papel-tesoura. Chame essas estatísticas do jeito que quiser, mas continuarei com a lógica do RPS.

Agora, suponha que você tenha dois heróis, com as estatísticas R1 / P1 / S1 e R2 / P2 / S2. Precisamos calcular quanto dano eles causarão um ao outro.

Você quer que as pedras causem danos à tesoura. Isso significa que o herói 1 causa dano «rock» ao herói 2 se R1 > 0e se S2 > 0. Uma fórmula que funciona é simplesmente min(R1, S2).

O que imediatamente nos fornece as fórmulas de dano:

Damage(hero1 on hero2) = min(R1, S2) + min(S1, P2) + min(P1, R2)
Damage(hero2 on hero1) = min(R2, S1) + min(S2, P1) + min(P2, R1)

Vamos ver o que acontece com um exemplo real:

    Hero1  Hero2
R    120     50
S     30    130
P     15     30

Dadas as estatísticas, o herói 1 é claramente do tipo «rock» e o herói 2 é claramente do tipo «tesoura». Aqui estão os resultados:

Damage(hero1 on hero2) = min(120, 130) + min(30, 30) + min(15, 50)
                       = 120 + 30 + 15
                       = 165
Damage(hero2 on hero1) = min(50, 30) + min(130, 15) + min(30, 120)
                       = 30 + 15 + 30
                       = 75

Resultados finais: 165versus 75. O herói 1 vence, conforme o esperado.

Existem muitas falhas nessas fórmulas, mas espero que elas lhe dêem uma idéia de como implementar regras de combate intransitivas .

sam hocevar
fonte
2
+1, eu poderia descrevê-lo simplesmente como vários tipos de ataques e armaduras (poision, elementar, física)
Markus von Broady
1

Cada herói treina em combate corpo a corpo (M), esquiva (D) e bruxaria (W).

Esquivar-se evita muito bem o combate corpo a corpo e ataques mágicos menos bem.

A cada rodada, um herói causa dano igual a (MD) + (W - 0.5D) (M e W são das estatísticas do atacante, D é das estatísticas do defensor.)

Portanto, um guerreiro pode ter as estatísticas:

M: 100, D: 20, W: 0

Um Rogue pode ter as estatísticas:

M: 30, D: 80, W: 30

E um assistente pode ter estatísticas como:

M: 10, D: 10, W: 80

Warrior vs. Rogue, o guerreiro negocia 20 DPS, enquanto o ladino negocia 30 DPS. Advantage Rogue! Ladino x Mago, o ladino lida com 20 DPS, enquanto o assistente lida com 40 DPS. Assistente de vantagem! Mago vs. Guerreiro, o mago negocia 70 DPS, enquanto o guerreiro negocia 90 DPS. Guerreiro da vantagem!

Simon Strange
fonte
Esta resposta não adiciona nada além do de Sam . Além disso, o ladino tem a menor vantagem (em 30 - 20 == 10comparação com 40 - 20 == 90 - 70 == 20os outros dois). Certamente isso significa que bandidos são inerentemente desfavorecidos?
Anko 23/01
A beleza desses sistemas não-transitivos é que eles se equilibram quase automaticamente. Ladinos desfavorecidos significam que menos pessoas os jogarão, deixando menos alvos para o mago derrotar e menos oponentes para o guerreiro ser derrotado. No entanto, se todos escolherem o guerreiro: o retorno do trapaceiro.
Marcks Thomas