11
\$\begingroup\$

I will preface this question by stating that the hypothetical situation proposed below will obviously only work as long you have a die with a number of faces equal to the number of enemies.

Scenario

Suppose we have a party of PCs and they encounter 8 identical hostile enemies. Once of the PCs is a wizard, and decides to cast Fireball in such a way that it will hit all 8 enemies at once. Since we don't roll to-hit with Fireball, all the enemies just make a Dexterity saving throw. These rolls would normally be rolled for each discrete enemy for a total of 8 individual rolls.

Question

Would it be entirely unfair to roll a single d20 and a single d8, and if the d20 roll succeeds on the Dex save, rule that the 1d8 roll is the number of enemies take half (or full) damage, and the rest take full (or half) damage? Conversely, if the Dex save fails, all enemies take full damage.

Thoughts

I'm considering an approach to speeding up dice rolls for large packs of enemies, but I can't really tell outright if the above scenario is unfair. My first impression is that it might skew based on saves or AC (if we're rolling to-hit instead of for saves) and number of enemies.

For the example let us consider two sets of outcomes: one for a pack of Kobolds, and one for a group of Bandits.

I know this all essentially boils down to dice math, but I'm not the greatest at it and would appreciate the help evaluating whether this is fair, and what the reasonable thresholds are.

\$\endgroup\$
14
\$\begingroup\$

As everyone noticed,

Your system makes AOEs stronger.

The average damage you get is higher, sometimes by a large factor.

We can fix it.

  • Make two saves -- roll 2d20.

  • If both fail/pass, everyone fails/passes.

  • If one fails and one passes, roll 1d8 (for 9 creatures) to determine how many fail (all or none should not be possible).

This has a higher variance, but exactly the same average, and emulates rolling 9d20 saves reasonably.

Proof:

Suppose your individual creature has a probability \$P\$ of saving. Then the expected number of creatures making the save is \$9P\$.

Meanwhile, the 2d20 trick has 3 possibilities:

  • both rolls save; the chance of this happening is \$P^2\$.
  • both rolls fail; the chance of this happening is \$(1-P)^2 = 1-2P+P^2\$.
  • one save, one fail; the chance of this is \$2P(1-P) = 2P-2P^2\$. (The factor of 2 is because if you have a red and a black d20, the red one could pass while the black one fails, or vice versa.)

If two saves means that all 9 creatures pass, two fails means that all 9 creatures fail, and 1 save 1 fail means that 1d8 creatures pass, then the average number of creatures that pass will be:

$$ 9P^2 + 0(1-2P+P^2) + 4.5 \times 2(P-P^2) = 9P^2 + 9P - 9P^2= 9P. $$

This is the same average as rolling 9 saves individually.

The variance is significantly higher than in the "real" case. The chance that all pass is \$P^2\$ in this case; in the original case it was \$P^9\$, a much lower value. The same is true of everyone failing. The middle probabilities are also flat and fatter than in the real case.

But you'll get the feel of "a random number of foes pass/fail", and a similar average.

Note that higher variation is typically slightly harmful to PCs, as on average they win fights; when you are in the lead, you want less variation.

However...

Really, calculate what you need to roll (say a 13 to save). Then rolling 9d20 and counting 13 and above is really not hard, especially if you have at least 3d20 to roll at once.

The trick is to work out the threshold on the d20 before rollling the pool, so you don't have to do per-die math, just count that which passes the threshold.

When you need such a system:

If you had 100 creatures who had to make a saving throw, rolling 100 dice and counting starts getting really painful (barring an automated solution).

What I'd do is roll 5 saves (so 5d20). Multiply number of successes by 20, giving us either 0, 20, 40, 60, 80 or 100. Then add 1d20 and subtract 1d20. That many pass the save (capped by "everyone" and "noone")

Much like the smaller model above, the variance remains much smaller than the "real" case here, but the average remains identical. And you'll get a distribution where the tails are less likely than the middle.

Or Use Statistics

Var(1d20>=X) = (20-X)(X)/400

This is bounded above by 1/4.

Variance is linear for independent events, so Var(roll 100 d20, how many are >= X) is 100 * (20-X)(X)/400, and bounded above by 100/4.

Standard deviation is Sqrt(Var), which is bounded above by Sqrt(N)/2.

Var(K*(1d12-1d12)) = K^2*143/6, SD(K*(1d12-1d12))=~K4.88.

If we set Sqrt(N)/2 = K4.88, we get Sqrt(N)=K9.76, or K=~Sqrt(N)/10.

What this means is if we want to emulate really accurately how many out of a huge number of targets make or fail a saving throw?

First work out what fraction would fail on average. If the DC is 15, for every 20 targets 15 should fail on averge.

Now take the square root of the number of targets. If there are 400 targets, the square root is 20. Divide by 10, getting 2.

Add 2 times 1d12, and subtract 2 times 1d12, to the number of targets who save.

This has the same average as "really" rolling 400 d20s and seeing how many beat 15, and also has the same standard deviation at 50-50 chance (and higher at non-50-50). (It has quite different higher order moments)

K=1 should have at least 40 targets. K=2 starts at 200 targets. K=3 at 600, K=4 1200, K=5 2000, K=6 3000, K=7 4000, K=8 5000, K=9 7000, K=10 9000.

If you need to roll a save for more than 10000 targets, perhaps try a different system. ;)

