Blog:Comparing Damage Systems

I have been re-examining the core part of the stats system - how damage is calculated - recently, and I think a change is needed. For those who want some insight into my reasoning for this, and the maths behind it, read on.

Intro
When I first started conceptualising this RPG stats system, I proposed two possible ways of working out the damage you deal to an enemy.

The first is the system we currently use; The second system was to basically do things the way D&D does, which is; I made a strawpoll and explained these two systems in detail, and people almost unanimously voted or Option One, because it is generally simpler and requires less rolls per player per turn.
 * You roll a d20 (/roll 20) and add your attack (strength, dex, int) modifier
 * You compare this total to an enemy's Defence number (or; I do behind the scenes at least)
 * Subtract Enemy Defence from your Roll Total, and the result is damage dealt.
 * You roll a d20 (/roll 20) and add your attack (strength, dex, int) modifier
 * You compare this to an enemy's Defence number (or I do, behind the scenes)
 * If you equal or exceed the defence number, your attack hits.
 * You then roll another dice to deal damage. (This dice would not be a d20, but could range from a d4 to a d12)

At the time I was advocating for Option Two, because it allows me more "design space" (god I sound like a real game dev PR person right now) in making weapons. Different weapons could do different amounts of damage, weapons that deal multiple types of damage (e.g. physical + fire) could roll multiple dice (1d10 physical + 1d6 fire) damage etc.

But I knew I was dropping a ton of new rules, combined with the dreaded maths, compared to our old system of a d100. So I decided to keep it simple and go with Option One that everyone was encouraging.

The one, key thing I had not thought about when initially proposing the two options was how the effect designing enemies, and the challenges therein.

Designing an Enemy
Designing an enemy fundamentally comes down to balancing three core statistics. Broadly speaking, Health determines how long an enemy will last in battle. Generally, weaker enemies that appear in greater numbers should have lower health, stronger enemies that appear in fewer number should have more, bosses should have the most. etc. This effects how long you'll be in combat with a creature on the most basic level.
 * Health
 * Attack Stat (what you must roll against to avoid damage)
 * Defence Stat (what you must roll against to deal damage)

This is balanced against the enemies Attack stat. The longer an enemy is in combat with you, the more damage it is going to deal to you. If the enemies Health and Attack are both too high, there's a good chance it will "kill" some or most players before it dies

The Defence stat is really the key stat in tweaking the length of a fight, and giving enemies the right 'feel' to them. A tanky (high hp) enemy can have low defence, and therefore taking a lot of damage but absorbing a lot before it dies. Conversely, an enemy could be weak (low hp) but be difficult to hit, and therefore be pesky to take down.

While there is (mathematically speaking) equality between [high health/low defence] and [low health/high defence], they create very different feels in combat. Combining this with high/low damage, and you can start to create archetypes: And so on and so forth. You get the idea.
 * "Tanks" have High HP, medium defence, but deal low damage
 * "DPS" have low HP, medium-low defence, but deal high damage
 * "Utility" foes might have low HP, high defence, low damage, but a variety of abilities to be annoying
 * You could have a "berserker" type enemy that has High HP, but low defence and high damage.

The Problem
The problem lies in how changing the enemies Defence Stat interacts with the damage calculation. Essentially, increasing an enemies Defence is double-dipping on making them stronger, by both increasing the percentage chance you miss, AND reducing the maximum damage you can deal. The reverse is true for lowering Defence as well.

To make the maths simple, lets imagine a situation where you are just rolling a flat D20 to attack, with no bonus. You face an enemy with 10 Health and 10 Defence. (Note: I am ignoring rules on Critical (natural 20) Rolls for simplicity. Crits throw the maths off slightly, but not enough to matter.)

If you roll an 11 or higher, you hit. So you have a 50% chance to hit.

Rolling [11,12,13,14,15,16,17,18,19 or 20] means you deal [1,2,3,4,5,6,7,8,9 or 10] damage.

This means the average damage you deal per turn is 2.75, so the enemy should last approximately 3-4 turns on average. (Average is a 3.63 recurring, for reference.)

Obviously, there is some high variance on this. You have a 5% chance to roll a 20 and one-shot the enemy. You have a 9% chance to roll 15+ twice and kill it in two hits. Or you could roll a (reallyfuckingsmall%) chance to roll 11 ten times in a row and take ten turns to kill it. Etc.

