NPCs as Systems Nexus

My plans for NPCs have been refined a bit. At first, what I envisioned sounds similar to the “Storybricks system” recently announced by Namaste. I’ve abandoned that, now, though, because it’s too convoluted given my time/resource constraints.

But there’s a lot of different things you can do with NPCs depending on your goals. I want NPCs that are memorable and that tie into the rest of the game’s mechanics elegantly. And in fact by dropping a lot of the extraneous stuff, it’s become a lot easier to see how to do that.

Every game has to figure out where NPCs fit for them. For a pure-action MMO like World of Warcraft, NPCs don’t have much role to play. But my game has lots of non-combat skills, and NPCs need to be a big part of how those work.

Examining (and Skipping) the Classic Answers

I started out by looking at some of the traditional computer game NPC systems. A classic one is schedules — giving every person a “life” beyond just waiting for you to show up and buy their crap.

Coding it? Not so bad. But it needs a whole lot of content work. (“Okay, so the town has 33 NPCs. I need to make sure there’s 33 beds, or at least that they can sleep in shifts…”) But more than that, it’s not very fun in an MMO.

In a single-player game, you can just push a button to “advance the clock two hours” when you’re waiting for a shop to open. In an MMO, you might be waiting several real-time minutes for a shop to reopen. Ugh.

I’m interested to see what the Storybricks system comes up with to avoid the annoyances of NPC schedules. But this isn’t a problem I want to try to solve for my game.

Another classic mechanic is talk trees. I do have talk trees, but they aren’t a major aspect of the game, because they are incredibly expensive to write. (They have to be interesting enough to read, or else you end up with boring talk trees like EverQuest 2 had when it first started… and that’s worse than no talk trees at all.)

In the end, I decided the best way to interact with NPCs in my game is to use verbs on them. For instance, you can use the Show Item verb to show something to an NPC and see how they react. Or you can Give Gift, or Shop, or so on. You unlock verbs by mastering skills, so eventually you will have Psychoanalyze, Entertain, Flirt, Control Mind, and others. These all affect the NPC game systems in simple ways.

Interaction Mechanics: Friendliness, Favors, Gifts

In my mind, NPCs and the skill system have a symbiotic relationship. The skill system gets a big jolt of entertainment from interacting with NPCs. And NPCs are fun specifically because of how you can use skills on them.

But in order to make NPCs fun to interact with, they need some custom mechanics.

First off, every NPC has a hidden number that represents how much they like or hate you. If you do nice things for them, this number goes up. What are “nice things”? Well, if you save the town from certain doom, it goes up for everybody in the town. But you can also give gifts to people. (You’d need to use social skills to figure out the perfect gift.)

Of course, you can’t give gifts to strangers, that’s just creepy. You need a certain amount of Friendliness before the NPC will be willing to accept a gift. And of course, when you’re friends, the NPC will sometimes offer you gifts in return.

You can increase friendliness even more by doing Favors. These are just simple quests. (They may still be very difficult in some cases, but in terms of mechanics, they’re just get-me-some-item(s) quests.) Every single NPC in the game has at least three Favor quests that you can unlock by making friends with them.

Favors, of course, don’t come with direct material rewards… they’re favors! But there are many benefits to friendship. NPCs who are skilled in certain things can help you in lots of ways, such as by teaching you new things, giving/selling raw materials or recipes, or even just buying your junk items that nobody else is interested in.

There’s also the romance angle, a la Harvest Moon: some NPCs can be “married”, wherein they appear in your house. (Of course, it’s possible for lots of players to be married to the same NPC! But who cares?)

Although Friendliness is a hidden number, the game does give you a general idea of their friendliness level at all times. I want to make it easy to “game” the mechanic. It’s not like real life, where people can be impenetrable and illogical. Game mechanics are only fun if you can see what you’re doing and how you’re affecting things.

Friendliness Rating is very simple, as you can see — that’s true of all these systems. But it can still have far-reaching implications, and when combined with a few other mechanics it can get interesting. For instance, I’ve been experimenting with “happiness factor.”

Happiness Factor

