Introduction
In previous posts in this series, I showed the differences between fighter builds, and especially that “fast fighters” are a weak decision that is particularly bad for halflings and elves even though they are the more agile races. In this post I will approach the question of fighter builds from a different angle, that of the most effective choice of feats, armour and weapons for given attribute scores. Ultimately, the aim of this work is to develop decision models (expressed as flowcharts) for PC development. We will do this through a generalized version of the simulations run to date, in combination with classification and regression tree (CART) methods.
Methods
For this study a completely random character generation method was developed. This simulation program generated random races, ability scores, weapon and armour types and feats subject to the rules in the online Pathfinder System Reference Document (SRD). Weapons were restricted to three choices: rapier, longsword and two-handed sword. Armour types were studded leather, scale, chain shirt and chain mail. There were eight possible feats: improved initiative, dodge, shield focus, weapon focus, power attack, desperate battler, weapon finesse and toughness. Ability scores were generated uniformly within the range 9 to 18, and racial modifiers then applied: the human +2 bonus was applied randomly to the three physical attributes. Feats were assigned randomly, with humans having three feats and non-humans two. All fighters with a one-handed weapon were given a light wooden shield. Halflings were given size benefits and disadvantages as described in the SRD. Initial investigation revealed that ability score values were only important in broad categories: ability scores that gave bonuses greater than 0 were good, and bonuses of 0 or less were bad. For further analysis, therefore, all ability scores were categorized accordingly into values of that gave a bonus of +1 or greater vs. those that did not.
All fighters were pitted in one-to-one melee combat against an Orc, which had randomly determined hit points and the fully operative ferocity special ability. This happened in a cage deep beneath Waterdeep, so no one could run away. Winners were promised a stash of gold and the chance to buy a farm on the Sword Coast, but were actually subsequently press-ganged into military service in the far south, where most of them died of dysentery. A million fights were simulated.
Once data had been collected it was analyzed using classification and regression tree (CART) models implemented in R. CART models enable data to be divided into groups based on patterns within the predictor variables, which enables complex classification and decision rules to be made. Although it is more complex and less reliable than standard regression, CART enables the data to be divided into classification groups without the formulaic restrictions of classical linear models. Results of CART models can be expressed as a kind of flowchart describing the relationship between variables, with ultimate classification giving an estimate of the probability of observing the outcome. In this case the outcome was a horrible death at the hands of an enraged orc, and the probability of this outcome is expressed as a number between 0 and 1. CART results were presented separately by race, in case different races benefited from different choices of feats.
Some univariate analysis was also conducted to show the basic outline of some of the (complex) relationships between variables in this dataset. Univariate analysis was conducted in Stata, and CART was conducted in R.
Results
Of the million brave souls who “agreed” to participate in this experiment, 498000 (49.8%) survived. Survival varied by race, with 55% of humans surviving and only 45% of halflings making it out alive. Some initial analysis of proportions suggested quite contradictory results for the different feats, with some feats appearing to increase mortality. For example, 47% of those with improved initiative survived, compared to 51% of those without; and 46% of those with shield focus, compared to 52% of those without. This probably represents the opportunity cost of choosing these feats, or some unexpected confounding effect from some other variable.
The three combinations of ability scores and feats with the highest number of observations and the best survival rate were:
- Dwarf with +3 strength, +3 dexterity, +3 constitution, chain mail armour, rapier, weapon focus and desperate battler (15 observations, 100% survival)
- Dwarf with +3 strength, +0 dex, +4 con, scale armour, two-handed sword, toughness and weapon focus (13 observations, 100% survival)
- Dwarf with +3 strength, +2 dex, +3 con, studded leather armour, longsword, desperate battler and power strike (13 observations, 100% survival)
Despite the apparent success of Dwarves, a total of 55% of all unique combinations of ability scores, feats, weapon and armour types with 100% survival were in humans. The majority of the most frequent survival categories appeared to be in non-humans, however – this bears further investigation.
CART results varied by race. For humans, ability scores were most important; for dwarves, weapon type and armour type were important, while constitution was largely irrelevant. For elves and halflings, the only important feat was toughness; weapon finesse was only important for humans, and sometimes only as a negative choice. The key results from the CART analysis were that strength is the single most important variable, followed by dexterity for elves and halflings, or constitution for dwarves; and then by decisions about armour and weapons. Feats are largely relevant only for those with weak ability scores.
As an example, the CART results for humans are presented as a flowchart in Figure 1 (click to enlarge). It is clear that after strength and dexterity, heavy armour and constitution are important determinants of survival. Weapon finesse is only important as a feat to avoid for those with low dexterity – for those with high dexterity it is largely irrelevant. Toughness primarily acts as a counter-balance to poor constitution in those with high dexterity and strength.
Decision models for other races will be uploaded in future posts.
Conclusion
This study once again shows that strength is the single most important ability for determining survival in first level fighters, and that feats are largely used to improve survival chances amongst those who already have good ability scores. In previous posts dexterity appeared to be irrelevant, but analysis with CART shows that the absence of a dexterity bonus makes a large difference to survival – those with no dexterity score bonus do not benefit from feat choices, while those who have a dexterity bonus can benefit further by careful choice of armour and feats. Although previous posts found that “tough” fighters have a very high survival rate, this post finds that constitution is not in itself a priority ability score. By following the decision model identified in this study, players can expect to generate a fighter with the highest average survival chance given their ability scores.
November 14, 2012 at 1:29 am
With so many variables, are a million random samples sufficient to achieve good confidence? Especially when playing out the combat involves a large amount of randomness as well.
Also out of curiosity, how long did it take to generate a million fighters and run their battles?
November 14, 2012 at 11:33 am
That’s part of the reason I divided the ability score bonuses into 2 groups. There are then basically 12*2^11 groups, which is about 25000, or about 40 observations per unique combination of all variables. Dividing it up by race means about 10 per unique combination of all variables. If one assumes that a few variables are largely irrelevant, it should give you enough data. I could do it for 10 million samples (I have one running now actually) but I doubt it will make much difference.
Running a million battles on my work computer doesn’t take very long (12 cores, 32Gb RAM); running it on my home computer took about half an hour, I think – not long enough that I paid it much attention. The simulations themselves aren’t a big challenge. CART on 250,000 observations (one racial group) takes maybe 5 minutes. It would probably be quicker if I did all this stuff in Stata (which is optimized for multiple cores, whereas R is not) but the additional programming time makes it not worth it (I’m not used to running simulations in Stata). I also originally conducted Poisson regression, and that didn’t take much time either. Actually, making the flowchart even vaguely legible took more time than the analysis …
It actually occurred to me that I could probably ditch simulations altogether if I reconfigured each battle as a Markov Chain – there are only two states, and even damage rolls have expected values – because then I could just calculate expected values for any battle in terms of starting parameters, then fiddle the starting parameters to represent character choices. But working out the maths of this would take longer than programming and running a simulation. Oh, the joys of modern computer power…
November 24, 2012 at 7:38 pm
“Winners were promised a stash of gold and the chance to buy a farm on the Sword Coast, but were actually subsequently press-ganged into military service in the far south, where most of them died of dysentery. A million fights were simulated.”
In other news, the far south has seen the rise of the largest army ever seen in FR. Mostly comprised of humans/dwarves in heavy armour.