Elder Game: NPCs as Systems Nexus

From Project: Gorgon Wiki
Revision as of 14:37, 12 December 2023 by BetaNotus (talk | contribs)
Jump to: navigation, search

This Blog Post was part of the Elder Game blog. It was posted by Citan on August 5, 2011.

Additional Blog entries can be found on the Developers page or in Category:Game Blogs

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.