If an NPC shopkeeper is making a lot of sales and piling up a good income, they’ll be happier than if they’ve been standing around bored all day. But if a player with a good Barter skill gets an NPC to pay too much for some loot items, the NPC might get buyer’s remorse, becoming less happy for a while.

An unhappy NPC is less likely to do favors for friends, give good deals on items, and so on. However, you can increase their happiness by doing things like dancing for them, using social skills to cheer them up, or even using mental magic to force them to be happier (but watch out if the NPC realizes you’re doing that!)

Is this a fun mechanic? Eh, it’s okay, but its real purpose is to be part of the gestalt. Emergent gameplay comes from the combination of systems. Without other systems around it, this system would just be odd. But it combines with other mechanics to tie into skills, quests, combat, and crafting.

I have to admit that the main reason I like this mechanic is that it gives players ways to affect each other, indirectly — an NPC’s happiness level is global, so you can go around pissing people off or making them happy. (It’s a lot easier to make an NPC “happy” than to make them “sad”, so that griefing potential is low… but the effect is still noticeable.)

With a few more of these simple mechanics tied together, we get a nice meaty base for skills to interact with.

But Are They Memorable?

If NPCs are just sets of numbers, that can still be fun to interact with. But if the NPCs are memorable, the impact of manipulating their numbers is greatly enhanced. Ideally players will remember the names of many of them, might be willing to do favors for them, and would even care if they got kidnapped by frog men or smote dead by an evil curse.

My plan actually calls for a lot of text — probably about 60 lines per NPC — but they’re mostly terse reaction statements based on what skill you’re using on them and their current game state. So the volume of text is high, but it’s not anything like having to write compelling talk trees.

But this text gives me room to give them simple personalities. As I’ve said before, I think we should all be striving for two-dimensional personalities for our NPCs. Practically speaking, this usually translates into “quirks”. The pirate that hates rum and secretly drinks apple juice. The matronly older lady who runs a tailor shop, and secretly also runs a brothel. The troll under the bridge who likes candy. You shouldn’t always discover their quirks right away, either: they should have enough surprises that there’s some meat for players to discover via interactions.

I don’t expect the NPCs’ personalities to be so compelling that you remember them right off the bat, though. Remember that the game systems push you toward visiting the same NPCs repeatedly, so that I can take advantage of face time.

The Magic of Being There a Lot

Remember Final Fantasy 7, when Aeris died? This character’s personality was wilting, boring, and cliched. The reason we were shocked and saddened is because Aeris had been a foil in the story for hours and hours.

If the game had introduced Aeris just a few hours before she was killed off, even an incredibly interesting personality wouldn’t have made the death matter as much. I didn’t cry when Aeris died (I felt manipulated by the author, so I was pissed off more than anything else) but for a lot of gamers, this was an extremely important moment.

Yet if you asked them to write a paragraph about Aeris’s personality, I don’t think many people could. She wasn’t memorable because she was that interesting. She wasn’t memorable because of her story or the logic of the world, either. (Hell, given the laws of the Final Fantasy universe, a $100 item should have fixed her right up.) She mattered because of face time.

Now Aeris did have some personality, or otherwise the few dozen hours of face-time she got wouldn’t have been enough.

I think you can always use face-time to make someone memorable, even if they are lacking any trace of personality… but it might take a lot more time. If you watched enough Stargate SG-1, you’ll remember the guy who called out “Chevron 6 is locked!” whenever the Stargate opened. But you probably don’t even know his name. However, if he’d gotten murdered by a Villain of the Week, longtime fans would have been quite upset. Not because he was important, but because he was… well, on screen for literally hundreds of episodes of TV. But a bit of personality definitely helps speed up this process.

So my game systems increase the face time for NPCs, which helps give them importance to players, which in turn increases the importance of the game systems they’re being interacted with. That’s the plan, at least.

Keeping It Simple and Focused

All in all, the systems are very game-able — it is a game, after all. I want it to be fun. Players should be able to figure out how it works, and even if it’s a bit of a puzzle how to approach some NPCs, players should ultimately be successful, given enough time and effort. One trap that’s easy to fall into is opacity: it’s easy to make NPC systems that players can’t understand. When that happens, players aren’t having as much fun as if they understood what was going on.

