This series of posts is dedicated to building tools that support a simulation of simplified D&D gameplay. To implement the simulation I’ll be using git, Python, PostgreSQL, Elastic, and Docker. The idea behind these blog posts is to document my progress through this project and interesting bits I find along the way. If you’d like to start from the beginning, have a look at part 1, where I talked about where this idea came from, and what I’d like to accomplish. The github repository for this project holds the latest version of the files mentioned in these posts. To follow along, part 6 describes how to set up the environment. In this part, I’m looking at the classes that will be used in the simulation and the approach to be used in the series.
Oh man, am I excited about talking about classes. I poured over the Fighter page in the Advanced D & D Players Handbook, shown in the cover picture, dreaming about how to bring different Paladins to life. When Dragon Magazine published “A plethora of paladins” in the Feb/86, issue 106, Paladins were defined for each of the alignments, a whole bunch of options opened up for me. I had used the anti-paladin that they had published some time before, July/80, issue 39, as a great villain, but both were really too extreme in how they came across for me to feel really comfortable playing them. In 5e, there are all those options laid out in what seems to me to be a more interesting way. That way will complicate the simulation a bit, but it I believe it will be worth it!
A character’s class defines what they can do. The SRD lists 12 possible classes for characters: Barbarian, Bard, Cleric, Druid, Fighter, Monk, Paladin, Ranger, Rogue, Sorcerer, Warlock, and Wizard. Each of these classes has a class feature that makes them unique within the class, E.G. Bards have a Bardic College, Fighters have a Martial Archetype, Sorcerers have a Sorcerous Origin, and Wizards have an Arcane Tradition. I will call that the Standard Character Altering Class Feature (SCACF). The SRD only lists a single option for each of the classes, so that’s what I’m going to focus on for this series of blogs, but other options could be added from official products or homebrew that would give more options within the classes themselves.
In addition to the SCACF, there are some additional choices some of the classes have that drastically change the character overall. When building series with all character classes those choices need to be taken into account. A full list of all Character Altering Class Features (CACF) follows. I will put an asterick after the standard one we’ve discussed.
Barbarian (SRD)
Primal Path*
Path of the Berserker (SRD)
Bard (SRD)
Bard College*
College of Lore (SRD)
Cleric (SRD)
Divine Domain*
Life Domain (SRD)
Druid (SRD)
Druid Circle*
Circle of the Land (SRD)
Wild Shape (animals by challenge level) (SRD)
Influence of the Land
Artic (SRD)
Desert (SRD)
Forest (SRD)
Grassland (SRD)
Mountain (SRD)
Swamp (SRD)
Fighter (SRD)
Fighting Style
Archery (SRD)
Defense (SRD)
Dueling (SRD)
Great Weapon Fighting (SRD)
Protection (SRD)
Two-Weapon Fighting (SRD)
Martial Archetype*
Champion (SRD)
Monk (SRD)
Monastic Tradition*
Way of the Open Hand (SRD)
Paladin (SRD)
Sacred Oath*
Oath of Devotion (SRD)
Ranger (SRD)
Favored Enemy
aberrations (SRD)
beasts (SRD)
celestials (SRD)
dragons (SRD)
elementals (SRD)
fey (SRD)
fiends (SRD)
giants (SRD)
monstrosities (SRD)
oozes (SRD)
plants (SRD)
undead (SRD)
OR 2 races like gnolls and orcs (SRD)
Fighting Style
Archery (SRD)
Defense (SRD)
Dueling (SRD)
Ranger Archetype*
Hunter
Hunter’s Prey
Colossus Slayer (SRD)
Giant Killer (SRD)
Horde Breaker (SRD)
Defensive Tactics
Escape the Horde (SRD)
Multiattack Defense (SRD)
Steel Will (SRD)
Superior Hunter’s Defense
Evasion (SRD)
Stand Against the Tide (SRD)
Uncanny Dodge (SRD)
Rogue (SRD)
Roguish Archetype *
Thief (SRD)
Sorcerer (SRD)
Metamagic
Careful Spell (SRD)
Distant Spell (SRD)
Empowered Spell (SRD)
Extended Spell (SRD)
Heightened Spell (SRD)
Quickened Spell (SRD)
Subtle Spell (SRD)
Twinned Spell (SRD)
Sorcerous Origin *
Draconic Bloodline (SRD)
Warlock (SRD)
Otherworldly Patron*
The Fiend (SRD)
Pact Boon
Pact of the Chain (SRD)
Pact of the Blade (SRD)
Pact of the Tome (SRD)
Eldritch Invocations
Wizard (SRD)
Arcane Tradition*
School of Evocation (SRD)
Judging from the list, the level of influence or choices allowed may or may not very depending on what was choosen for the SCACF. In building the data model for these options that will have to be taken into account as well as how the characters would be built for a series.
To touch on the strategy for how testing in a series is going to work, think of each decision that changes how a character performs as being a multiplier. Because when the series is built, the pool of characters will be determined by: ( # of Races + ( # of character performance modifying decisions for each race [e.g. ability scores] ) ) * ( # of classes + (# of CACF) )
If that can be well organized, then the simulation will have less work to do to build the subjects of a series. Also, that organization will be the driver for how the code for defining a series is actually implemented.
Next time I’ll lay out the requirements and code for the character class base class. Until then, Go Play!