This is a fun project because I got to build something with a collaborator and that collaborator is my daughter, Laurel Mossor!
Laurel is completing her Master’s degree in Social Work (“with a concentration in practice and leadership with communities and organizations”!!) from Portland State University.
She’s also has played in Role Playing Games (RPGs) with me and my son Brian and other friends.
In the course of her learning, she came across a personality test called the Big Five personality traits, also known as the OCEAN model. This is “a suggested taxonomy, or grouping, for personality traits, developed from the 1980s onwards in psychological trait theory”.
Like many others of its kind, you can take a test and it will give you some feedback on how you rate in these various areas.
Laurel has a great idea (in my opinion) one day and rather than measure an existing personality and maybe learn something about yourself, her idea was “what if you rolled some random numbers and generated a personality (or character) from that?“. Basically turning the model of measuring an existing personality on its head and instead, rolling some random numbers to create a personality. Great idea!
One of the challenges in running an RPG campaign is filling your world with Non-Player Characters (NPCs, think your shopkeeper or a guard or someone in a bar that the Players have to interact with) that have some measure of depth. Many Game Masters (GMs/DMs) will use accents to differentiate (my accents are … inconsistent, at best) and some notion of personality that they often make up on the fly.
Laurel’s idea gets to the heart of this problem: What if we could easily generate an NPC that had some degree of depth with just a little effort.
Thus, the initial version of the NPC Generator was born as Laurel coded it up in a pretty cool Google Spreadsheet. That doesn’t travel very well, so the next version was coded (by me) in Python, but had some challenges as it couldn’t easily run on sites that don’t allow you to run arbitrary code on the server.
This implementation (officially v1.1.1) lives in a Git repo as part of my site and is coded in PHP and HTML. It is, by nature, a pretty simple implementation. In the User Interface (UI), you choose a few options for Name (Random, Fantasy, Modern-US, None) and Gender (Random, Male, Female and Non-Binary) and whether the output includes the random numbers generated for the Big Five input. It looks like this:
And the output looks like this:
The goal was to format this in a way to make it easy to read and parse and quickly get a sense of the character. Having a few of these pre-generated can make a random encounter with someone much easier to run for the GM and interesting for the Players as these descriptions give a pretty rich notion of who this person is and how they behave and what they care about. As Laurel points out, the descriptions could also be used in other places where someone might need a quick character or character prompt. And, obviously, if a given combination doesn’t resonate, you can just hit the Create! button again and get another one.
Feel free to give it a try here. And if you have any feedback or ways it might be improved, feel free to let us know!
And thanks to Laurel for a great idea and collaborating with me on a fun project!