(Thought to create this post after reading this thread.)
I’m hoping to hear what you like about well-written NPCs in parser games/text adventures.
So there are the standard/obvious points that NPCs typically ought to hit:
Talk to/Tell/Ask commands available
The NPC doesn’t move around pointlessly
Each NPC serves some purpose
No NPCs that do nothing except to help the player solve only one puzzle
The NPCs have some characterization and sense of voice in their dialogue
The NPCs have their own goals and motivations as characters
But of course, these are basic points. I would like to hear from everyone what makes an NPC not just acceptable or good but effective and likable. I’ve been playing the XYZZY awards ‘Best NPC’ category games to get some sense of the idea, but I’m not sure that I can articulate what it is that makes outstanding parser game NPCs outstanding as I’m just too new to IF.
(But it does seem that the best NPCs always seem to have some kind of unique implementation about them that makes them special.)
The reason I ask is that I am currently building my first longer, more serious game (I’ve built some really silly duds before, but those are of no importance/don’t matter) and it is going to feature a handful of NPCs who I hope will be the strongest part of the story. As such, I don’t want them to feel placid or flat.
This is a fairly subjective question, IMHO. It’s hard to judge writing, and writing is the backbone of a good character. For a good example, take several examples from Writing with Inform: A Day for Fresh Sushi springs to mind, and I’d argue it has no less than three characters, one being the player, one absent, and one interactable fish.
Still, one general mechanical point seems to recur: a responsive NPC is generally more fun than a static one, and an NPC who acts in a clear and understandable fashion is more fun than an unmotivated one.
I would suggest a couple more items for your list:
The NPC should react to what the player does
In real life, people don’t sit idly by, looking on impassively as other people do things around them, but a lot of NPCs do. It’s a fairly easy matter to make a character react to certain types of player behaviour. The example “Noisemaking” from chapter §12.9. of the Inform 7 manual gives a simple way of doing this in Inform.
The NPC should react to their environment
Having NPCs pick things up, look at scenery objects in the room, sit in chairs and do other things that the player might do, makes them feel like they’re other people rather than objects. If they’re carrying something, I sometimes like to add a line about what they’re doing with that object to their paragraph in the room description.
Another point, related to my first, but worth elucidating in more detail:
An NPC can initiate a conversation
A motivated character will usually have something they want to say to the player, and they’re not going to want to wait until the player talks to them. They’re also not going to be happy if the player walks off mid-conversation. They’ll either try to detain the player, or follow the player around until they’ve got their point across (or an answer to their question).
One caution though–I would suggest that an NPC not do something every turn, and especially that an NPC not do something that involves a number of randomized messages that is smaller than the number of times it’s going to happen. There’s one particular game I’m thinking of with a character who followed the player and had five or so random characterful messages for going from one place to another–but since I was moving something upwards of forty times while this was happening, I got these characterful messages at least eight times each, and I got tired of them. The NPC needn’t be constantly drawing attention to themselves unless that’s their nature.
Oh, and one of the best ways to inculcate affection for an NPC is to have them deliver a hint for a puzzle the player is stuck on.
Yeah, I’ve made games where the NPCs (and other environmental stuff) wouldn’t stfu. And others where NPCs say the worst things at the most inappropriate times. (Like the bodyguard who took the time to comment on someone’s clothing in the middle of a tavern brawl.)
Having your NPCs react to the player, the environment, and other characters (as J. J. Guest commented) is surprisingly the easy part. You can get lost in coding all the ways your characters can react to all the things in your game.
The delicate part is reaching a more organic pacing in the NPC’s actions/dialog (instead of the overly-chatty or totally mute). And be sure to customize their dialog to the current scene (to avoid having a character sit down and start singing about gold while a troll is busy introducing your face to his axe.)
It’s certainly true that messages printed every turn, describing characters “fidgeting” and other environmental effects can be a bit much, and they definitely need to be contextually appropriate. However, adding a bit of variety to a character’s paragraph in the room description is an unobtrusive way to make to make an NPC seem “alive” and that they belong in whatever environment they’re in. It might seem obvious, but a character should be described differently if they’re in a cosy living room than they would if they were in a dismal, freezing dungeon.
One pet peeve: NPCs who give the player a quest to do something so absolutely pointless that they could and should have done themselves. “You’re a fisherman, you mean you don’t know how to find worms??? That are located one square west of where you’re just standing and not fishing?” Even worse when they won’t talk to you till you do this thing. “I can’t sell you this left-handed wrench you need to open the shed until you’ve rescued my daughter from the troll…” Seriously? I’ll do that for you too, but if I can unlock the weapons in the shed with that left-handed wrench ON THE WAY I’ll be less likely to die while I’m rescuing your… You need wood to start a fire before you’ll give me the axe THAT I COULD USE TO CHOP WOOD? I need the specific coat hanger you’re holding to unlock the door despite there being ten closets of hanging clothes in this house where I could just grab one?