Chad Perrin: SOB

18 October 2009

Two Tricks for Characterization

Filed under: Geek,RPG — Tags: , — apotheon @ 10:07

(TL;DR Summary: I have a Ruby script that generates random NPC information. It’s far from perfect, and very superficial. I’m working on ideas to add randomized inspiring personalia tidbits for helping develop NPCs with more depth on the fly.)

This is part of my RPG series of entries here at SOB. See the inaugural entry in the series for more details.

Creating NPCs with a sense of depth can be a difficult challenge for a GM sometimes. Even those of us who are good at it when we feel inspired can — and do — easily run afoul of dry spells. Little bags of tricks can collect in the dusty corners of three ring binders, hard drives, and our twisted minds, to help manufacture that depth. Questionnaires that one can fill out to get a sense of an NPC’s youth and family life, perusing newspaper headlines for ideas about formative experiences, drawing on the experiences and personalities of the people around us, and (unfortunately) trite cliches can all be counted among the tools in many GMs’ toolboxes when it comes to building an NPC that is more interesting than a set of stats, a physical description, and a facial tick or funny accent.

I’ve written a stupid little script (in Ruby, natch) that generates character stats, simple physical descriptions, and a couple other ephemera, for when I know I want an NPC but don’t necessarily know what I want. It’s handy for populating taverns and the like, sometimes. Sometimes, it gives me results that are less than strictly wonderful. It really is random, because I haven’t yet come up with a very good algorithm for getting things to fit together in a reasonable manner. Black women with blonde hair, green and violet eyes, and other (should-be) rarities come up all too commonly. Of course, I can always run it half a dozen times and pick out a bit or two from each result to create a whole NPC, if I want to change some details without having to think too hard.

There isn’t a hell of a lot of depth in most of the information, though. It’s superficial stuff, for the most part. Something like this doesn’t lend itself to rich characterization:

Male Dwarf Fighter
with cornrows of silver hair,
intense hazel eyes,
a sallow complexion,
a lean build,
and a vulgar demeanor

  ST  17
  DX  12
  CN  15
  IN  9
  WS  6
  CH  9

That’s exactly how the output looks. The best I’ve got going here is some naive stat prioritization for classes so you don’t end up with this Dwarf Fighter’s Strength being the 6 and his Wisdom being the 17. Other than that, it’s mostly just random, and worse yet it’s all superficial. I’ve been meaning to incorporate some more stuff, and work on a less naive stats-for-classes prioritization, but haven’t gotten around to it.

It’s difficult to come up with something I can produce with a random concept generating script that lends real depth to NPCs, though. I mean, sure, I could come up with a few character concepts with depth, but if I do that I might as well just use them rather than put them all in a database and end up with every eighth character having exactly the same background and motivations.

A couple of interesting possibilities for character depth inspiration that have occurred to me, though, are important objects and motivating emotions. Almost every character should probably have at least one object that’s important to him or her (even if he or she doesn’t physically have it at the moment), and almost every character should have one deep-seated value that motivates at least some of the character’s actions, with some kind of deep emotional underpinning. Perhaps a letter from one’s lost love holds a special place in one’s belongings, tucked between the pages of one’s spellbook, or perhaps it’s a four-leave clover found while playing with other children in childhood during happier days that is pressed between those pages. Maybe regret for having failed to reconcile with one’s father before he passed away taints one’s view of the world, or maybe a desire to prove oneself better than one’s origins makes one driven to excel — or to harass and demean those who remind one of unhappier times.

If someone doesn’t have any valued objects or deeply rooted emotional influences, that in itself should be a remarkable, powerful indicator of that character’s personality. What desolation is it that drives one to view the world so numbly? What did the NPC flee to pursue a path of renunciation of all worldly attachments? A distinct lack of such an object or emotional influence should perhaps come up very rarely — or maybe I should just settle on that when the script absolutely can’t come up with an object or emotional influence that I like for the NPC.

I think inspiration for these characteristics of an NPC’s personalia can be kick-started by randomly selecting from broad categories of generic objects and emotions — especially if one branches out from the obvious and boring. “Love” and “hate” are kind of lifeless, because they’re so overused, but shame and worry can be much more evocative. A letter or preserved plant, as I indicated above in my examples, is much less common and trite than a locket or a father’s sword. Sure, I’ll include the love, the hate, the locket, and the sword in my options, but such overused tropes will be heavily outnumbered by the less worn-thin alternatives.

I just need to remember to work on coming up with good lists of objects and motivating emotions some day soon. Wish me luck.


  1. Source! Seriously, get that up on github or something. I didn’t see a link to the sourcecode here, and as a fellow ruby developer, I’d love to help contribute to this.

    Comment by Michael — 19 October 2009 @ 12:15

  2. I’m encouraged by your enthusiasm!

    I’m going to give the script a much-needed overhaul at some point in the future, then I’ll share it with the world. There isn’t much point in sharing it when I plan in the very, very near future to basically replace the majority of the source anyway.

    I hope you’ll check back often so you’ll notice when I do share it. If you’re subscribed to comments on this SOB entry, you’ll probably get some notification anyway, since I’ll probably post a comment here when I get to that point — as long as my memory doesn’t fail me in that regard.

    Comment by apotheon — 19 October 2009 @ 01:26

  3. A few other ideas for programmatic random NPC generations:

    You’ve got physical description, so how about current physical/mental conditions: e.g. Hungry, thirsty, bleeding, drunk, sorrowful, happy, lonely, guilt-ridden, etc. Generate an int from 1-5 and pick that many conditions.

    You could do the same sorta thing with character motivations: Money, glory, revenge, vindication, sex, closure, etc.

    For me, if I have a rough starting point, my brain can quickly fill-in the rest of the story of WHY. I.e. if your Male dwarf fighter is guilt-ridden, bleeding, and interested in money, my brain forms a nice little back-story of a once-honorable soldier now reduced to stealing in order to eat. He’s been getting in fights lately due to his inability to steal effectively, and is nursing a stab-wound in the leg. He could be a danger to the PC’s, he might try and steal their purses, but he could be a useful ally as well.

    If you wanted a rough idea of what equipment the NPC had handy, you could create a parameter for the current ‘threat-level’ of the environment the NPC is currently in, e.g. most traveling on a country road would have a weapon handy and be wearing armor. Factor-in the NPC’s class and you should be able to generate a reasonable list of gear.

    Ohhh, and how much cash the NPC had on them. ‘Cause everyone likes to search the bodies.

    Comment by A Different Michael — 16 November 2009 @ 04:09

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

All original content Copyright Chad Perrin: Distributed under the terms of the Open Works License