Writing Compelling NPCs: 7 Techniques That Work
NPCs are the human heartbeat of any RPG world. They're the people your players talk to, trust, fight, fall for, betray and mourn. A flat NPC is a vending machine. It dispenses information and then vanishes from memory, and you couldn't tell it apart from the next one if you tried. The novelist E. M. Forster had a name for this back in the 1920s. Flat characters, he wrote, are "constructed round a single idea or quality," and only round ones are capable of surprising us in a convincing way. A real NPC, on the other hand, changes how players feel about the world they're in, sometimes for an entire campaign and sometimes for years afterwards. Veteran tabletop players still bring up the bartender they met in session two of some long-dead campaign. That character had three lines of dialogue and a very particular limp. That's the bar.
The seven techniques below are the patterns that keep turning up in NPCs people actually remember. They work for human GMs at a physical table. I'd argue they work even better as Game Bible entries an AI GM leans on across many sessions, because an AI's real strength is consistency, and characters built on these patterns are easy to keep consistent. Use them as a checklist when you write your roster. If an NPC ticks all seven boxes, they'll be unforgettable. If they tick one or two, you've built a vending machine.
1. Give Them One Specific Want
Skip the vague motivation and go for a specific, current desire. Not "she wants power," but "she wants a seat on the city council before her rival gets one, and she has three weeks." Kurt Vonnegut used to tell his writing students that "every character should want something, even if it is only a glass of water," and he was right about NPCs too. Specificity creates urgency. Urgency creates drama. That three-week window gives the GM something to escalate against, and it gives the player a reason to make decisions that ripple beyond their own goals.
The want should be something the player could plausibly help with, or get in the way of. "She wants to reach enlightenment over the next forty years" is a perfectly fine human desire and a useless NPC desire. "She wants to find her sister, who vanished into the eastern provinces last winter," on the other hand, is something a single session can push forward.
2. Give Them One Thing They Won't Do
Every character has a line they won't cross. That line defines who they really are, more accurately than their stated values or their public reputation. A mercenary who'll take any job except killing children is more interesting than one with no limits at all. The same is true of a scholar who'll lie about anything except what a primary source actually says. The line is what creates the dilemma, because sooner or later the players will land in a situation where getting what the NPC wants means crossing it. That's where character shows itself.
The line also gives the NPC a clean way to refuse. When the NPC says "I won't help you with this," the player knows they're dealing with a person, not a stat block.
3. Let Them Want Something From the Players Specifically
The most engaging NPCs aren't neutral. They want something from these characters, for this reason, that they wouldn't want from any random adventurers who wandered in. The blacksmith doesn't just sell weapons. She's been watching the party, and she wants to hire them for a job she's too scared to do herself, because the way they treated her apprentice yesterday told her they're the right people. Interest runs both ways.
Honestly, this one technique fixes more bad RPG dialogue than any other. NPCs who are interested in the players become interesting to the players. Meanwhile, NPCs who treat the party as one more group passing through fade into the wallpaper, however cleverly they're written.
4. Give Them a Physical Habit or Mannerism
Pick one specific, repeatable behaviour that the AI GM (or you, at the table) can bring out again and again. Not "she's nervous," but "she always straightens the objects on a table while she's thinking." Not "he's intimidating," but "he stops talking mid-sentence whenever someone walks into the room." The mannerism becomes a signal that players learn to read. When she starts squaring up the cutlery during a negotiation, they'll sit up. When he goes quiet, they'll know someone just came in.
The trick is to choose mannerisms that can be seen, or at least described, in narration. Internal moods are hard for an AI to render consistently, whereas physical habits are easy. Mike Shea at Sly Flourish has a shortcut I like here: borrow an archetype from a film or TV character you love and you get a ready-made set of mannerisms and a voice. (He also suggests giving every NPC a name that starts with a different letter, so players can keep them straight. It's a small thing, and it really helps when people are listening instead of reading.) Either way, the mannerism becomes the character's signature, and the AI can use it confidently in every scene.
5. Make Them Competent at Something Unrelated to Their Role
The innkeeper is also a retired sailor who can navigate by the stars, and the wizard's apprentice turns out to be a remarkably gifted liar. My personal favourite is the gruff guard captain who writes poetry on his evenings off. Competence in an unexpected area makes a character feel three-dimensional, because now they exist beyond their job title. It also hands the GM a useful tool. When the players need help with something the obvious NPC can't handle, the surprising one can step in.
That unrelated skill has to be specific enough to actually use. The D&D basic rules make the same point about player characters: "I'm smart" is a weak trait because it describes a lot of characters, whereas "I've read every book in Candlekeep" tells you something real. So "she's good with horses" is generic. "She can name the breed of any horse from its hoof print" is something you can build a whole scene around.
6. Let Them Be Partly Wrong
Characters who are right about everything are boring. Worse, GMs tend to use them as exposition delivery vehicles, and players learn to distrust anyone who's suspiciously confident. So give your NPCs a mistaken belief they hold with total confidence. It shouldn't be a flaw that makes them unlikeable, just one specific thing they've got wrong that will matter eventually. Maybe the mentor misreads what the enemy actually wants, or an ally trusts exactly the wrong person. Or the shopkeeper is certain a regular customer is innocent of a crime that customer absolutely committed.
Real people are wrong about things. They hold those wrong beliefs alongside plenty of right ones, and the wrongness rarely turns them into villains. NPCs should work the same way. When the players finally uncover the mistake, the NPC's reaction (denial, embarrassment, recalibration or doubling down) turns into a character-defining moment.
7. Let Them Change
The NPCs players meet at the start of a campaign shouldn't be the exact same people by the end, at least not if the players have genuinely dealt with them. An NPC who trusted the party and got betrayed should grow more guarded, and one who saw the party act heroically should grow more hopeful. And if someone was forced into a hard choice in a scene with the party, they should carry its weight into every later appearance. Change is what separates a character from a fixture.
Of all seven, this is the hardest to enforce at a tabletop and the easiest to enforce with an AI GM, because the game can keep a structured record of what you've done to whom. In EchoQuest, every named NPC carries a standing toward you on a scale from -100 (sworn enemy) to +100 (loyal ally). The GM adjusts it whenever you meaningfully help, harm, persuade or offend someone, and it jots a short note explaining why. Those standings get handed back to the GM on every turn, so it can't quietly forget that you robbed the ferryman. By your tenth session, the people you've treated well should treat you very differently from the ones you've wronged. The world remembers.
I learned how much the little mechanics matter here, too. At one point I noticed NPCs weren't switching to their own voices at all. The cause was that their dialogue wasn't woven into the narration, so the audio engine just read every line in the narrator's voice and the whole cast collapsed into one person. Now every spoken line is tagged with the speaker's name, and on the premium voice tier each NPC gets a gender-matched voice that sticks with them from session to session. Then I rewrote the GM's instructions so NPCs talk in the first person with their own rhythm and grudges. They hold strong opinions and say them plainly. They also dodge questions and lie when it suits them. All seven techniques get easier to land once the character literally sounds like somebody.
A Worked Example
Here's a Game Bible entry that uses all seven:
Sera Volant: A retired city guardswoman in her mid-fifties who runs a stew kitchen near the river docks. (1) Wants: to track down the bandit captain who killed her old patrol partner two years ago; she's been quietly questioning travellers ever since. (2) Won't: turn anyone over to the current city watch, who covered up the original killing. (3) Wants from the party: they look like people who can travel out of the city, and she wants information about one particular roadside inn. (4) Mannerism: drums her fingers on the counter when she's listening to a lie. (5) Unexpected competence: keeps a bee garden on the roof; her honey is the best in the district, and she barters it for information. (6) Wrong about: she believes her old captain was clean; he wasn't. (7) Will change: if the party brings her real information about the bandit, she'll start to relax for the first time in two years.
That's one NPC who could carry a campaign on her own. Wouldn't you want to sit at her counter?
In EchoQuest, the AI Game Master builds its NPCs from your Game Bible. When you upload one (PDF, DOCX, TXT, MD and JSON all work), each named character is distilled into a role, a short personality sketch and a note on how they speak. So dense, specific sentences like Sera's survive that trip far better than pages of loose backstory, and the more concrete your descriptions are, the more consistently the AI can hold onto them across dozens of sessions. One more tip: don't write an NPC for every villager. Pick the dozen or so who matter and give each of them all seven. If you'd like a template to start from, my guide on how to write a Game Bible walks through the whole structure. A private world of your own comes with the Storyteller plan. Build your world →