Battling Random D&D Fighters in a Simulated Arena, So As to Assess Average Advancement and Ability Scores at High Levels
It's always been clear that higher-level characters in D&D should have higher ability scores; thinking statistically, seeing an NPC at higher level provides evidence that they likely have better-than-average ability scores that allowed them to survive and gain levels. But how much higher? This has long been hand-waved in D&D, with the publishers and players simply making something up on the fly that felt right, with little consistency. Obviously none of us has ever archived the play history of enough PCs to assess what their ability scores were, on average, at a given level.
MethodLet's simulate characters battling and gaining levels in a computer program; the one I've written in Java is called "Arena", broadly modeling gladiators battling to the death in a Roman-style Colosseum. The model runs like this: First, generate 10,000 1st-level basic D&D fighters with random ability scores (3d6 in order; bonuses OED-style +1 for 13-15, +2 for 16-18). Equip everyone with normal chain, shield, sword, and helmet. Pair them up randomly and fight (all fights are to the death at 0 hp). Award experience pro-rated for standard D&D treasure awards (for example: at 1st level, multiply base experience by 20, because about 95% of XP at the level generally comes from treasure; link); level-up if appropriate. Replace the dead part of the population with 5,000 new random 1st-level fighters and repeat.
Note that this is ever-so-vaguely scaled to the overall Roman gladiatorial system. Historical analyses suggest that a professional given fighter might battle about 3-4 times a year (i.e., once per season; certainly healed up between fights), for a fairly high monetary reward, and that about 8,000 deaths occurred in arenas, per year, throughout the Roman Empire (link). My guess is that about 100 "cycles" of this action (one combat quarterly) would be approximately equivalent to the maximum gladiator career of about 25 years. Yet for broader data I've let the simulator run for 1,000 cycles below and not bothered to "age out" anyone in the system. Obviously, D&D characters engage in far more combats than anyone in real life.
ResultsHere are the average results after a run of 1,000 cycles of randomized, paired combat:
What you can see here is that the vast majority (96.6%) of the gladiatorial population will remain at 1st level over any amount of time. The largest single bump in ability scores is actually between 1st and 2nd level; basically, a starting character needs a special "something" (like high ability scores) to survive to 2nd level, and thereafter can mostly "cruise" by consuming more and more 1st level characters that they're paired against.
The ability scores that make the biggest difference for these fighters seem to be (in order) Strength, Constitution, and Dexterity. Strength average is 14 at 2nd level, and then around 15 for levels 3+; Constitution average is 13 at 2nd level, and higher by one or two points thereafter; Dexterity average is around 12-13 for any level above 1st. Since the combat here is entirely melee (sword vs. shield; no ranged combat), the Strength ability is highlighted. And since the Intelligence, Wisdom, and Charisma scores have no effect in this action, they remain around the natural 10.5 average at any level.
But another thing: The characters don't just benefit from high ability scores, they also benefit from higher than expected rolls for hit points. For example: You might expect that a 2nd level fighter with 13 Con would have around 11 hit points (2(d8+1) ~ 2(5.5) = 11); but in fact the average is 13 points (i.e., about 20% higher). At 8th level the naive expectation would be 44 hit points (8(d8+1) ~ 8(5.5) = 44), but the average seen above is actually 56 hit points (almost 30% higher). Recall that 3E D&D, for example, actually did stipulate that NPC's at advanced levels had the naive expectation for hit points, which is not actually correct according to this assessment.
Another thing we might look at is the demographic curve at advanced levels and regress to some predictive formula; here it is below (x-axis is level 2+; y-axis is in number per 10,000 gladiator population):
Note that the preceding was based on purely random pairwise combats between all 10,000 members of the population. An alternative that I tried was to first sort the population by level and have the 1st person fight the 2nd person, etc. (thus recreating a "championship" bout, where the two best characters pair off, and a bit more like D&D adventuring where it's expected that PCs fight monsters of about the same level). But the result of that was quite comical; one very strong character would initially graduate from 1st level, and thereafter advance by perpetually massacring everyone else who ever managed to pop into 2nd level. After 1,000 cycles this usually results in something like 9,990 fighters at 1st level; 9 fighters at 2nd level; and 1 fighter at 8th level (with scores like Str 16, Dex 15, Con 17, hp 62).
ConclusionsThese results begin to suggest what we might do for reasonable and consistent ability scores at higher levels. As a base we roll 3d6 for each ability score, and then something like:
- 2nd level: Prime ability +3, secondary +2, tertiary +1 (total +6).
- 3rd-4th level: Prime ability +4, secondary +2, tertiary +1 (total +7).
- 5th-7th level: Prime ability +4, secondary +3, tertiary +2 (total +9).
- 8th+ level: Prime ability +4, secondary +4, tertiary +3 (total +11).
Also, at level 2+ we should boost hit points by +20% to +30% over the naive mathematical expectation, as mentioned above. Or use the somewhat common mechanic: re-roll any "1"'s or "2"'s on hit dice. (Edit: Or apply a minimum of at least half any die roll, e.g., minimum 5 on any fighter's d8.)
Personally, my preference is not to give any special modifiers to PCs at 1st level (in ability scores, bonus or minimum hit points, etc.). But if we want PCs to automatically be "special", then I'd be very willing to start them at level 2+, assume to some extent that they've already proven themselves exceptional, and grant the aforementioned bonuses as representative (and helpful to the players).
Here's some ways we might expand on this work. Obviously, the current code only pairs off fighters-vs-fighters, and only those relevant ability scores are selected for advancement. I wouldn't hope to simulate wizard-vs.-wizard battles any time soon. But we might run a grab-and-dash simulation for a Thieves' Guild, where an initial skill roll (pick pockets or open locks), if failed, devolves to a melee fight or flight. Or we could switch from an arena of all NPC fighters to fighters-vs-monsters according to the OD&D wandering monster table and see how that goes (monsters without special abilities, at least initially). Or I suppose we could go more "realistic" and find a way to award XP in our arena without death to the opponent in every case, such that more people could survive to higher levels.
What do you think? Any other observations or suggestions?
Here's the code to the Arena simulator (Java ZIP file).