Now let's say I decide that this enemy is a little too weak. I decide to increase its Defence Stat from 10 to 12. This makes the creature 10% harder to hit. This means you now have a 60% chance to hit.

However, now, rolling a Rolling [13,14,15,16,17,18,19 or 20] means you deal [1,2,3,4,5,6,7 or 8] damage.

This has a few noticeable effects. Firstly, and most glaringly, it is now '''impossible to one shot the creature. '''You cannot kill it in one hit, period.

Secondly, you deal an average of 1.8 damage per turn now, meaning that the enemy should survive an average of 5-6 turns before dying. (average is 5.5 recurring)

The Enemy suddenly lasts 50% longer on average than before. It takes 34% less damage on average. It is significantly stronger for the sake of increasing its Defence Stat by a measly two!

Why does this happen?
You might've figured it out just looking at the numbers I posted enough, but the key part is here: Not only has the chance for you to hit increased by 10%, but the maximum damage you can deal has also decreased by 20%. This creates a exponential effect on the reduction in your average damage, which makes even small changes in Defence have a big impact on an enemies overall toughness.
 * Rolling [11,12,13,14,15,16,17,18,19 or 20] means you deal [1,2,3,4,5,6,7,8,9 or 10] damage.
 * Rolling [13,14,15,16,17,18,19 or 20] means you deal [1,2,3,4,5,6,7 or 8]

Why is it a problem?
Well, technically speaking its not a problem per se, but more of a massive inconvenience. It basically (severely) limits the amount of difference I can have in an enemy's Defence Stat, which in turn has a compound effect on the variety of enemy types I can create that actually feel different to fight, and this is turn homogenises combat.

The problem is exacerbated mostly when trying to create low Health enemies that are tough to hit, so that they can survive for a while by being lucky, but will go down quickly once people manage to get their hands on them.

The exponential effect means that as I increase Defence, an enemy's survivability goes through the roof, making them far more durable than even enemies with massive HP pools. Because you both can hardly hit them and even when you do you deal almost no damage.

There is a theoretical scenario that I thought of to really demonstrate the problem, though this is a far exaggerated example of anything I am likely to ever do in practice.

The Problem in Action
Imagine a scenario where I have created a challenge for the group to kill an extremely slippery Imp that phase-shifts to be undetectable. The Imp is invisible for most of the fight, and when he appears you get a 1 turn window to try and hit him before he vanishes again, continuing to wreak havoc.

The Imp's slipperiness makes him extremely hard to hit even when he is visible.

Imagine there are 3 players and they each have a +3 to their attack. The Imp, however, has a 22 Defence rating. This means you can only hit him with a natural 20 roll. (Note that I am again ignoring Criticals for simplicity.)

Even when you roll a natural 20, you reach an Attack of 23 vs a Defence of 22. You deal 1 damage.

This means, to kill the Imp in a single turn as per the challenge, ALL THREE players must roll 3 natural 20s in a row. The chance of this is 5% x 5% x 5%, or 0.0125%. That's about a 100th of 1% chance to succeed.

Its basically impossible. (Unless I pull another 7 hour event and get all three people roll 19 d20s per minute in order to reach the amount of rolls needed to statistically achieve 3 natural 20s in a row.)

What's the Solution?
Well, put simply, the solution is to split To-Hit rolls from Damage Rolls, so that changing an enemies Defence Stat no longer reduces both Hit Chance and Damage.

To put this in perspective, imagine the following changes to my Imp scenario above: Put mathematically, you have a 5% chance to hit, and then you roll damage. When you roll damage, the mimimum damage you can roll is now 4 (1+3) and so if you hit the Imp you are guaranteed to kill it.
 * Each player now rolls a d20+3, aiming to beat a 22.
 * If they do, then they roll a d10+3 for the damage they deal to the imp.

This changes things drastically. Now you have a 5% chance per player to succeed. This means with three of you trying, you have approximately a 15% chance of success.

To put it another way, you have 1200 times the chance to succeed.

Obviously this is an extreme and kinda dumb example, because instead of changing the damage system, you could just give the Imp 1 hp and solve the problem within the existing system.

That's kind of the point, though. To make enemies toughness balanced properly in the current system, sometimes illogical stat choices have to be made. Weak little mages suddenly become surprisingly tanky, big beefy ogres suddenly become surprisingly hard to hit, etc.