\$\endgroup\$
  • \$\begingroup\$ @NautArch Math added. \$\endgroup\$ – Yakk Jan 30 at 15:46
  • \$\begingroup\$ Thanks! I'll let others with more math skills than I confirm :) \$\endgroup\$ – NautArch Jan 30 at 15:47
  • 3
    \$\begingroup\$ @NautArch: This method indeed gives the correct average number of saves. The distribution looks a lot different, though, and the variance is quite a bit higher. But that might be just fine from a gameplay perspective. \$\endgroup\$ – Ilmari Karonen Jan 30 at 17:21
  • \$\begingroup\$ This is great. Very in-depth explanation, and suggestions on how to solve the issue of rolling tons of dice at once. Thank you \$\endgroup\$ – G. Moylan Jan 30 at 21:53
25
\$\begingroup\$

The procedure you describe makes AOE attacks much more powerful.

Whether it's an attack roll or a save, there's some percentage chance of hitting a single target, based on your attack bonus and its AC, or their save bonus and your DC. Let's call this probability p.

The result, in terms of number of targets hit, follows a binomial distribution. To sum up, either hitting all the targets or missing all the targets is really unlikely. The most likely result is that you'll hit a fraction of targets equal to p. Like, if you need a 13 or better to hit (p = 0.4) and there are 10 targets, most likely you'll get 4 hits.

Ignore the issue of "half damage" for now and just assume that you roll a single save for the entire pack of kobolds. On failure, they all die. That would have the same average outcome as rolling all their saves individually, which is that 40% of the time, they die. It would have much higher variance, because the only possible outcomes are "everyone dies" and "everyone lives", but the same average.

What you're doing here is that, plus if you roll "everyone lives" then you make a roll to decide how many of them are killed anyway.

It's unlikely you'll find a better method than to roll a big handful of d20s and count the successes.

\$\endgroup\$
  • \$\begingroup\$ Thanks for reminding me that binomial is technically different than normal \$\endgroup\$ – David Coffron Jan 29 at 20:53
  • \$\begingroup\$ Not to mention, as soon as one creature is more vulnerable than the others, you've effectively copied that vulnerability to every other creature within the blast radius. \$\endgroup\$ – corsiKa Jan 30 at 2:13
  • 1
    \$\begingroup\$ If you have software handy to take samples from a binomial distribution, it might be a bit faster than rolling a bunch of D20s, especially if you have to make the rolls in batches. Of course, you'd need to get everyone on board with trusting the software. \$\endgroup\$ – Vaelus Jan 30 at 3:43
  • \$\begingroup\$ @Vaelus Sampling from a binomial distribution is equivalent to rolling a bunch of dice. If a computer is involved, rolling thousands of virtual dice should take a fraction of a second. \$\endgroup\$ – Acccumulation Jan 30 at 22:57
