Adventuring day - stats>

Dedekind

Explorer
1) This is awesome. I love Monte Carlo.

2) I think a pair of histograms would be useful, since the outcomes should approach a log normal distribution, but the results are truncated (fixed length adventure).

Histogram 1: Number of fights before death/retreat (1-X)
Histogram 2: Distribution of hp after adventure (maybe add expected value from the HD if they had any left)

H1 would tell us where they are dying. H2 would tell us how bad off they are at the end.

3) The dwarf (and the 3 dwarf party) are pretty much optimized for this scenario. I wonder if a rogue that was assumed to get CA every other round would be a more realistic choice?
 
Last edited:

log in or register to remove this ad

slobo777

First Post
1) This is awesome. I love Monte Carlo.

Thanks, I'm enjoying coding it.

2) I think a pair of histograms would be useful, since the outcomes should approach a log normal distribution, but the results are truncated (fixed length adventure).

Histogram 1: Number of fights before death/retreat (1-X)
Histogram 2: Distribution of hp after adventure (maybe add expected value from the HD if they had any left)

H1 would tell us where they are dying. H2 would tell us how bad off they are at the end.

At the moment Histogram 1 would have 2 columns . . . as the standard adventuring day I have assumed is two "tough" encounters. That could change of course.

Histogram 2 is one of the stats issues I am stuck on. There are multiple party members, so just registering the individual creatures loses some data. I've chosen some fairly arbitrary "buckets" right now. I could go for %age total hitpoints remaining. Then it's a matter of how I would note dead characters. 0% for a dead character misses an important piece of information. One dead or unconscious character and two at half hitpoints is a very different play experience than 3 characters on one third of their total hitpoints.

3) The dwarf (and the 3 dwarf party) are pretty much optimized for this scenario. I wonder if a rogue that was assumed to get CA every other round would be a more realistic choice?

Yes, whether it's right or wrong that the build chosen is so useful here is something else to talk about. But I don't want to expose the stats to that debate, I just took the Dwarf from a previous thread, because it looked simple to automate, unlike, say a Rogue.

Eventually, I want to see what a "typical" setup, assumed by the rules plays out like, and then we can all have data* on what that means. That will have to include figuring out when to apply advantage, and how the code will assess rogues will depend critically on how often that happens. In fact that would be an interesting parameter to play with, since it may give insight to what works, and is fair next to the Fighter class.

* Important to note I cannot share or publish code that automates D&D rules (this is even banned for 3E under the OGL), but I can share data as my contribution to "play testing". Potentially I may be able to share some of the framework code, wherever it doesn't include any D&D rules (e.g. the basic structure of "adventures", "encounters", "rounds", "turns" etc)
 

Dedekind

Explorer
<snip>

Histogram 2 is one of the stats issues I am stuck on. There are multiple party members, so just registering the individual creatures loses some data. I've chosen some fairly arbitrary "buckets" right now. I could go for %age total hitpoints remaining. Then it's a matter of how I would note dead characters. 0% for a dead character misses an important piece of information. One dead or unconscious character and two at half hitpoints is a very different play experience than 3 characters on one third of their total hitpoints.

<snip>

I don't have much problem with the buckets approach to describing health. It is a reasonable approximation to how a player would think about it and the actual numbers are probably less interesting then the descriptive bucket. Plus, you can change your bucket parameters to see if it materially affects your conclusions later.

Regarding the dead/runaway/low/medium/high problem... I think you need to attach a value system to the overall "adventure outcome". We want to be able to say something like "the PCs can continue to adventure X% of the time, require additional resources (healing) Y% of the time, and face a minor or major pause (extended rest, go to town, etc.) in the adventure Z% of the time."

I would propose assigning values to specific dwarf condition outcomes as follows. It is arbitrary, so you could tweak the numbers to better reflect player feelings.

First, assign values to each dwarf using a Condition of Dwarf Function (CDF*):
if Dead then -5
if Runaway then -2
if Low hp then 0
if Medium hp then 2
if High hp then 5

Then, assign values to the generic outcome with a Fun Factor Function:
if ALL SURVIVE then 5
if TPK then -5

Outcome Value = OV = CDF(Dwarf 1) + CDF (Dwarf 2) + CDF(Dwarf 2) + Fun Factor

If everybody comes through unscathed, OV = 5+5+5+5 = 20
If everybody comes out with Low hp, OV = 0+0+0+5 = 5
If two have low hp, one with high hp, OV = 0+0+5+5 = 10
If everybody dies, OV = -5-5-5-5 = -20
etc.

Interpreting these numbers:

1) Anything very positive means the party can keep fighting without much issue.
2) Anything very negative means the adventure is effectively over.
3) Anything slightly positive means the adventure keeps going, but they need additional resources.
4) Anything slightly negative means the adventure pauses, but some event has to occur to continue. Go back to town, new PC, DM deus ex machina, etc.

Interpreting the results:

Slightly positive numbers are the sweet spot. We want the PCs to be challenged by the monsters, but we consistent negative outcomes (of any kind) will slow down the campaign and perhaps aggravate players.

If we see negative numbers 25% of the time, 1 in every 4 sessions will require some minor or major derailment of the adventure.

If we see large positive numbers 25% of the time, 1 in every 4 session will see fights where the PCs are not significantly challenged.

An "easy" game system would have mostly positive numbers. A "hard" game system would be close to zero.

IMPORTANT CAVEAT: My choice of values is arbitrary and I will not defend them. I made the function symmetric, but my experience suggests that "bad outcomes" probably should carry more weight. Following cognitive psychology and prospect theory, I would guess that "death" should be weighted 2.5 times more than "high hp".



* Yes, this is a lame statistics joke.
 