Why separate hit and damage rolls are better
Returning to my initial example, lets re-examine the idea of an enemy with 10 Defence and 10 Health, while you roll a d20+0 to hit him.

You have a 50% chance to hit him, and when you do, you roll a d10+0 for damage.

What stays the same?

The average damage you deal is still 2.75. You have a 50% chance to hit, and the average outcome of a d10 dice is 5.50. You still have a 5% chance to one-shot the enemy. A 50% chance to hit and then a 10% chance to roll 10 on a d10. Multiplying these percentages results in 5%. (it's (0.5x0.1)x100 if you're interested.)
 * 50% of 5.50 = 2.75.

What changes?

The change comes as soon as we increase our enemies defence from 10 to 12.

The enemy becomes 10% harder to hit as before, so now you have a 40% chance to successfully hit. However, you still roll a d10 on a successful hit. The average of a d10 is still 5.50, so your average damage becomes: This is a pretty big increase from the 1.8 our damage was reduced to before. Damage is decreased by 20% instead of the 34% it did before.
 * 40% of 5.50 = 2.2

For bonus points, you might notice that 10 to 12 Defence is a 20% Defence increase, and our average damage decreased by 20%. This means our damage is scaling linearly, instead of exponentially, with Defence.

The upshot of this is that I have a lot more room to play with enemies Defence stats without making them impossible to kill.

The enemy should last 4-5 turns on average at 12 Defence, as opposed to 3-4 turns at 10 Defence. If I wanted to push the enemy over to just barely last 5 turns on average instead? I could set the defence to 13. This level of granularity was not possible with the other damage calculation method.

Other problems solved by changing the Damage System
I have rambled on long enough, so I will make this brief, but there are other problems with the current damage system that this change will solve.

For example, I have conceived of making some very dangerous enemies that can deal high damage. Think of things like higher level demons like Doomguards and Wrathguards, or even Doomlords and Fel Lords.

The problem I faced was that I can't make an enemies attack stat too high, because you can only reduce damage by a maximum of 20+5 (with +5 to your dex or strength for defence.) This meant that there was a hard cap of a 24 attack stat before it was impossible for you to avoid damage.

Even if I was okay with some damage being unavoidable, the scaling of how much damage you received was suffering from the same exponential problems as how much you dealt.

At a d20+5 player defence, an attack stat of 15 would deal an average of 2.25 damage to you. At 20 Attack, that damage average becomes 5.25. At 30 Attack, it leaps to a massive 14.50 average damage.

If I separate Hit and Damage for players, it means I can do it for Enemies too. This means some enemies might have easily avoidable attacks, but they will hurt if they hit. Conversely, I can make some enemies very hard to avoid, but the damage they deal will never grow to massive amounts and risk one-shotting you.

Is this going to make the system complicated/lots of numbers for me to remember?
The short answer is no.

The long answer is no, because I am not intending to suddenly implement a dozen weapon stats or whatever. To start with I will implement one very simple change: Both rolls will add the same bonus (+str, +dex, or +int depending on your weapon/attack type) so there won't be anything complicated.
 * You roll a d20 to hit, and a d10 for damage.

It will mean that players will all be rolling twice each, per Attack turn, but we had this during the Bathalak event when Talizdormu buffed us all with haste, and it seemed to work fine just then.

If people get along well with this change, in the future I may look at introducing more to this damage system, because it is very flexible (and what the entire of Dungeons and Dragons is based on.)

How will the Attack turn flow now?
To keep things simple and clear, I will be asking players to conform to the following simple message format/order during player turn: Obviously it doesn't have to be worded exactly as above, but the general idea is there. Making it structured like this also makes it more clear when you should be stating, for example, when you are spending mana or using an ability (when they are added, finally.)
 * 1) RW says 
 * 2) You do /roll 20. The result is 18, you add 3. Your total is 21.
 * 3) You type; "21 to hit ."
 * 4) I reply "That hits" or "You hit, ", etc.
 * 5) You /roll 10. The result is 4, you add 3 for a total of 7.
 * 6) You type "7 damage, ."
 * 7) You then emote as you wish.
 * 8) (If your attack doesn't hit, at Step 4 I'd tell you you missed, and you'd just emote missing.)

Sorry this got long!
But you should expect that from me by now!

-Shahlia