Three damage formulas dominate RPG design — and each one gives the combat a very different feel. This article shows what each feels like at the table or on the controller, with the math behind the personalities.

If you've played enough RPGs you've probably noticed that some games feel like every point of armour matters, while others feel like the armour stat barely budges your survival rate, and still others have a brick wall at certain damage levels where suddenly an enemy that used to one-shot you now does nothing. That's not bad balancing — that's the damage formula doing what damage formulas do. Three formulas dominate the genre, and once you can recognise which one a game uses, the rest of its combat design starts making sense.

This article is for the game designer who's about to make the same choice — and for the player who wants to understand why their favourite game feels the way it does. The math is light, the consequences are large.

Formula 1: Subtractive (DMG − DEF, clamped to 1)

The classic D&D / Final Fantasy / old-school JRPG model. Final damage equals attack minus defence, clamped to a minimum of 1 so attacks never deal zero.

Example: a sword does 30 damage. The target has 10 armour. Final damage is 20.

This formula has one immediate, intuitive virtue: it's readable. Players can do the math in their head. A +5 sword versus a 10-armour enemy is obviously different from a +5 sword versus a 25-armour enemy. The mental model of "I hit hard, they block some" maps cleanly onto the math.

The trouble starts at extremes. When attack and defence are close in value, tiny changes in either produce massive percentage shifts. A sword doing 11 damage to a 10-armour enemy deals 1. The same sword doing 12 damage deals 2 — a 100% increase from one extra point of weapon power. Meanwhile, a sword doing 100 damage to that same 10-armour enemy deals 90, and gaining one more attack point bumps it to 91 — a 1% increase.

The design consequence: subtractive systems create cliffs. Below a defence threshold, enemies are nearly invulnerable to your attacks. Above it, defence barely matters. This is fine for games that want clear power tiers (you genuinely cannot hurt the dragon until you find the dragon-slaying sword), but bad for games that want continuous skill expression at all levels.

Old D&D leans into this by gating monsters behind "damage reduction" thresholds — your +1 sword can't hurt a creature with damage reduction 5/magic, but your +2 sword cuts through it freely. The cliff is the game-design intent, not a bug.

Formula 2: Divisive (DMG × 100 / (100 + DEF))

The Diablo, Path of Exile, World of Warcraft model. Final damage equals incoming damage multiplied by 100, divided by 100 plus defence value. Sometimes written as DMG × (100 / (100 + Armor)).

Example: a sword does 30 damage. The target has 100 armour. Final damage is 30 × 100 / 200 = 15.

The behavioural difference from subtractive is dramatic. There are no cliffs. Every point of armour reduces damage by a smaller and smaller percentage — the curve is smooth, asymptotic, and never reaches 100% reduction no matter how high armour climbs. Doubling armour from 100 to 200 takes you from "halve incoming damage" to "third of incoming damage" — meaningful, but not a brick wall.

What this gives the designer: continuous gear progression that always matters but never becomes invulnerability. The 5,000th point of armour still does something. Stat curves can extend essentially forever without breaking the math.

What it costs: mental readability. Players can't do divisive damage math in their head. Diablo 3 ended up displaying a "damage reduction %" stat directly because raw armour numbers became uninterpretable. Diablo 4 went further with several stacking layers of multiplicative reductions, which is mathematically beautiful and a UX challenge.

Divisive formulas also tempt the dreaded "stat squish" — every couple of years the dev team has to compress the stat range because cumulative buffs have pushed numbers into 7-digit territory and players can no longer reason about relative power.

Formula 3: Percent resist (DMG × (1 − resist%))

The MMO classic. Final damage equals incoming damage multiplied by 1 minus a percentage value that comes directly from the resistance stat.

Example: a fire spell does 100 damage. The target has 30% fire resistance. Final damage is 70.

This is the easiest formula to compose. Apply 30% resist, then 20% damage-reduction buff, then 10% defensive cooldown — each just multiplies in. A spreadsheet of buffs and debuffs that all express themselves as percent-modifiers stacks cleanly.

Where it gets weird: percent resists from multiple sources can stack in different ways. Additive stacking ("30% + 20% = 50% resist") versus multiplicative stacking ("(1-0.3) × (1-0.2) = 56% damage taken, i.e. 44% effective resist"). The two produce noticeably different numbers and every percent-resist game has to make a design decision about which way different sources stack.

The hard ceiling problem: percent resists can theoretically reach 100% and stop damage entirely, which usually breaks PvP and certain encounters. Most games cap resist at 75%, 80%, or similar. Once you have caps, "overcap" buffs (resist above cap that becomes useful when the enemy applies a resist-reduction debuff) become a tactical layer.

Hybrid and weird ones

Real games rarely use a single formula in isolation. Some notable hybrids:

The recurring lesson: most well-loved games use multiple formulas in layers because no single one captures every design intent. The art is layering them so the math stays interpretable.

Designer decision tree: which one for what feel

If you're designing a damage system from scratch, here's the heuristic version:

The thing that's easy to miss as a designer: the damage formula determines what your stat curves can look like. Subtractive systems usually have small linear stat growth (D&D's HP per level, +1/+2/+3 weapons). Divisive systems often have huge multiplicative stat growth (Diablo's late-game numbers in the millions). Percent-resist systems push the design weight into composition and matchups rather than raw numbers.

Tool walkthrough

The damage calculator implements all three formulas plus the most common hybrids. Punch in the same attack value and defence value, switch between formulas, and watch the output. Then sweep the defence stat from 0 to its max and see the curve each formula produces.

Specifically:

Looking at the three curves side by side is the fastest way to internalise which formula does what. Game designers iterating on combat feel often have all three plots open while tweaking stat ranges.

For XP curve design — the other half of "how does player power feel over time" — the XP curve calculator shows the major curve shapes (linear, quadratic, geometric, custom polynomial) with their plot. Pairing it with the damage calculator lets you see how a level-up actually translates into damage output at every stage of the game.

Where to read further

Damage formulas are one of the rare places in game design where the math itself produces a feel. Pick the wrong one and no amount of art, sound design, or animation polish will make combat satisfy. Pick the right one and players will tell you "the combat just feels good" without ever knowing why.

← All articles