22
\$\begingroup\$

This method heavily favors the spellcaster

For the sake of simplicity, we're going to assume both a save DC and saving throw modifier that makes it so that a natural 10 or lower fails the save, and a natural 11 or higher succeeds.

Below is a table for the odds, when facing 8 creatures, that a specific number of creatures will successfully save against this spell, using the normal rules and using your variant.

\begin{array}{|l|l|l|} \hline \text{# of Creatures Saved} & \text{Odds for Normal Rolls} & \text{Odds for Your Method} \\ \hline 0 & 1/256 & 128/256 \\ \hline 1 & 8/256 & 16/256 \\ \hline 2 & 28/256 & 16/256 \\ \hline 3 & 56/256 & 16/256 \\ \hline 4 & 70/256 & 16/256 \\ \hline 5 & 56/256 & 16/256 \\ \hline 6 & 28/256 & 16/256 \\ \hline 7 & 8/256 & 16/256 \\ \hline 8 & 1/256 & 16/256 \\ \hline \\ \hline \text{Average} & 4.000 & 2.250 \\ \hline \end{array}

It is clear that your variant makes it far more likely that all creatures will fail to save, and even in the situation where some creatures do save, the odds your method produces don't reflect the correct odds very well. So in general, creatures will save against spell effects less often, making AOE spells much more powerful.

Normal Odds

\begin{array}{|l|l|l|l|l|l|} \hline \text{# Saved↓/Roll Needed→} & 3 & 6 & 11 & 16 & 19 \\ \hline 0 & 0.000005\% & 0.003\% & 0.391\% & 6.674\% & 23.915\% \\ \hline 1 & 0.0003\% & 0.067\% & 3.125\% & 22.247\% & 42.515\% \\ \hline 2 & 0.009\% & 0.641\% & 10.938\% & 31.146\% & 24.801\% \\ \hline 3 & 0.136\% & 3.461\% & 21.875\% & 24.225\% & 7.348\% \\ \hline 4 & 1.276\% & 11.536\% & 27.344\% & 11.536\% & 1.276\% \\ \hline 5 & 7.348\% & 24.225\% & 21.875\% & 3.461\% & 0.136\% \\ \hline 6 & 24.801\% & 31.146\% & 10.938\% & 0.641\% & 0.009\% \\ \hline 7 & 42.515\% & 22.247\% & 3.125\% & 0.067\% & 0.0003\% \\ \hline 8 & 23.915\% & 6.674\% & 0.391\% & 0.003\% & 0.000005\% \\ \hline \\ \hline \text{Average} & 6.800 & 5.750 & 4.000 & 2.250 & 1.200 \\ \hline \end{array}

Your method

\begin{array}{|l|l|l|l|l|l|} \hline \text{# Saved↓/Roll Needed→} & 3 & 6 & 11 & 16 & 19 \\ \hline 0 & 10\% & 25\% & 50\% & 75\% & 90\% \\ \hline 1 & 11.25\% & 9.375\% & 6.25\% & 3.125\% & 1.25\% \\ \hline 2 & 11.25\% & 9.375\% & 6.25\% & 3.125\% & 1.25\% \\ \hline 3 & 11.25\% & 9.375\% & 6.25\% & 3.125\% & 1.25\% \\ \hline 4 & 11.25\% & 9.375\% & 6.25\% & 3.125\% & 1.25\% \\ \hline 5 & 11.25\% & 9.375\% & 6.25\% & 3.125\% & 1.25\% \\ \hline 6 & 11.25\% & 9.375\% & 6.25\% & 3.125\% & 1.25\% \\ \hline 7 & 11.25\% & 9.375\% & 6.25\% & 3.125\% & 1.25\% \\ \hline 8 & 11.25\% & 9.375\% & 6.25\% & 3.125\% & 1.25\% \\ \hline \\ \hline \text{Average} & 4.050 & 3.375 & 2.250 & 1.125 & 0.450 \\ \hline \end{array}

The math is clear: your method of determining whether a creature successfully saved or not makes all AOE spells much more powerful.

\$\endgroup\$
  • 3
    \$\begingroup\$ Spreadsheet Sorcerer strikes again! +1. (Or should that be "the stats sorcerer strikes again" instead) \$\endgroup\$ – KorvinStarmast Jan 30 at 16:14
  • 2
    \$\begingroup\$ First and second table would be easier to compare if 1) their odds both used a common denominator or were given as percentages and if 2) the two tables were combined into a single table with each odds column labeled distinctly. \$\endgroup\$ – Bloodcinder Jan 30 at 16:35
  • 1
    \$\begingroup\$ @Bloodcinder Agreed, I've updated the tables accordingly and restructured the first part a little bit. \$\endgroup\$ – Xirema Jan 30 at 17:06
15
\$\begingroup\$

Your proposal makes certain spells significantly more powerful

For simplicity, let's say that the spell does 20 damage normally, and does 10 damage on a successful save, and the enemies have a 50% chance of making their save. In this case, the average damage done to each enemy is 15 (halfway between 10 and 20). With your proposed change, the average damage becomes about 17.5, because on a successful save, some enemies still take full damage. Across 8 enemies, that's about 20 additional damage. Obviously, this affects game balance in weird and non-intuitive ways: spells that require saving throws become more powerful, but only against groups of enemies, while similar spells that require attack rolls are unaffected.

Alternative: Just use the average result

If rolling too many saving throws genuinely becomes a problem, you can use a shortcut: compute the probability of a successful save, and just say that this fraction of the enemies make their saving throw. For example, let's say that the enemies have to roll a natural 12 or higher to succeed on the saving throw. That means their probability of a successful save is 9/20, or 45%. In other words, on average, 45% of enemies will succeed on this saving throw. So, without rolling, just declare that 45% of the enemies make their save, and the rest fail (choose the ones that fail at random). Of course, you will need to decide in advance what rule you will use for rounding for the sake of fairness. Is 45% of 10 enemies 4 or 5? Make sure you use a consistent rule that you have explained to your players, and apply that rule to both player spells and enemy spells.

Note: This idea is similar in concept to the suggested simplifications for handling mobs in the DMG.

Suggested rounding rule: treat fractions as "chance to round up"

If you want to inject a small bit of randomness into things, here's a rule for rounding fractions suggested by @PeterCordes: treat any fraction as the a chance to round up. Suppose that when doing the above calculation, we determine that 5.3 enemies should succeed on their saves. The fractional part is 0.3, so we treat that as a 30% chance of rounding up and a 70% chance of rounding down. In general, we can do this by expressing the fraction as a percentage and then rolling a percentile die. If the roll is higher than the calculated percentage, round down. Otherwise, round up. In this example, we round down if the percentile dice roll over 30, which has a 70% chance to happen. This makes sense because 5.3 is closer to 5 than it is to 6. Obviously you can take shortcuts for easy cases, such as flipping a coin for 50%, rolling a d4 for 25%, etc.

If you use this rounding rule, then you only ever have to make one roll to determine the number of successful saves. Involving a die roll, even if it is relatively non-impactful, might help to placate players who find it unsatisfying to resolve such a large spell without rolling any saving throws. (On that subject, for some players, the fact that a big blast spell involves rolling lots and lots of dice is part of how they feel like their spell had an impact, and you might consider just rolling all those saves for that reason alone.)

\$\endgroup\$
  • 1
    \$\begingroup\$ Maybe roll for the one partial creature left after applying the average. (e.g. if 4.2 targets should have saved, based on the DC then give one creature a 20% chance of saving, and roll for it. (17 or better on a D20, or below 2 on a d10, or however you want to do it a 1-in-5 chance.) It's important to remember that you're not rolling the save against the original DC for the last partial creature, though, unless the save rate divided evenly into the rest of the group other than it. \$\endgroup\$ – Peter Cordes Jan 31 at 4:13
  • \$\begingroup\$ @PeterCordes Thanks, that's a great suggestion! I'll edit it into my answer. \$\endgroup\$ – Ryan Thompson Jan 31 at 4:36
5
\$\begingroup\$

The system you propose could have a big impact on the total number of hits dealt. Suppose your enemies each have a 90% chance to save and 10% chance to fail the save. If you get lucky and they fail the save, you have a 1/8 chance of rolling an 8 on the D8 and hitting all of them for full damage. In sum, you have a 1/80 (1.25%) chance of dealing full damage to all the enemies.

If you did this the proper way, each enemy would have a 10% chance to fail the save, so you'd have a 1/10^8 (0.000001%) chance of hitting all of them, which is about a million times less likely than the time-saving way.

This also translates into a big difference in how many enemies are hit. If all your enemies have a 50% chance to save, on average half of them will fail the save, and you'll usually get somewhere within 40%-60% failing. Contrast this with the time saving method, wherein if the save fails, you have an equal chance to hit 1 enemy, half of your enemies, or all of your enemies. These simple example shows that there can be a huge difference between the two methods.

\$\endgroup\$
  • 2
    \$\begingroup\$ The one-in-a-million chance of hitting all of them really makes the point, I think. \$\endgroup\$ – Mark Wells Jan 29 at 20:57
  • 1
    \$\begingroup\$ Ah, we crossposted with the same reasoning. Yours is earlier, you get to keep it. \$\endgroup\$ – Zachiel Jan 29 at 20:59
3
\$\begingroup\$

It is a substantial difference

With the same saving throw/armor class:

Rolling a dX for the number of targets hit is a uniform distribution (equal probability of each number of targets) while the distribution by default is binomial (more likely that a median number of targets is hit). This means the variant you propose is much more swingy (more likely to hit few or many targets).

With different saving throws/armor classes:

In the case, the same as above is true, but you also have to contend with the differences in statistics. If you take the average, you are bringing things into a potentially abusable state (as hard to hit targets become easier, while easy to hit targets, which are typically weaker in general, become harder). If you take the highest or lowest, you weaken or strengthen the spell respectively.

\$\endgroup\$
  • \$\begingroup\$ it does not seem that you are taking into account the initial saving throw. \$\endgroup\$ – goodguy5 Jan 29 at 20:43
  • \$\begingroup\$ @goodguy5 that's a lot more math and is way too broad (as all distributions of 8 saving throw modifiers are different) \$\endgroup\$ – David Coffron Jan 29 at 20:44
  • \$\begingroup\$ agreed, and I think THAT is the question \$\endgroup\$ – goodguy5 Jan 29 at 20:44
  • \$\begingroup\$ @goodguy5 It's still a uniform distribution, but with a large spike over at one end. \$\endgroup\$ – Mark Wells Jan 29 at 20:47
  • \$\begingroup\$ @goodguy5 addressed somewhat \$\endgroup\$ – David Coffron Jan 29 at 20:47
2
\$\begingroup\$

If you're dealing with Kobolds, it probably won't matter a whole lot to the balance overall, since any party capable of casting a Fireball is likely to be far above kobolds anyway, and any saves would have a very very small chance of leaving any one kobold alive with 1 hp. But let's look at the math just to be sure, because we can extend this rule to bigger and better enemies.

The bottom line is that fewer dice produces bigger swings in the spectrum. This answer regarding doubling dice vs doubling damage has helpful diagrams that better explain the distributions of dice.

For the purposes of this experiment, we're going to use a DC of 14 (+4 primary stat) and the Kobolds Dex of 15 (+2).

Normal Rules

By normal rules, in order to make the save, a kobold must roll a 12 or higher. Using Anydice, we can see the chance to save with the formula output 1d20, which gives us a 45% (9/20) chance to roll at least a 12. The odds that two of them both make the save are \$.45^2 = .2025 = 20.25\$%, and the odds that both of them fail are now \$.55^2 = .3025 = 30.25\$%, leaving a combination of either of those to be 49.5%. We can see if we extrapolate this data to 8 kobolds, it gets pretty dicey (pun intended).

\$.45^{8} = .00168 = .168\$%. There is a .168% chance that all of the kobolds make the save and a \$.55^8 = .00837 = .837\$% chance that all of them fail the save. Meaning that 99% of the time, there will be some combination of kobolds that make and fail the save. Basically the idea here is that there are fewer extremes when using the normal method. most of the time, 1 or more kobolds will make the save and 1 or more kobolds will fail the save. The actual distribution of those results is a little bit outside of my wheelhouse.

1 Save, 1d8 hits

Using your method, we can more easily calculate the chance that any number of kobolds will be hit.

There's an aforementioned 55% chance that the save is failed and there's a 45% chance that they make the save. When you roll a "success" for each individual result on the D8, there's an equal 5.625% overall that that number is rolled. When you roll a "fail", there's an equal 6.875% for each of those individual numbers. Whether or not a d8 represents hits or saves doesn't really matter, so in the data below a "1" means either "1 save" or "1 miss", whatever you want.

So here's what it looks like

  • Miss, at least 1: 55%
  • Miss, at least 2: 48.125%
  • Miss, at least 3: 41.25%
  • Miss, at least 4: 34.375%
  • Miss, at least 5: 27.5%
  • Miss, at least 6: 20.625%
  • Miss, at least 7: 13.75%
  • Miss, at least 8: 6.875%
  • Succeed, At least 1: 45%
  • Succeed, At least 2: 39.375%
  • Succeed, At least 3: 33.75%
  • Succeed, At least 4: 28.125%
  • Succeed, At least 5: 22.5%
  • Succeed, At least 6: 16.875%
  • Succeed, At least 7: 11.25%
  • Succeed, 8: 5.625%

Now, comparing the two methods, you can see that there is a much MUCH greater chance that every kobold fails the save or every kobold makes the save. Rolling fewer dice always creates much more "swing" in terms of results, which gets more drastic the bigger the difference in dice.

Now, is it fair? Well, no. But, since you're in the interest of time, one can guess that balance isn't really a priority for you, is it? If you're fighting many tough creatures, you might very well take care to roll individually to make sure the fight is as balanced as possible. But with weak enemies like kobolds and bandits, well, there's a slim chance they survive a fireball. In these cases, many DMs choose to simply kill these creatures outright. Remember, the balance of any encounter is entirely in your hands and you can change it whenever you feel like it.

\$\endgroup\$
  • \$\begingroup\$ @V2Blast can you explain your "accessibility" comment \$\endgroup\$ – Premier Bromanov Jan 30 at 17:02
  • 1
    \$\begingroup\$ See this meta and this one. \$\endgroup\$ – V2Blast Jan 30 at 17:06
-3
\$\begingroup\$

Yes you can.

The rules are a guideline what is important is having fun and keeping session going.

It is good your not wanting to bog down things by rolling tons of different saves and using the d8 routine you described would make things faster.

However It is hard to tell whether it would be best to do this with every enemy due to ones that have a low dex save that you roll high for on both the save and d8 could make it so a majority save when they normally wouldn't or vice versa a majority failing when they normally wouldn't.

Rather than rolling a d8 why not just add the creatures save bonus to 10.5 and if it is higher than the spell save have a majority pass. And if averagely lower have majority fail. If it is close round in the players favor

Example The same 8 said creatures have a plus 4 to dexterity saves and the dc is 14.

Their save is 15.5 so majority succeeds (4+1) so 5 take half damage.

To mix this up you can alternate between a majority -1 (4) or majority +1 (5+1) so that is doesn't seem like you have a consistent formula when you really do.

Doing this will let you have majority already decided in planning if you know what aoe spells your players use so that everything can continue smoother.

This is just a quick way I handle it, I think it will mainly be opinion and DM based on what they like.

\$\endgroup\$
  • \$\begingroup\$ Oh !! I mathed wrong ill correct. Got mixed up by half dice size +.5 and accidentally added the .5 onto the already rounded number \$\endgroup\$ – Deceptecium Jan 29 at 21:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.