I also realize that not every player will be excited about befriending NPCs. It’s not very heroic, at least in the classic “dragon murdering” vein. That’s okay; there’s enough things to do in the game that you don’t need to chat up every NPC to have fun. But even if you’re purely combat-focused, you’ll find that some combat skills also give you interesting NPC interactions, and then you may find you’re enjoying it more than you expected…

Next Week

I’m trying to maximize impact with only low-cost game systems — systems that are easy to code, balance, and create content for. Hopefully I can achieve that for NPCs (there’s some worry about the text needed for NPCs, but I think it’ll be okay… I just need to write some more of them to see if I can really sustain that efficiently). If it doesn’t work, I’ll change it until it does.

Next week I’ll talk about how I’m using this idea of “low-cost, high-impact” in the combat system. It has different bottlenecks and problems, but I’m excited about how it’s turning out.

This entry was posted in Design, Project Gorgon. Bookmark the permalink.

13 Responses to NPCs as Systems Nexus

  1. Mike Grem says:

    Very cool ideas, Eric. One thing that concerns me though is when you mention that many PCs can be married to the same NPC; since you want players to care about these NPCs even a little bit, I think having everyone be able to marry the same NPC might make them feel more like a commodity than an actual person we should care for. I can imagine scenarios where people run out and “marry” the “best” NPC for what-have-you, and suddenly that NPC isn’t some charming character but practically a piece of loot for your home.

    I like everything else though. Almost every time you post about this game’s design, I think about how much fun me and my g/f would have playing it; so clearly, you’re doing something right =]

  2. Straw Fellow says:

    “some NPCs can be “married”, wherein they appear in your house. (Of course, it’s possible for lots of players to be married to the same NPC! But who cares?)”

    For some reason, the only thing coming to mind with this is “Hate the game, not the playa.”

    Despite that, I’m reminded of the conversation system that Elder Scrolls uses. They give you key words to bring up in conversation that can lead to quests and such, and you can gain those words by talking to people, overhearing conversations, having certain events happen, etc. etc. I personally love the system.

  3. Ibn says:

    Your Stargate story reminds me of something Babylon 5 did. For the first two seasons there was an extra on the bridge of the station, every once in a while he’d have a line like, “Sir, such-and-such a ship is requesting permission to launch.”

    Then in season 3 I think, the main characters decided to see if he’d be a candidate for getting brought in to the Big Heroic Conspiracy. But when Ivanova tried to arrange a discreet meeting, the guy thought she was hitting on him.

    It was an amusing little B-story in an episode that I don’t otherwise remember, but it really worked because he’d been on-screen so much.

  4. Hagu says:

    The verb idea sounds quite clever. ( Are there enough dinosaurs still extant for you to have a “throw bird at snake?” )

    Another interesting read. Which caused me to have an “Ender’s Game” thought – what if your new “game” is not what is described in the blog, but the “game” (i.e., ongoing interactive entertainment) is the blog itself? (I subscribe to the belief that the only way to not enjoy EVE Online is to undock. There is a sophisticated, dynamic system that provides lots to learn for months and it goes downhill a lot when you actually start using a primitive, slow, UI to interact with sociopaths.) Which is the politer and more accurate phrasing of what I originally typed which was “will the game be as interesting as the blog about the game?” I am looking forward to the game as well as the next blog post.

  5. I’m interested to see what the Storybricks system comes up with to avoid the annoyances of NPC schedules.

    Currently it’s not something we’ve really thought about. The first task is to get the tool to work well, mostly by getting good feedback from people who will actually use it. We’re still very early in development, and we’ve thought about a LOT of things but there are still a lot of issues we need to think about.

    Personally, I’ve never been a big fan of NPC schedules, though, for the reasons you mention. It feels too much like eating and drinking in RPGs; something that initially sounds kinda cool and “realistic”, but that really just adds a bit of busywork that doesn’t actually make the game any more fun.

    There are a lot bigger issues to consider when making more believable NPCs, though. For example, the way they don’t remember your actions from before. For example, getting upset and snapping at your friend is different than getting upset and snapping at someone you’ve just met, even if you’ve done a lot to help both of them in the last day or so. Or, the fact that NPCs tend to “forget” how you just treated them. Trying to give a present to someone you just threatened doesn’t really work. Hell, most NPCs forget you threatened them right after you do it, unless the encounter was heavily scripted and the script goes beyond a few minutes. To me, this is more jarring than the fact that a town of 33 NPCs only has 10 beds, or the fact that there are no bathrooms in the game.

    Maybe it’ll be a good sign if the worst thing someone can say about a game is, “hey, there’s not enough beds in the town for all the NPCs, even if they sleep in shifts!” Rather than the usual, “Why is this guy giving me a quest when I just threatened to kill his whole family for another quest?”

  6. DrBrydon says:

    I like the ideas of skill-based interaction, and friendliness. Very cool. I think this is the way Vanguard’s diplomacy should have ultimately worked, by adding an actual interactive element to NPC interactions.

    And his name was Walter, the guy who said, “Chevron six locked.”

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

  8. Tiber says:

    Looking back to when you were talking about prioritizing features, the actual code doesn’t seem too tough; most of the work comes in the form of having to write dialogue and favors. That stuff comes later, and you can always add new NPCs later on.

    With the NPC system, it does seem interesting, but I’m not sure about replayability. Do you have any plans to keep it interesting if you make a second character? What if being friends with some characters made other characters hate you? That would force characters to make decisions, and give some new options for 2nd characters. Do relationships decay if you ignore them for a long time? That could get annoying, but otherwise high level characters could just be friends with everybody and not need to bother with your interaction system anymore. It could work if your relationship didn’t fall below good just by not talking to them, but you had to work to keep the best ranking.

    Also, are relationships inter-related? If two characters are friends and I do something bad to one, will the other hate me? Will rumors spread and affect everyone in the town?

    Lastly, how do you plan to make knowing NPCs worthwhile? Everyone will want to befriend the blacksmith, but it seems like there would be a lot of NPCs who don’t really have much to offer. Perhaps it would be better to split up NPC roles to make the NPC system worthwhile. In most MMOs, a few shops sell pretty much everything. If there were more specialist shops with better items, it might help to make players work a bit more to get the best deals on everything they want.

  9. Jonathan says:

    What DrBrydon said ^^ But they didn’t name him until later when they needed him in an episode, Oniel (Richard Dean Anderson) just called him Walter and it stuck… (this info was in one of the extra’s dvds)

    I’m one of these guys that never reads the stories in games, however the ones I do pay attention to, have voice overs… Elder Scrolls is king in that for me. World of warcraft I never read a single text… I would go around clicking on the guys just to get them to say their jokes but that’s about it… In Fallout 3 I would read / listen to a few of them also… Star wars Galaxies, I didn’t read them much… I pretty much only remember one name, “lytus” and it was because the quest item given was called the “lytus artifact”.

    I’m not saying I DONT enjoy reading them…. just most of the time, I don’t see the point to reading them, so I don’t… I HAVE played some games where I have read every single little bit of text… (old style text rpg’s…) but only 10% of those, and It’s because they ALWAYS had very different options… (get item A) (fight for item B) and it wasn’t easy to know which was which from the options, so you were forced to read the text to make sure you knew which to hit. When I’m forced to read, I do enjoy it, eventually I memorize the ‘shape’ of the text and only quickly skim things if it’s the same text and answer accordingly.

    I do enjoy the idea of ‘closed shops’ Arcanum had that, and it was quite cool. Oblivion did too, and it would make a vampire’s life very interesting… I think if you do that, it would help to have a good “clock” indicator… most of these games has funky clocks that are hard to follow.

  10. Pascal says:

    It sounds really interesting and I would love to know how you will finally handle it ;)

    Getting in a relationship with a NPC is of course something that would make them a more round character as you as a player have to know / want to know more about them but that makes it important to give these special characters even a lot more to talk about you – otherwise it is more or less like Aeris.

    As Jonathan said the concept of closed shops is an interesting method to have the player to wait (and in the end spend more time in the game) for the NPC but you definitely have to tweak the time between each iteration to be suitable.

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

  12. Pingback: [Storybricks] How well do NPCs simulate real people? | Game Ninja

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