Visualizing probabilities in player defense rolls

Many crunchy, combat-focused roleplaying games (including various editions of Dungeons & Dragons) run combat by having the attacker roll some dice to attack, add some sort of modifiers and compare the result to a defense number (usually calculated by some formula, but typically a fixed in value for the duration of a combat). This is part of the fun for players, rolling dice and seeing how you do. It can be a bit of a chore for the game moderator, though. If, for example, four protagonists (one for each player) are fighting, say, eight antagonists (all controlled by the GM), that’s a lot of rolling for the GM when the antagonists follow the same system as the protagonists.

To alleviate this you can find suggestions for a lot of these games for breaking this symmetry and putting the players in charge of seeing if the antagonists damage their characters. The idea is usually that, instead of the antagonists rolling an attack, the protagonists roll a defense. This involves a bit of shifting some numbers around in most cases but, ideally, when you invert the control like this, you want to make the probability of the protagonist getting hit remain the same. This is especially true if you have a complex combat system with a lot of interlocking parts, as small probability changes can accidentally mess the system up.

A typical example of a house rule to give the players defense rolls comes from the Players Roll All the Dice variation suggested in the d20 SRD. I say “typical” because this example contains two large flaws that seem to be present in every other variation that does this that I have seen.

The first problem is adding needless complication. Let’s look at the d20 suggestion to illustrate. In normal rules in this game, an attacker hits when:

1d20 + attack bonus ≥ target AC

The two main traits used in this formula turn out to be derived in a somewhat complicated way. The target AC, for example, is calculated like this:

target AC = 10 + various armor modifiers

…which complicates even further to something like this:

target AC = 10 + armor bonus + dex bonus + size bonus + natural bonus + etc.

This turns out not to be that big of a problem in play, however, because the AC is pre-calculated and written on the character sheet. (Some sheets might also list some or all of the bonus individually, too, but all of them will list AC.)

The variation in the SRD, however, undermines this, attempting to invert the math and ending up with a defense roll where the protagonist avoids getting hit if:

1d20 + various armor modifiers ≥ 11 + attack bonus

What happened to the nice, pre-calculated AC number, that every player already knows how to use? Fortunately, this is easy to fix, given the definition of AC above, by adding 10 to both sides of the equation:

1d20 + 10 + various armor modifiers ≥ 11 + 10 + attack bonus

1d20 + AC ≥ 21 + attack bonus

This may seem like picking nits, but this actually makes a huge difference at the table, because it allows players to use numbers they already know, without modification. (If you use software character sheets and such, it also means that you don’t have to customize the software to display some new number, but can just use what is already there.)

The second problem, however, is a lot worse: the formula suggested doesn’t preserve the probability of being hit. It’s off by five percent.

Now, while the probabilities involved are not that complicated, this is sort of hard to see. The point of this post is provide a visual way to illustrate what is happening. The key, as is often the case in probability, is to focus on the number of outcomes that result in a hit. That is, of the numbers on the die being rolled, how many cause a hit?

Let’s look at an example of what we are trying to model, the probability of the original rules. Lets say an antagonist with an attack bonus of +5 is attempting to hit a protagonist with an AC of 15. This would mean the attacker adds 5 and has to get a 15 or higher to hit. It would look something like this, with the outcomes shown in bold text with a red background indicating a hit:

d20 roll 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
attack result 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
outcome miss hit
9/20=45% 11/20=55%

Now, lets create a mirror to the table showing the suggested house rule. Remember that succeeding on this defense roll means that attack misses, so the defender adds 15 to a roll and needs to get 26 or more to defend (21+attack bonus 5). Let’s still color the results such that bold, red background numbers show cases where the protagonist is hit (meaning a roll of 25 or less). To line up the results, lets display the numbers running the opposite direction:

d20 roll 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
attack result 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
outcome miss hit
9/20=45% 11/20=55%
10/20=50% 10/20=50% outcome
miss hit
35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 defense result
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 d20 roll

By laying out the numbers like this, it is immediately obvious that the defense formula has a problem. Granted, that problem is in favor of the players, so it could be worse. To match the probability of the original rules, however, you need an adjustment of +1 to the target, so:

1d20 + AC ≥ 22 + attack bonus

This kind of “off by one” mistake is easy to make in systems that use “equal to or greater than” resolution. When inverting an “equal to or greater than” rule, the result must be “greater than” or you have to adjust the numbers. For example, instead of adding +1 to the target, we could have adjusted the comparison operator:

1d20 + AC > 21 + attack bonus

In this particular game, this would be a bad idea, though, because all the rest of the mechanics use “equal to or greater than” style checks. Better to have one slightly odd constant than to have a divergent comparison.

Some additional scenarios comparing the original probability to the “players roll defense” variation can be found in this spreadsheet.

Leave a Reply

Your email address will not be published. Required fields are marked *