Partly inspired by Namaste’s idea of using ‘storybricks’ to let players generate content involving smart NPCs, and partly inspired by Elder Game’s discussion of NPCs, I’ve been pondering these odd mobs myself.
We spend a fair amount of time in MMOs interacting with NPCs, whether it be fighting them, doing quests for them, or trading with them. We also spend a lot of time not interacting with them, and just running past and treating them like mobile decorations or scenery. But in either case, the actual quality of the interaction is usually fairly low . So: the classic MMO NPC is a lump in the shape of a person/ creature that performs an action when you click on it.
Devs have been working on this whole interacting with NPC dilemma for years. And there are three basic ways to simulate how an NPC interacts with PCs.
1. Simulate all the NPCs all of the time and let them have mini-lives of their own. Let them get up in the morning, go to work, go to the pub, go back home in the evenings, have families, goals, enemies, friends, etc. If PCs wander into a town, they’ll see the NPCs going about their business because they will have stumbled into the middle of the simulation. Just simulate the whole darn gameworld, already.
The Sims franchise is probably the best known implementation of this type of NPC simulation. You can watch the other NPCs wandering around and see their aims and goals unfold even if you don’t feel like playing yourself. Dwarf Fortress is another game that takes this route with NPCs.
This is also where Namaste are coming from. By assigning goals to NPCs, this implies that in-game behaviour could also be driven by those goals and so this is a little like allowing PCs to ‘program’ the NPCs before letting them loose in the gameworld. The storybricks idea is just a core, it lacks any notion yet of how the NPCs are going to express the goals. Read: how will a player get to know what the NPCs hidden goals are, if at all.
For example, if the NPC queen wants a cake does she go and get one, order a servant to fetch one, generate a quest for passing players to bring her a cake, or simply announce loudly at regular intervals, “I WANT A CAKE!!”? That’s an implementation detail but quite an important one.
This is a simulationist approach. It tends to be very computationally expensive if the game is large or the characters are complex. Another issue is how to resolve disputes between NPCs: do they fight? Argue? If two NPCs are competing for the affection of a third, who wins? And what happens if you simulate some feud as complex as Romeo and Juliet and the player only walks in after everyone is dead.
2. Just simulate what the players need to see. Imagine NPCs as rag dolls who only come to life when a player enters the room. Cut scenes, or NPC behaviour that is triggered on a player achievement would come into this category. Most single player RPGs work on this sort of principle, where the player effectively drives the NPCs as s/he progresses through the story.
When done cleverly, players will never notice the difference because the illusion of a functioning gameworld simulation will be perfect. They’re also much more likely to feel that they have an effect on the game and on every character they meet, because they literally do change the behaviour of every character by their actions.
This is a narrative approach.
3. Robot NPCs. These NPCs perform specific tasks. Imagine them as person shaped lumps who are able to give/ receive quests or buy/ sell goods. They may have a fixed range of tasks and offer fixed responses (eg. a barman who fetches drinks when asked.) Some may be purely decoration or furniture. They wander around as window dressing.
This is where most MMO NPCs currently fit into the sphere.
So which is the most realistic way to simulate an NPC?
It’s all nice and well to have every single one of your NPCs with a full set of short-term, medium and long-term goals and relationships, but how often in real life do you stop to wonder about the goals of the person who serves you in a shop?
At this point it all just depends on the type of game you’re playing and the type of scenario. A murder mystery on a submarine is the kind of setting where it is important for everyone to have goals; there’s a fixed number of NPCs involved and it’s integral to the genre that PCs probably have to go talk to all of them. But in a huge city? Probably not.
A heroic, plot driven, on rails adventure only really needs NPCs to ‘wake up’ when the hero/ine gets to their part in the plot. There’s no point animating half of London when the hero is off fighting on an airship over the North Pole en route to Mexico, where the story ends.
Simulating actual relationships is even more difficult
Reputation grinds in MMOs do fairly simulate the process of getting someone (or some people) to trust you by helping them out with stuff. Of course most people in real life won’t send you off on daily quests to kill ten rats, but it is also true that we get to know and trust people by working alongside them for awhile.
But what about actually getting to like someone? That’s trickier because coded NPCs are necessarily very one-way with their affections. You can make the NPC like you by doing coded tasks or offering coded gifts, but never usually by just chatting to them in a friendly way or being a generally charismatic individual. Freeform conversation is hard in simulations, especially when the bot can’t respond when you talk about yourself. And the NPCs rarely ask to do tasks or give gifts to you, so it tends to feel as though you’re trying to pull the right levers on the robot rather than making friends with a simulated person.
I personally find it even harder when devs try to be clever and ask you to guess or find out what presents NPCs would like. What if I miss some text based cue or don’t hang around long enough to hear the emote about loving chocolate?
So I do prefer games which let me assign some kind of charisma or perception score to my character and then just figure out automatically what the NPC wants. Unless mind-reading the NPC is going to be an interesting mini-game or the conversation options are fun, I’d like to skip the bit where they hate me if I give them the wrong present rather than just saying awkwardly, “Oh! A stuffed frog, you really shouldn’t have! I’ll be honest and tell you that I prefer chocolate but I’m still touched by the thought.”
Conversation trees and romance style options also wind up with the sort of gameplay where you speak repeatedly to your chosen romance object in the hope that eventually the game will let you virtually snog them, as if it were the equivalent of a quest. Again this might simulate real life fairly well if the NPC didn’t eventually get caught in the same speech loop (eg. I’m busy calibrating, come back later.)
Eric@Elder Game has interesting ideas (which I referred to earlier) on how to make NPCs memorable and how to simulate friendships, trust and building relationships with PCs. But as I said, there is always a risk of falling into the trap of having every character in your game act like an amateur dramatic, emoting about their goals at the drop of a hat, when all the PC wanted to do was buy a pint of beer.