🤔 Para Refletir :
"Já experimentou mudar a fonte do jogo?"
- Delayzado

[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
9
Bravecoins
4
Á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