Wednesday, March 9, 2022

Simplifying B/X's Saving Throw Matrices

I like the old saving throws. To no one's surprise, my favorite incarnation of them lies within the pages of Moldvay's B/X. However, they're not perfect. They rely on a series of tables that aren't the easiest to reference quickly. It's not uncommon for one's eyes to slip and read off the wrong number. This is more of an issue for the Dungeon Master than the player, but it's not the primary problem: the saving throw progressions aren't smooth.

"But Top Hat," I hear you say, "why does that even matter?" I will admit, it's a bit of an obsessive mathematical yearning but it's in contrast to almost all of the rest of the game's mechanics. HP progression is smooth, each level, you get more HP. Spells and spell slots are smooth, barring a few levels where you get multiple at once, you get a new spell slot each level. THAC0...okay THAC0 isn't quite as smooth but it's still smoother than saving throws. Thief skills go up by 1% or 5% each level. A cleric gets incrementally better at turning each level. In contrast to that, saving throws do nothing for three (or five if you're unlucky enough to be a Magic-User) and then improve by several points all at once. And the rate of advancement doesn't even hold constant. It's a mess!

I understand why they did this. Or at least I can come up with a reason for it. There is always an element of danger in reading too much into elements of early D&D's design. Whenever saving throws improve, THAC0 improves as well. The ability to tie these two progressions to each other is very useful. Each player knows that at predictable levels, their THAC0 and saving throws will go down. Now you could reduce the "fraction" of the saving throws so they improved by one point every two or three levels, but the THAC0 progression is on a much smaller and smoothing the saving throw progression and THAC0 at the same time would compress them too far.

Now with that out of the way lets do some math. If we're willing to decouple saves from THAC0 (and I am) we first have to see if we can get all saves to progress at the same rate. 

Get used to these sorts of visual aids
 So from this, we can see that on average, saving throws improve by 2 points every 3 levels. But just directly applying that to our project would create some odd results. When you smooth out a progression, it becomes more powerful. In this case, because the average saving throw value becomes lower. Here, have a diagram. 

Compare the area under the red line with the area under the blue line

As much as I like smoothness, I don't necessarily want to mess with the balance of B/X more than I have to. So we can lower the progression to 0.5 points per level. Coincidentally, this is is also smoother than the previous 0.6446... figure, hooray! It gives Thieves a minuscule boost but I'm fine with that. The poor rascals deserve a break.

So, every even level, everyone increases their saving throws by 1 point. Now all we have to do is find out how different classes' different saves compare to each other. I'll take the average of their saving throw values from level 1 to level 10. The reason we stop at level 10 is because of Elves. The Elf's class progression stops at tenth level, and we don't want to misrepresent the other classes having better saves simply because they get better later while the elf stays the same. Technically the Halfling stops even earlier, at eighth level, but their saves are identical to the Dwarf.

Average(10) represents the average of all the different classes' average of their saves from levels 1-10. We don't have to worry about Adjusted, that's an old leftover from when the spreadsheet was calculating the average save from 1 to max-level. And as you can see, there is a difference. If we'd used that method, every human class would incorrectly shown to have +1 to their saves across the board.

Now we have to compare these saving throws to the average, to see who is better at what.

On the right, I have the average of the difference from the average saving throw value. Then I normalized it. Unsurprisingly, Magic-Users have the worst saving throws and Fighters have the best saves out of the human classes. Gary always did love Fighters and hate Magic-Users beyond what was reasonable. The Dwarf and the Elf have the best saving throws, but that's to make up for their level caps and higher XP requirements.

Now I want to compare different saving throws within the classes. We do this by finding the difference between each of the saving throws and their worst value.

Everything still makes sense here to me. A cleric's best save is vs Death and their worst is vs Breath Weapons. Clerics may have the protection of their god but they're not exactly supposed to be fighting dragons. Dwarves are bad against spells, being a martial class, but good against Death, which also covers poisons. I can't think of a good reason why an Elf's worst save would be Wands, but their best saves are Breath and Spells, fitting for their role as a spellcaster and a fighter. Like the Dwarf, the Fighter is worst at spells but their best save is Breath, letting them achieve their ultimate goal: fighting dragons. Unsurprisingly, a Magic-User's best save is against Spells. I have no idea why their worst save is Wands. Thieves are fragile with bad Death saves but fast and mobile with good Paralysis saves.

Next, we want to adjust these values by the ones on the far right of the previous table. This preserves how the demihumans have better saves across the board and the Dwarf trumps everyone. We can also round up to get final rankings.

Thieves and Magic-Users end up having the same saving throws, which isn't surprising, considering how similar their save tables are in B/X. Another neat thing I noticed is that Elves' saving throw values are almost right between those of a Magic-User and a Fighter. Likewise, Clerics and Fighters have similar saves but Clerics' are worse as they can fight and cast spells. However, the Cleric still fares better vs Spells than the Fighter, being a spellcaster.

Back in step one, I said that I took the average of all the different saves of the classes. However, that was a flat average where each of the classes' saves was equally weighted. That isn't an exact representation of B/X, as not each of the classes are equally common. Elves and Dwarves require a minimum of 9 INT or CON respectively, and Halflings need at least 9 CON and DEX. I whipped up another set of tables where the average was properly weighted. That gives us this result.

Similar, but not identical. I ended up averaging the two tables together to get this final result.

Okay, but what do I do with this?
Every save has a base of 16, the worst starting save. You subtract your class' corresponding save value from 16 to get your final save. Every other level, all your saves improve by 1 point. Now you can use one chart for all seven classes that's half the size of a single class' save chart and you only need to reference it once, at character generation. Orrr...you could just use this table right here.



No comments:

Post a Comment