D&D 4th Edition RulesAsk questions about 4th-Edition rules and the like in here. General discussion about 4E or any other game belongs in General RPG Discussion, above.
As I've mentioned, I don't think "the math" is so much about rounds per combat or damage per round as it is about resource consumption. Now that the dwarf actually has daily resources (healing surges and his level 1 daily power), I was able to simulate it. I had the poor creature fight until he died, and then I recorded how many rounds he survived.
This is where I'm planning on going with the rest of the simulations: looking at how long a particular build can survive. I think this is the most accurate and holistic metric we can use, although I'm happy to try something else if I'm wrong.
I went ahead and ran this for the complete range of DMG-recommended encounters, from level +0 to level +5. Enjoy... future posts will be less frequent--this is as far as I've gotten with the program, so far.
(Oh, I also changed the short rest AI to spend a surge even if half of it would be lost. This led to better survivability.)
Edit: As Elric mentions below, the monster to-hit probability is way too low in these simulations. The correct results are in a post below.
One of the notable things about these results is that the daily usage goes down as the level of the opponent goes up, but as I said in my lost post, that's skewed because it's a reliable power. The "Daily Used" line only checks to see if the power was consumed, not if it was tried. Presumably, the poor dwarf is trying it but missing a lot.
(Source code to follow. I've got to run now and won't be able to post for a while.)
Last edited by Truename; 2nd November 2009 at 09:28 AM..
Same characters as before, but I added some new stats to the sim:
PC AC: 17
PC HP: 27
Monster attack bonus: 3
Monster damage: 1d10 + 3
This is a low for the monster's attack bonus. Even a typical Brute would have +4 to hit vs. AC at level 1 (going by the 'high damage expression' table in the DMG, it would do about 9.5 damage on a hit).
If the monster is intended to represent a soldier on offense as well as defense, it should have more like a +7 vs. AC attack (DMG guidelines would say +8, but I find that soldiers are sometime below and almost never above this amount) for a bit less damage (1d8+3, maybe). Note that soldiers are generally considered one of the hardest monster types and brutes one of the easiest; you could even try to test this.
Quote:
Originally Posted by Truename
As I've mentioned, I don't think "the math" is so much about rounds per combat or damage per round as it is about resource consumption. Now that the dwarf actually has daily resources (healing surges and his level 1 daily power), I was able to simulate it. I had the poor creature fight until he died, and then I recorded how many rounds he survived.
This is where I'm planning on going with the rest of the simulations: looking at how long a particular build can survive. I think this is the most accurate and holistic metric we can use, although I'm happy to try something else if I'm wrong.
Clearly there's no perfect metric here. How many fights a build survives on average seems to weight durability too much. For example, ignoring daily powers for a second, if a build had infinite healing surges and had a probability of X to lose each fight (which doesn’t change across fights because you never lose daily resources), the average number of fights it survives is (1-X)/X by a simple formula. A build with infinite surges and a 90% chance to win each fight (X=0.1) averages surviving 9 fights.
Suppose that your day is always five fights long. In your level +0 example, the Dwarf Fighter survives these five fights 1-0.349 ~= 65% of the time.
By comparison, the infinite surge build survives five fights with probability (the chance it wins one fight)^5 = 0.9^5 ~= 59%. So you can see that with more realistic assumptions about the number of fights in a day the dwarf fighter is slightly favored, even though the average number of fights survived metric he looks far inferior (the dwarf averages 6.8 fights survived). This suggests that the metric ought to be more like “if the character faces a random number of fights in a day drawn from a particular distribution (e.g., even chances of 3-6 fights), what’s the chance he’ll survive the day?”
This is good and interesting work so far. Still, before you go much further with this project, seriously consider whether a Monte Carlo simulation will be able to get at actual D&D combat as experienced by a typical group.
This is a low for the monster's attack bonus. Even a typical Brute would have +4 to hit vs. AC at level 1 (going by the 'high damage expression' table in the DMG, it would do about 9.5 damage on a hit).
Oh, damn. At some point I took out the hard-coded monster attack bonus and replaced it with a calculation by level... and I totally muffed it. I was looking at the text for calculating the primary attack stat rather than the table. Doh. Thanks for catching that.
The old calculation: att_bonus = 3 + (MONSTER_LEVEL / 2)
The new calculation: att_bonus = MONSTER_LEVEL + 7
Naturally, this completely invalidates my previous results.
Quote:
Originally Posted by Elric
If the monster is intended to represent a soldier on offense as well as defense, it should have more like a +7 vs. AC attack (DMG guidelines would say +8, but I find that soldiers are sometime below and almost never above this amount) for a bit less damage (1d8+3, maybe). Note that soldiers are generally considered one of the hardest monster types and brutes one of the easiest; you could even try to test this.
The damage matches the DMG guidelines (see p.184, point #9). Whether it's appropriate is another question--I figure at some point I'll program in actual monsters and see how things change. However, I figure the DMG guidelines are more likely to match the assumptions made in developing the game's math, so that's why I'm starting there.
Quote:
Originally Posted by Elric
Clearly there's no perfect metric here. How many fights a build survives on average seems to weight durability too much. For example, ignoring daily powers for a second, if a build had infinite healing surges and had a probability of X to lose each fight (which doesn’t change across fights because you never lose daily resources), the average number of fights it survives is (1-X)/X by a simple formula. A build with infinite surges and a 90% chance to win each fight (X=0.1) averages surviving 9 fights.
I didn't understand this, so I tried it. I created an infinite surge build (actually, 100 surges, but I verified that no simulation actually used all 100 surges) with no dailies. It came out like this:
I also ran a version that ran exactly five encounters.
Code:
LEVEL 1 SOLDIER VS. DWARF GREATWEAPON FIGHTER
Days simulated: 100000
Death: 66.3%
Quote:
Originally Posted by Elric
This is good and interesting work so far. Still, before you go much further with this project, seriously consider whether a Monte Carlo simulation will be able to get at actual D&D combat as experienced by a typical group.
I doubt it will ever get at actual D&D combat as experienced by a typical group. But it doesn't need to. If it can give us some insights into how the math is balanced, and I have fun doing it, that's good enough for me.
As Elric pointed out in his post above, my to-hit probability on the soldier was way too low. I've fixed the error (his to-hit is now 8, per DMG guidelines), and re-run the simulations. Here are the results for level + 0 to level + 5:
The damage matches the DMG guidelines (see p.184, point #9). Whether it's appropriate is another question--I figure at some point I'll program in actual monsters and see how things change. However, I figure the DMG guidelines are more likely to match the assumptions made in developing the game's math, so that's why I'm starting there.
I don't like using 1d10+3 (8.5) damage for a first level monster. First, using the same damage total for every group of 3 levels (as is true in the DMG) doesn't make sense. I see why they didn't write a different expression for every level, but when doing analysis you should make this measure more continuous.
Second, if you take the average damage and associate it with the middle level for each group and fit a best-fit line to it, you get a lower result at the bottom than 8.5. Differences in the rate damage goes up in this table seem fairly random; there's a low correlation between the 'high damage' expression increasing more and the 'medium damage' expression increasing more; if the damage was set based on players getting stronger at certain levels then there should be a high correlation here (this is a reason to average out to avoid these discrepancies). Third, I think 8.5 is somewhat higher than actual level 1 monster damage.
I'd modify this Dwarf fighter so he had higher Constitution, by the way. 18 Str/13 Con/13 Wis pre-racial seems like a good choice, as he'll want high Con for hit points, surges, and Axe/Hammer feats, and Wisdom for increasing OA to-hit and maybe other abilities (pit fighter pp) as well.
Quote:
I didn't understand this, so I tried it. I created an infinite surge build (actually, 100 surges, but I verified that no simulation actually used all 100 surges) with no dailies. It came out like this:
[code]
LEVEL 1 SOLDIER VS. DWARF GREATWEAPON FIGHTER
Days simulated: 100000
Something's not right with these results. The most likely exact outcome in this framework for number of fights won should be 0 fights and it should steadily decrease from there (here the most common is exactly 1 fight). If you're not having this character heal himself all the way to 27 hit points, he's not taking proper advantage of his infinite surges You also might have left the daily power in; either of these could account for this discrepancy.
Something's not right with these results. The most likely exact outcome in this framework for number of fights won should be 0 fights and it should steadily decrease from there (here the most common is exactly 1 fight). If you're not having this character heal himself all the way to 27 hit points, he's not taking proper advantage of his infinite surges You also might have left the daily power in; either of these could account for this discrepancy.
It's true he wasn't healing all the way at the short rest. I fixed it, but it didn't change the shape of the curve. Keep in mind the rest of the random factors are still in place--it's not a simple 10% chance of death.
If the Dwarf goes into every fight fresh, then Elric is right, the data should show the most results at zero. Is the dwarf at the start of the second encounter impaired in any way he's not at the start?
I kind of fear that by the time you get to something approaching the level of complexity of a level 1 party fighting a level 1 encounter with some typical monsters the number of guestimations required to do that "effects of tactics" is going to be large and nobody will ever know how accurate it is, except by actually collecting data from real combats.
And I think that is really the ultimate key. This is an area where nothing is going to beat real world data. Still, it could shed some light on certain very specific questions. I just think people would have to go back and do some sanity checking against real world data all the same.
What is needed is
1) the conversion of 4E into a faithful MMO
2) collecting the results of a few million fights
That is, not basing your conclusions on any pure AI vs AI input, but only on real players vs AI input.
Because that's what you see at tables - while it wouldn't be too unreasonable to simplify a live DM's actions into an AI, it is definitely too simplistic to reduce a group of five live brains into an AI.
I guess if the RPGA demanded detailed summaries of all the LFR combats that would do nicely too.
Okay, so the purpose of this thread is to do a stochastic analysis of the 4e math, using something called a Monte-Carlo simulation. Basically, what we do is write a program that simulates a 4e fight, random dice rolls and all, and we run it a few hundred thousand times. From that, we get a complete view of everything that can happen. Not just the average case, but full range of possibilities. Because it's a simulation, we can incorporate a lot more variables than the typical DPR calculation.
Good luck! A word of caution before you get your hopes up, though: I foresee most forum-goers taking a programmed sim of a D&D fight no more seriously than anecdotal or simple mathematical evidence, even if it supposedly creates a complete view of combat. These feat taxes are one of those issues that people tend to argue about based on attitude and belief rather than evidence that comes through impersonal forums: If you tend to believe that WotC has your back, you'll likely argue that feat taxes don't exist no matter what; if you tend to believe in basic design goals and basic math you'll likely argue that feat taxes suck no matter what.
__________________ Proud gamer of Sullivan, New York.
Death is not the end, but yet another journey--one that we all must take. The gray rain curtain of this world parts, everything fades to silver glass and then you see it--the white shore and beyond, a far green country under a swift sunrise.
--Everything that I'd like to believe about the afterlife.
Stereotypes exist for a reason, and I believe that a short term goal for this project should be calculating a party of four (Controller, Defender, Leader, Striker) using commonly selected powers with commonly selected feats fighting their way through four encounters per day. Each encounter should be randomly pulled from an encounter pool of maybe 20 different scenarios.
Run a couple million times we should be able to discern survivability at various keystone levels for what would be considered a typical party.
__________________ If it doesn't make sense to you, you probably just need more imagination.
...at levels 15, 20, and 25. Simplify it by just sticking with PHB classes, feats, and items and with MM monsters. 1-on-1 fights don't interest me. They'll never be a real part of the game and are completely useless as a test case. If I can't see how the simulation works with a full party of FIVE (not four), with some reasonable terrain mixtures, then you're just pissing in the wind.
I'm a little worried, however, about the example we're using.
A Dwarf fighter and a Soldier are both non-average creatures (PC and Monster respectively).
We should be comparing a PC with no race (but assuming primary stats between 16 and 18, as the game does)
vs
Skirmisher, which has all the average numbers.
The Dwarf has a racial ability that is EXTREMELY useful in survivability: second wind as a minor action, this essentially adds 25% to it's hit point total, so the results are going to be skewed.
On the matter of how to model a group, and account for tactics, there are several things that could be done:
- Define best tactic (concentrate damage on one foe at a time)
- Define worse tactic (spread damage as much as possible)
And measure the two.
We could add a third one: damage enemies randomly, to have a "control case" for the above)
Another way of accounting for tactics is to add bonus to attacks, penalties, make combatants loose turns, deny focus fire, provoque OAs, etc and add those bonuses/penalties to simulate good or bad tactics.
1. A party of four or five against various encounters (real D&D isn't fought solo, 4E's fighter is a damage-taker and not a damage-dealer, fighters are expected to have the support of a cleric, and so on)
2. Analysis of the duration of combat as one increases in level, and in comparison to 3E
3. Analysis of the real-time duration of a combat encounter, and comparison to 3E: at a given level, does a 4E combat take more time than a 3E combat?
1. A party of four or five against various encounters (real D&D isn't fought solo, 4E's fighter is a damage-taker and not a damage-dealer, fighters are expected to have the support of a cleric, and so on)
It's high on my priority list. First I need to finish the basic fight mechanics... I still need to add initiative, monster encounter powers, and missing on a natural 1.
Quote:
Originally Posted by Jonathan Drain
2. Analysis of the duration of combat as one increases in level, and in comparison to 3E
I'm already generating charts that show how many rounds combat takes, and I plan to keep doing so. I won't be doing any 3e comparisons.
Quote:
Originally Posted by Jonathan Drain
3. Analysis of the real-time duration of a combat encounter, and comparison to 3E: at a given level, does a 4E combat take more time than a 3E combat?
I might do time duration estimates, but if I don't, it's pretty easy to get a feel for times based on the number of rounds.
If the Dwarf goes into every fight fresh, then Elric is right, the data should show the most results at zero. Is the dwarf at the start of the second encounter impaired in any way he's not at the start?
He must be. The code's not designed to support hypothetical rules like "infinite surges"--I just hacked it in, and I must have missed something. I'm not going to try to find the bug, though, since an analysis of a dwarf with infinite surges isn't where I was planning on going with this.
Infinite surges isn't part of the system, but nor is infinite fights. It's often the case that there's no reason not to just spend the surge to be at full hp.
I think your results agree with the DPR analysis more than those early posts indicate. DPR should give you the MEDIAN number of rounds, which is the point when you win 50% of the fights. For example, in your first graph, the one with DPR giving 4.6 rounds and the MC giving 5.5, 57% of the fights are over by round 5.
It makes sense that the mean is skewed high. Variation from the average can only shorten the fight so much - it is going to take at least 2 rounds to kill that soldier. But on the long end, the fight can go long as 13 rounds. The 13 is going to pull things high a lot more than the 2 pulls things low. This same effect is why home prices are usually listed as median home price. One millionaire throws the mean out of whack.
Interesting project!
PS
__________________ You can clean up vomit, but data is always messy. - Storm's Law
I don't care if you light his face on fire and put it out with an anvil... - A. Taylor