🤔 Para Refletir :
"Não force a criatividade, liberte a sua mente e a criatividade virá."
- Frank

[Discussão] Subtração x Multiplicação nos cálculos de dano, qual vocês preferem?

Pássaro de Ferro Masculino

Novato
Membro
Membro
Juntou-se
22 de Fevereiro de 2025
Postagens
11
Bravecoins
16
Área
Programação
9l6iir.jpg


Vendo as fórmulas da Base de Dados padrão do RPG Maker VX Ace, notei que as habilidades dela usam principalmente subtração em suas fórmulas de dano (dano = ataque de Fulano - defesa de Cicrano). Até então eu sempre vi fórmulas de dano que usavam alguma forma de multiplicação ou divisão como o padrão, mas pesquisando sobre o assunto, vi que a subtração já foi usada no Dragon Quest. Então fiquei curioso: vocês têm preferência por alguma destas operações matemáticas?

Para referência, algumas fórmulas de dano de diferentes jogos, com algumas abstrações para simplificação:

RPG Maker VX Ace
Javascript:
dano = a.atk * 4 - b.def * 2
A fórmula do comando "Atacar" do RPG Maker, que motivou o meu post.

Dragon Quest
Javascript:
dano = (a.atk - (b.def / 2)) / 2
Praticamente a mesma fórmula do RPG Maker, só que gerando 1/8 do valor final. Tem um efeito colateral de valores ímpares de defesa não gerarem benefícios.

Final Fantasy VI
Javascript:
//a.calc_ataque() são cálculos feitos antes de calcular os efeitos da defesa
dano = (a.calc_ataque() * (255 - b.def) / 256) + 1
Detalhe: a defesa em FFVI pode ir até 255. Na prática, é como se a defesa representasse uma porcentagem de redução do dano original do ataque. Defesa 0 reduz 0%, Defesa 127 reduz 50%, Defesa 255 reduz 100%. Exceto por esse +1 garantindo que todo ataque cause ao menos 1 de dano, se o alvo não tiver alguma imunidade.

League of Legends
Javascript:
dano = a.calc_ataque() / (1 + b.def / 100)
Uma divisão simples, mas que soma uma constante à defesa (chamada de Armadura neste jogo específico) para evitar a divisão por 0. Tem a característica interessante de não exigir um limite máximo para o valor da Defesa, como no caso do Final Fantasy.
 
Última edição:
Ótimo tópico. A primeira vez que peguei o XP, eu fiquei encucado com isso e achava bizarro a falta de material a respeito disso.

Gosto da do Dragon Quest. A do Final Fantasy VI acho bem estranha em níveis mais altos. O Maker ter uma fórmula praticamente igual a do Dragon Quest, ao meu ver, é mais um reforço em como a engine foi baseada na franquia.

Lá pra 2010 eu detestava fórmula com subtração, mas hoje não vejo tanto problema, apesar de ainda ser difícil de me decidir. Se o jogador tiver 50 de ataque e o inimigo 90 de defesa, já reduz 80% do dano que teria se fosse igual.

A fórmula do DotA é a do Warcraft 3, que foi copiada pelo LoL. Já usei em um RPG. Pra contribuir com o tópico, vou mandar a fórmula de pokémon. Muda um pouco entre os jogos, então vou escolher a de pokémon Ruby/Sapphire/Emerald e FireRed Leafgreen:

Javascript:
dano = ((2 * a.level / 5 + 2) * a.calc_ataque() / b.def) / 50 + 2
Funciona da mesma forma para ataque especial e defesa especial.
 
Voltar
Topo Inferior