Saturday, 3 August 2013

D&D Next Monsters: Part 3: Monster Data Entry (Yech!)

While this blog does not contain material published by Wizards of the Coast it does contain materials summarized and extrapolated from the D&D Next playtest packets. By continuing to read this blog you are consenting to the terms of the Wizards online playtest agreement, which you can view at dndnext.com.

Having dissected the numbers behind Class progression surf jumps in the deep end and enters all the D&D Next monsters into a spreadsheet. Sounds like fun? No, we didn’t think so either...

OK let’s get this straight, up-front. I hate data entry. It bores me to tears. I mean, looking at one monster and working out the numbers behind it’s attacks and everything? That can be fun. Doing the same for 473 monsters? Not so much. But the only way we can dig out the meaningful data we are after is to tackle that task head-on. So let’s look at what I recorded, how and why...

Huh? What do you mean "there are more than 473 monsters"? Well yes, I guess that’s true. The thing is they are a bit all over the place and inconsistent before the 2013 packets. The layout and design for play is different and even the numbers are quite... random. The earlier 2013 packets are bad enough, so that’s what I entered. A number of the monsters in the various 2013 packets are duplicates too. I only entered the same monster more than once if each version had some notable difference. On top of this a few monsters were more like hazards or otherwise just weren’t very suitable for analysis – being very difficult to codify their "damage" and similar in combat. There weren’t many of these, but there were a few.

 

The Data Entry Effort

So I ended up entering 473 monsters by hand. Some of what I entered seems immediately obvious, while some might seem less than intuitive. Let’s have a look the columns I have and the values I put in them...

Level, XP Creature name, ACThese were simply entered as they appeared in the appropriate PDF.
HP StdThe standard hitpoints listed in the creature stat block.
HP ModHolds "extra hitpoints" for the creature. Resistances, immunities, reactions, regeneration and other attributes which mitigate damage or increase the amount of time the creature is in combat factor in here. In cases like Shield Block a concrete number is entered. In other cases, like resistances and immunities I’ve made a guess or simply entered 2xLevel.
HP ModA formula adding HP Std and HP Mod together.
Attack ModThe creature’s normal attack modifier.
At-Will DamageThe total average damage for the creature for every round, as a formula if appropriate. For example the Carnivorous Ape’s multiattack results in this field containing the formula "=7+7".
Once Off DamageHolds "bonus damage" that the creature will likely only use once in a fight, such as spells or breath weapons. If the calculated damage is less than the At-Will damage then it’s not considered viable and omitted. For example the Carnivorous Ape’s ranged attack deals 12 damage, which is less than it’s regular At-Will damage. For some creature the once off damage gets a little tricky to calculate, but we do our best. Note that "save for no damage" is computed by multiplying by 0.5, likewise "save for half damage" is computed by multiplying by 0.75. Also, area effects assume the minimum number of PCs targeted to make the attack viable.
DPRA formula which amounts to the At-Will Damage value, if there is no once off damage. Otherwise it’s two times the At-Will Damage, plus the Once Off Damage and divide the total by three. Yes, three is my assumed combat duration for these purposes. This duration helps a fair bit with higher level creatures. Note that the three isn’t hard-coded, I reference a named cell in my formulas.
SourceThe name file from which which I first entered the creature, for example "Bestiary" or an acronyms such as "AtCoC" (Against the Cult of Chaos).
NotesAny notes I felt I might need to consider later.

 

Categorisation

All that raw data is fine and dandy… But there is a lot of variability across the different monsters we’ve entered.

If we simply look at level 1 creatures we see there are creatures worth both 10 and 20 XP, and even one worth 5 XP. And there are creatures with around 5 hitpoints and those with 10 or more hitpoints. If we look at level 3 creatures we see even more divisions, with XP ranging from 70 to 190 and raw hitpoints ranging from 7 to 110.

So we obviously need something to help us slice this data more than we have. But what are our options?

Well the table in the Building Combat Encounters section of the DM Guidelines file gives us a clue. Consider for a moment a combat between a single PC and a single creature, which could be Easy, Average or Tough. So we can hypothesise that these creature categories are valid in D&D Next, as in earlier editions, and take a look at the data. Does the data, on the surface, seem to support our proposition? For the most part yes. What we also see is that there is something beyond a Tough creature – tough creatures have the XP reward of two Average creatures. These more-than-tough creatures have an average of almost four times the XP of an Average creature and sometimes more. I’ll use the term Solo for these, for the time being.