slobo777

First Post
Regarding the dead/runaway/low/medium/high problem... I think you need to attach a value system to the overall "adventure outcome". We want to be able to say something like "the PCs can continue to adventure X% of the time, require additional resources (healing) Y% of the time, and face a minor or major pause (extended rest, go to town, etc.) in the adventure Z% of the time."

I think that's what I'm aiming at, some buckets that represent different "qualities" of adventuring day.

I would propose assigning values to specific dwarf condition outcomes as follows. It is arbitrary, so you could tweak the numbers to better reflect player feelings.

First, assign values to each dwarf using a Condition of Dwarf Function (CDF*):
if Dead then -5
if Runaway then -2
if Low hp then 0
if Medium hp then 2
if High hp then 5

Then, assign values to the generic outcome with a Fun Factor Function:
if ALL SURVIVE then 5
if TPK then -5

Outcome Value = OV = CDF(Dwarf 1) + CDF (Dwarf 2) + CDF(Dwarf 2) + Fun Factor

If everybody comes through unscathed, OV = 5+5+5+5 = 20
If everybody comes out with Low hp, OV = 0+0+0+5 = 5
If two have low hp, one with high hp, OV = 0+0+5+5 = 10
If everybody dies, OV = -5-5-5-5 = -20
etc.

Interpreting these numbers:

1) Anything very positive means the party can keep fighting without much issue.
2) Anything very negative means the adventure is effectively over.
3) Anything slightly positive means the adventure keeps going, but they need additional resources.
4) Anything slightly negative means the adventure pauses, but some event has to occur to continue. Go back to town, new PC, DM deus ex machina, etc.
I am not that sure about this approach, but I may well go ahead and implement it, since it looks quite easy to code (as opposed to e.g. spellcasting!), and it might give some more insight. The program will cope just fine running multiple end-of-adventure stats, and presenting any combination of them.

And I already have a "CDF"-like function for living creatures that I've called "stress", and which starts at 1 for at full resources and ends at 5 for nearly dead.
 

Dedekind

Explorer
I am not that sure about this approach, but I may well go ahead and implement it, since it looks quite easy to code (as opposed to e.g. spellcasting!), and it might give some more insight. The program will cope just fine running multiple end-of-adventure stats, and presenting any combination of them.

And I already have a "CDF"-like function for living creatures that I've called "stress", and which starts at 1 for at full resources and ends at 5 for nearly dead.

I figured once you had the outcomes, you could impose whatever valuation scheme you wanted at the end. That's sweet. My system is merely an example, and I like the idea that it would be asymmetric (bad outcomes having significantly higher weight).


For spellcasting, man, that is hard, but I'll take a swing. I propose an elf wizard who takes the place of one dwarf.

Impetuous Elf Wizard: Only memorizes burning hands. Uses one spell slot in first round of an encounter, magic missile thereafter. Runs when dwarves run.

Tactical Elf Wizard: Memorizes both Shield and Burning hands. Uses one spell per encounter, always waiting until second round. Uses Shield if damaged, Burning hands if full health, or whatever spell remains otherwise. Magic missile in all other rounds. Runs when dwarves run.

Reluctant Elf Wizard: Only memorizes Shield. Uses shield in first round, magic missile thereafter. Runs when dwarves run.


Assumptions:
1) Burning hands affects lowest hp monster, plus 0 or 1 other monster. (Assumes "pile on" effect and collateral damage.)
2) Magic missile always targets monster with lowest hp, random otherwise. (To reflect the "pile on" effect.)
3) Run condition is always identical to dwarves. (Assumes leaves when dwarves have had enough).
4) Monsters choose target pseudo-randomly, with a dwarf being targets 80% of the time. (To reflect fighters on the front line.)
 


slobo777

First Post
As a computer Novice, I have to ask what is it you are usein? Is this some kinda simulator or just a math program?

I'm writing it myself in a programming language, Perl. This gives me more control of structure than using a spreadsheet or a specialist maths program. I hear good things about Mathemetica though, if you know maths but not so much computing.

One non-D&D goal I have in the next few weeks is to convert it to another language, Ruby. That's because I'm making the same move between the languages professionally.

Oddly, nearly all my computer skills, which I now use professionally, were picked up mucking around with ideas for role playing games :D
 


slobo777

First Post
For spellcasting, man, that is hard, but I'll take a swing. I propose an elf wizard who takes the place of one dwarf.

Impetuous Elf Wizard: Only memorizes burning hands. Uses one spell slot in first round of an encounter, magic missile thereafter. Runs when dwarves run.

Tactical Elf Wizard: Memorizes both Shield and Burning hands. Uses one spell per encounter, always waiting until second round. Uses Shield if damaged, Burning hands if full health, or whatever spell remains otherwise. Magic missile in all other rounds. Runs when dwarves run.

Reluctant Elf Wizard: Only memorizes Shield. Uses shield in first round, magic missile thereafter. Runs when dwarves run.


Assumptions:
1) Burning hands affects lowest hp monster, plus 0 or 1 other monster. (Assumes "pile on" effect and collateral damage.)
2) Magic missile always targets monster with lowest hp, random otherwise. (To reflect the "pile on" effect.)
3) Run condition is always identical to dwarves. (Assumes leaves when dwarves have had enough).
4) Monsters choose target pseudo-randomly, with a dwarf being targets 80% of the time. (To reflect fighters on the front line.)

These are very useful starting points, thank you!

I'm just in the process this weekend of separating out some of the published mechanics from the "engine" I am making for test-running adventures (so I can drop in other mechanics, house rules etc a little more easily). After that, I think an elf wizard buddy for the fighters is next on the list, and your suggestions look spot on for that.
 

Remove ads

Top