[Storybricks] How well do NPCs simulate real people?

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.

13 thoughts on “[Storybricks] How well do NPCs simulate real people?

  1. I’m glad you pointed out that most of the real-life interactions we have are as superficial as the merchant interactions in games, because that means I don’t have to write a blog entry. XP

    It may seem cold, but the reality of our lives is that most of the people around us are window dressing on our lives. We interact personally with a few people at work or school, our friends and family. Strangers may as well be “window decorations” for all we care.

    Nope, gonna have to write blog post after all. LOL

    • Go for it ! But I also think there may be a hard limit on how many people we’re each capable of really caring about, after that, it’s just too much to ask.

      And getting back to the topic, what that means (to me) is it’s unreasonable to expect the player to care about any of the NPCs who don’t directly affect them. If you try to make them to do that then the typical player will tend to assume that the NPCs do have goals that will affect them and that’s why the story is steering them that way.

      But it might be reasonable to ask for each NPC goal, “how could this have a direct bearing on a PC?” and emphasise the ones that could, or might.

  2. I think the simulation angle has always been a waste of time. Modern 3D gaming exists only because decades ago programmers realized that they did not have to render every aspect of the world when the player wasn’t looking at it. In fact, only what the player can possibly see at that moment is rendered. In WoW, have you ever seen a big clump of mobs spawn and then move apart as you flew by? That is because the servers did not even (re)generate them until a player got within view distance.

    I would agree that face time, just like IRL, is required to develop any kind of attachment to NPCs. However, I would go further to state it is really only voluntary interaction that really allows us to develop a “relationship” with an NPC. Eric mentioned the classical Aries death, but how he didn’t feel anything other than designer manipulation. Well… did he use her often in the party? She was central to the plot, but I never really used her in fights – it was Tifa and Red XIII/Barret pretty much all the way. Aries’ death affected me more because it was Sephiroth taking something, anything away from me and demonstrating how powerless Cloud (and me by extension) was to stop him. It would have been similarly poignant if Sephiroth stabbed Yuffie IMO. Hell, I wished I could stab Yuffie myself.

    Anyway, how this relates to NPCs in general is that I think it’s difficult to develop a relationship with an NPC you are forced to interact with. Witty dialog from the blacksmith or whatever goes a long way, but if I have to talk with the blacksmith and do all his quests before I can progress to the next village, the value of the interaction diminishes IMO. Voluntary attachments are much stronger than involuntary attachments. Then again, I was mortified at the end of Half-Life 2, Ep 2 despite the NPC interaction leading up to that point had been “forced,” so maybe dialog and shared history is enough.

    My rather simple experiment? Let multiple NPCs give the same quests. Both the Blacksmith and the Innkeeper will want you to kill 10 rats, perhaps even in the same location, but you as the player get to choose whether to do it for the witty Blacksmith or the flirtatious Innkeeper. Such a thing would be developmentally expensive for an MMO perhaps, but at least it could give the player part-ownership (and differentiation among peers) over those otherwise throw-away quests. Hell, you could even advance the NPC the player chose over time, while the other option sinks into destitute and obscurity.

  3. The good thing about being early in development is that we’re getting great feedback about Storybricks before it’s too late to make changes. The bad thing is that there are a lot of issues we haven’t really made a decision on yet.

    I think the best option is the second one, where you just simulate the things that are important to the player. Personally, I don’t care if I never see an NPC sleep; in fact, it’d be rather aggravating to want to deal with an NPC right before logging off, only to find that NPC is sleeping and I’m unable to wake him or her up.

    I think you also touch upon another interesting topic, how you present the info to the players. I had a question from someone who saw the Storybricks demo today where someone asked about all the possible influences on an NPC’s behavior. I said that we need to be careful, because having more influences than the player can easily track can lead to results seeming almost random. “Why is the King telling me to get out of his sight? I’ve done a ton of quests for him and he’s set to be friendly. Oh, but he has an unreasoning hatred of the color pea green, and I’m wearing the jaunty new hat I got….” Presenting the information in a way that makes sense to the player is a huge issue we need to consider.

    Obviously, there are always going to be issues. We might be doing some cool stuff with A.I., but there’s no way we can accurately simulate interpersonal relationships perfectly in a game. But, I think we can do a lot better than the robots, as you put it, that we see in games today. After just a few months of work, I think we already see some deeper interactions, in fact! 🙂

    Anyway, interesting thoughts. More info for us to consider.

    • I wouldn’t stress too much about feedback, I think it sounds like a really cool idea and I am intrigued.

      If I had any one single suggestion to make, it’d be to consider genre conventions and how those might fit into the sets of verbs you make available.

      Players, in my experience, are far more likely to query the motives of an NPC when the NPC is doing something they don’t like than when the NPC is ‘in their pocket.’ This is just a very human reaction, and ultimately it comes down to metagaming – how much does the player trust the GM to be portraying the characters consistently. Players also tend to over react to any NPC which is even mildly rude to them (ie. he told me to go away!!! I will kill him!!)

  4. Pingback: StoryBricks, des PNJ un peu plus vivants

  5. Pingback: The third role: neither devs nor players but somewhere inbetween « Welcome to Spinksville!

  6. Spinks, don’t forget the problem with games that feature the ideal “1. Simulate all the NPCs all of the time and let them have mini-lives of their own.”

    HUGE save files. If an NPC finds a mushroom on its way to work, a save file has to be written that the NPC put that item in its pocket – how much it weighed, how much it was worth.

    If an NPC in another part of the game world finishes his breakfast and realizes he’s out of cereal – that means that every NPC in the entire game has its own inventory of items and how much they’ve been used, what their durability is, etc.

    Even MORE complicated is the concept of placement. Let’s say an NPC nudges a candlestick and it falls over. The movement of that item creates HUGE save files – ala Oblivion.

    I’d like to see how developers are going to work around the massive amount of save data to work around that.

    • The Namaste each has may years of experience in game development. We’ve thought about a lot of problems, even if we won’t claim to be perfect. As for the save space issue, our designer Stéphane Bura has worked out a system to address this. 🙂

  7. Pingback: Killed in a Smiling Accident. » Blog Archive » Our humanity rests upon a series of learned behaviors, woven together into patterns that are infinitely fragile

  8. Pingback: Psychochild's Blog » Storybricks, and looking at what makes for interesting NPCs

  9. Pingback: Brian - Storybricks, and looking at what makes for interesting NPCs. | Namaste • Just want to play.

Leave a comment