And by looking at this data we have two ways of categorising each creature...

The obvious one is by its’ XP within its’ level. This isn’t quite as easy as one might hope - it turns out the XP values for many of the creatures is… quite variable. All over the place, really. But still we expect they should be in the right ballpark. By using a lookup on a named range in excel it’s quite easy to specify where to break these up by value. This was a pretty easy hurdle to get over.

The second and less obvious method is to categorise creatures by the amount of damage they take before being defeated – that is, the number of hits from an average PC of the same level. It’s pretty straightforward in Excel to have a named range defining the parameters around these hits and have a formula for each creature reference that named range. Now we can change data in one place and immediately see the results.

And it’s a good thing we can! It turns out these were quite sensitive numbers to "tune in". My initial values were based on current thoughts about the number of hits it should take to kill a monster of each type. But the result of that was a pretty linear categorisation, which is obviously wrong. Why? Well imagine you are a game designer building the monster system. You need to build some monsters. Do you only build Easy monsters at level one, Average monsters at level two, three and four? No. What we expect to find at any given level is the monsters for that level spread across the categories for that level. At least for levels with significant numbers of monsters.

So with some experimentation the following numbers seemed to yield useful categories...

Num HitsType
< 0.9Easy
0.9 – 1.899Average
1.9 – 3.249Tough
>= 3.25Solo

 

Caveats

So what are the pitfalls with these methods of categorising monsters? And why bother with more than one method?

Well it’s the old quandary of "by observing it we change it". Here’s an example – categorising monsters by the number of hits is categorising them by hitpoint range. That means an Average level 20 monster will always have between 36 and 76 hitpoints using this approach. The problem is – what if we are wrong? Suddenly we’ve artificially constrained monsters based on an incorrect assumption. And we’ll end up with inaccurate results.

So where we are analysing an area by which we have categorised our data we need to be careful. We still analyse both sets of data, because we can check them against one another. But during this analysis my "go-to data" has been the XP category. Why? Well, we won’t be deriving an XP table, because that’s data we already have. I also feel that the hit-based category is more prone to error as it was more difficu;lt to "tune in" and I suspect it’s going to give a more inaccurate results. But due diligence – both get the same time and effort spent on them.

 

So What Do You See, Surf?

XP Counts
LevelEasyAverageToughSoloTotal
152301 83
2203022 72
3 2831160
414032 73
513623 60
6  33235
7  92534
8   55
9   55
10   1414
11   33
12  7310
13  3710
14   44
15   11
16     
17     
18   22
19     
20   22
Total7416416174473

I see data we can analyse! That is, data which has enough consistency that we can slice-and-dice it a number of ways and use it to figure out the underlying math. Yes, we still have some work to do. But in a very real sense we have now broken the back of the task.

Let’s see how it looks from ten thousand meters.

If we create a couple of pivot tables we can see how the data falls out within our divisions. We create one by XP category within Level and count the occurrences of creatures. The second table is the same, but by HP category.

A visual indicator of how much data we have for each cell in these tables will highlight things nicely.

So we’ll add some conditional formatting to the cells within the pivot tables. We’ll leave blank cells white. Cells with a value under nine we’ll make a light red. Cells with nine through eighteen we’ll make blue. And cells with a value over eighteen we’ll make green.

And it’s immediately obvious that our two methods of categorising the data are in the right ballpark, more or less.

 

HP Counts
LevelEasyAverageToughSoloTotal
15429  83
213535172
3 2830260
4 6531473
5 645960
6 192535
7  43034
8  145
9   55
10   1414
11   33
12   1010
13   1010
14   44
15   11
16     
17     
18   22
19     
20   22
Total67123147136473

The shape of the data we see is roughly the same in both pivot tables. In addition the clusters of data are similar. They aren’t the same and we didn’t expect they would be, though in a final product one hopes they’ll be closer than this… But this is the playtest and Wizards of the Coast staff have made it plain that "monsters aren’t right yet".

If you’ve been following D&D Next for a while you’ll already know the system is shy on higher level monsters and we see that reflected here. In fact monsters are mostly at level one through seven. Above that level it gets somewhat sparse, though there is still data that we can make use of.

Another important thing we can see here is the overlap between different categories of monster at the same level. One expects the designers will tend to make monsters across many of the categories they design, at least at the levels where monsters are clustered. And having several examples of different types of creature at the same level should be useful in determining where parallel progression for the different categories’ stats should go.

 

 

Check back in a couple of days for the next installment Part 4: AC Analysis...