Procedurally-Generated Adventurers

My favorite pen and paper roleplaying game is Dungeon Crawl Classics. It’s similar to Dungeons & Dragons, but combines the mechanics and ease of play of recent versions of D&D with the artwork style, reliance on random tables, and story flavor of old school D&D from the 70’s. Compared to contemporary vanilla D&D, it’s funnier, more brutal, and unpredictable in the best way. It’s everything I love about D&D, but better. It even uses weirder dice.

One of my favorite things about Dungeon Crawl Classics is how they recommend you begin an adventure campaign. Each player is instructed to create four zero-level characters that have no heroic classes. No sneaky rogues, no valiant warriors, no arcane spellcasters, at least not yet. Zero-level characters instead have simple medieval professions like blacksmith, cobbler, and indentured servant, and the professions determine their meager starting possessions. Players cannot choose professions, instead they have to roll d100 on a table to randomly come up with them. Character stats–in this case Strength, Agility, Stamina, Intelligence, Personality, and Luck—are similarly rolled in an unforgiving way. Players roll 3d6 for each, in order, and they’re not allowed to shift their good rolls into the most crucial stats.

The result is an adventure with a huge mob of player characters, many of who have terrible stats and are doomed perish in gory and hilarious ways. The idea is that each player will likely have only one character survive the first adventure, and that character then gets to level up as an adventuring class. If more than one of their zero-levels survives, the player can choose which one to keep. These zero-level adventures are called either funnels or meat grinders, with good reason.

I love rolling zero-level characters. The professions are funny, and characters with horrible stats are oddly endearing, and lucky rolls result in characters I can’t wait to play. There’s something about rolling a bunch of these characters and imagining their fates that’s endlessly entertaining to me.

A while back I wrote something about procedurally generated writing and Twitter bots, which led me to discover a website by George Buckenham called Cheap Bots Done Quick. It uses a simple programming language called Tracery to let users make automated Twitter accounts that recombine text from lists. I made a few bots that randomly recombined bits of my own writing into abstract quasi-poetry. It occurred to me that I could use Cheap Bots Done Quick to make a bot that automatically generated zero-level characters according to DCC rules.

It didn’t take long before I had a bot that selected professions and possessions from the DCC table and paired those with randomly generated stats that mimicked 3d6 rolls. It looked like this:

That was fun, but I wanted to know more about these poor souls. I started to experiment with adding a sentence that explained some of the motivation of each character. Why were they leaving the workaday world to try their hand at being an adventurer? After the stats, I added a sentence that told what they hoped to do to a particular type or monster, and what particular type of treasure they hoped to gain. It looked like this:

This helped, but it got repetitive pretty quickly. I then figured out a way to randomize a whole list of archetypal character motivation stories, each with numerous variable elements. At that point I was able to build multiple lists of variable elements (monsters, treasure, places, family members, etc) and combine them in different ways in different archetypes. I’m really delighted by the results. They’re intriguing, harrowing, funny, and occasionally nonsensical. Here are some examples:

At this point I think the bot is done, but it will probably never be fully done. Over the last few days I keep returning to the code and adding more narratives, and more words to the various lists. The more options I can feed into it, the more unique results it can spit out.

You can follow the bot here. Let me know if you think of any more variables I can add! And if you actually play one of these characters, let me know how they faired in the meat grinder.

%d bloggers like this: