Here’s a DM trick I picked up a few years ago from Tavis Allison of themuleabides: Generate NPC age/gender by rolling d6. Odd numbers are male, even female; higher numbers are older. In more cumbersome chart form, that’s
1 male youth
2 female youth
3 male, prime of life
4 female, prime of life
5 elder male
6 elder female
Define “youth” and “elder” according to the context: in a town, “youth” might mean a 7 year old; in a guard patrol it might mean an 18 year old; in an elven camp it might mean an 80 year old.
I like this die roll because it automatically creates predictably weighted demographics while shaking you out of NPC ruts. I should probably 5e it up by changing the roll to a d7 and reserving 7 for non gender binaries.
You know what? I also have trouble coming up with spur-of-the-moment NPC race. Let’s see if I can’t come up with a second die roll for that.
0 other (choose from the uncommon races)
I like the demographics here: humans make up more than 50% of the population and most of the rest is made up of the 5e “common races” (also the OD&D/basic races): elves, dwarves, and halflings. Each of these is about as common as all of the uncommon civilized races together: gnomes, half-elves and -orcs, 4e tieflings and dragonborn, underdark drow and duergar, plus weird exotic and monstrous stuff like goliath, minotaur, kobold, changeling, gold dragon etc. I won’t make a chart for the uncommon races because it would be impossible to remember. I’ll have to trust my spontaneity here.
There’s a problem here: NPC generation is common, and no one is going to keep a printout of this chart handy throughout every game. I can’t make the race roll as elegantly memorable as the age/gender roll, but perhaps some mnemonics will help.
Let’s look at the chart again.
7 dwarf. Easy mnemonic here. Seven dwarves.
8 halfling. 8 is an important number for halflings because the phrase they most commonly hear is “You ate all the…” An 8 also looks like two fat, half-sized guys standing on each other’s shoulders.
9 elf. I guess a 9 looks like a backwards e for elf. Best I can do.
0 other. O for other.
And then everything else is human.
I’m going to give it a try! I’ll add the random-race d10 roll to the random-age-and-gender d6 roll I make for each new NPC. I’ll just repeat to myself: Seven dwarves, the halfling ate, 9lf, O for other.
Then if you still have bandwidth for a third NPC die roll: remember to make a reaction roll for every NPC (roll 2d6: low hostile, high friendly, modified by PCs’ charisma).
OK, let’s try making a random shopkeeper: A (roll d6: 2) young female (roll d10: 0) uhh, dragonborn. OK, that’s kind of a crazy NPC. Let’s say that her egg was picked up as a curio by a human caravan and sold to the previous shopkeeper, who was surprised when it hatched into a potential apprentice. Reaction roll (roll 2d6: 5) She doesn’t particularly like the PCs – maybe she doesn’t like curio hunters – but doesn’t try to cheat them.
OK, now let’s do the leader of a hostile army. A 5 and a 2. An old man. Nothing super interesting there. Reaction roll (roll 2d6: 11) is a surprise: He likes the PCs a lot: maybe he’s heard about some particular exploit which he admires. He’d love to convince the PCs to switch sides, and if he can’t, he’ll give them all the respect and caution due to a worthy foe.
OK, two NPC rolls, two reasonably inspiring prompts. Good enough for me.