Monday, June 09, 2014


I played a lot of Skyrim in the past few days, with loads of mods put in. So I'd like to talk about companions.

When I first tried to play Skyrim the week it came out, it was a mess. I didn't get very far, but I did get far enough to obtain my first party member, a knight-style character. I liked her design and voicework quite a bit, and I clearly remember thinking "oh! She might make this game a lot more fun!"

Unfortunately, the personality hinted at in her design and snippets of dialog never really came out. A few hours of mutely fighting at my side like a robot, and I realized she was going to be just as empty as a make-your-own character from back in the days of AD&D RPGs. Then I stopped playing.

Similarly, in Dragon's Dogma you can make your own party member. I was excited by this, because it gave me options as to voice and personality and stuff. I remember clearly thinking "oh, this is going to be so cool! I get to build the dynamic between the main character and their sworn companion, Frodo-and-Sam style!"

Like Skyrim, this was a hollow promise. As anyone who's played the unpatched original version of Dragon's Dogma knows, the pawns (NPC party members) only have a few voice clips. They all comment on the same things in the same ways, just with a different voice actor. None of them interact with the main character in any meaningful sense, they just randomly state trivia and gameplay hints. Their personalities do matter in combat, at least to some extent, although it's a bit hard to tell because combat is so chaotic... but combat is also the part of the game where I don't really care about people's personalities as long as they get their job done.

Even in my super-modded ultra-dense-content version of Skyrim, the companions are only a bit better - they're about at the level of Dragon's Dogma pawns, now. But these aren't characters I created: a scripted, set character should have a lot more personality because you know everything about them, their place in the world, how they would react to things...


I think maybe we should consider if we can make characters interesting.

When we old farts think about interesting NPCs, most of the time we'll fall back to Baldur's Gate or Planescape: Torment. "Go for the eyes, Boo! RrrAAAAAH!"

Even though few of them were as interesting as Minsk, even the totally stereotypical characters had a lot of personality. They expressed this personality because they were tightly related to the world: they had scripted lines of dialog to comment on a variety of scripted plot events, and they could fall back on general comments based on their alignment.

Modern Star Wars and Mass Effect games have normally gone the opposite direction. Few of the characters have much to say about the events that happen on the various worlds you visit, but instead you can talk to them and they have a fairly deep and unlockable personal story. I think this is a bad way to do it simply because it relies on a horrible dialog system and an unrealistic way of interacting.

Dragon Age games have a bit of both approaches, often confusingly and stiltedly so. However, they have one additional brilliant detail: the characters on your team interact with each other randomly as you wander around. This is the one thing Dragon Age did better than anyone else.

The problem with all of these games is that the NPCs are scripted in advance. They have a giant table of everything they could possibly encounter, all the situations. If something comes up that's not in the list, they fall back on extremely bland commentary that actually makes them less believable rather than more. It's actually even worse than that: few people want to interact with the NPCs in the exact way that the developers assumed, but since the NPCs are stuck with the dev assumptions, you are forced into specific routes.

Mostly, this is forced onto the devs because they need voice-acted characters. If they have to have specific audio clips, they need to specify all the audio clips. We're going to assume that we can ignore that restriction.

With that in mind, how can we make characters that feel deep and interesting throughout the game? Can we create a character-centric RPG, one where the plot is less important? Imagine an open-world game where it was literally open-world: not only could you go anywhere, but there's not even any plot-on-rails to confine you. The important things in this world are you and your companions.

Rather than trying to design perfect characters to push you into a heroic tale, we're going to assume the characters are flawed. Generally likeable or good, but quite flawed. You need flaws to get a grip on a character: a character without flaws is just a setpiece.

Let's put aside the methods discussed earlier and talk about a few additional methods of making a character matter to the player. Most of these hinge on the concept of a "mood", which a medium- to long-term personality change characters adopt when faced by a situation their personality cares about. Also keep in mind that this is all just theoretical crap.

Pushy persistence
A character needs to push into the player's line of sight. A character that quietly does their job is invisible. Therefore, our characters have to have things outside of combat that matter enough that the player wants to pay attention.

I've chosen to use moods for this. Moods are caused by a variety of situations, most of which the player can plan to either avoid or cause if they are diligent. For example, a particular character might be particularly unhappy when they get badly injured. The player can keep them to the back, or have them retreat when lightly injured to prevent the mood from forming.

Characters that enter a mood will pester the player, making it clear that (A) they exist, (B) they are now in a mood, and (C) what their personality is. This is better than simply saying "character X is now in mood Y", because it pushes the character's character into the player's face.

In addition, not all characters get along. Their personalities (modified by mood or not) may be incompatible, in which case they may actually cause more mood problems, and there will be a lot of complaining to the player. Characters that synergize well will push each other into good moods, which offer statistical bonuses instead of penalties.

Moods need to be tended by interacting with that character. Not "talking to", but "interacting with". Talking might work for some minor moods, but otherwise you'll need to spend game-time doing something they find interesting, or going someplace they can relax or have fun. This also serves to push the character into the player's conscious again.

This system needs to be tweaked to keep it from getting out of hand, obviously.

That brings us nicely to the concept of micromanagement. Now that the character is pushing themselves onto the player in some way, we need to make the player want to push onto the character. We do this by rewarding micromanagement, at least sometimes.

For us, micromanagement is all about mood alteration. Moods are not integers: a mood has a specific rank and within that rank it can be steadily degraded or enhanced until the next rank is reached. This is often time-locked, too: a mood cannot change more than one rank per day/week/whatever. By micromanaging, you can steadily degrade or enhance various moods, including moods that will permanently alter how the character behaves towards the player.

In our approach, we have specific kinds of micromanagement. None of these are required, they're just ways the player can choose to interact with the characters in nonstandard ways. These would be most valuable in attempting to "rehabilitate" problematic characters: heroic and good-natured characters probably won't need you to push this persistently.

1) AI overriding. Our characters take a variety of actions automatically, varying by personality type. This might include spending their personal cash in a town, equipping gear, grabbing/equipping loot, scouting ahead, separating from the group temporarily, eating foods, casting noncombat spells, and so on. The player can tweak these behaviors, enabling, disabling, or requiring an ask. This kind of micromanagement is not intended to optimize performance, since the default behaviors are not very wasteful. Instead, these actions have small but cumulatively important effects on moods, and the player can use them to help with that.

2) Social pestering. The social AI in the game has several modes it enters depending on the perceived social situation, and that's made visible to the player by their animations. By staying near/far from a character or avoiding/looking in their eyes, you can force the social AI into specific modes. It takes time for the system to enter a new mode, so you don't have to continually stare: just once every minute or two will work. Specific moods grow or diminish steadily in specific social modes - for example, a gregarious bard and a scared child both want to be in a close social mode, while the annoyed magician would prefer you to keep your distance.

3) Action pestering. By keeping the character busy with specific action requests, you can prevent them from taking any mood-caused actions of their own. While this may not improve their mood much, it will keep them from doing anything destructive or giving anyone else a bad mood.

Personality Leveling
Why stick to stats? When a mood ends (good or bad), the character gets growth points. Spend these in a growth tree like the new FF games - except you're altering their personality and behaviors bit by bit instead of their combat capabilities. Change what causes moods, or what moods do, or how they behave while in moods. Moderate their more annoyingly severe reactions. Maybe unlock a romance branch!

If you've played the original Valkyrie Profile, you probably know the basic idea.

It's not just about player-centric interactions. Party members should also relate to each other. And maybe to non-party NPCs, or the world in general!

There are a lot of relationships characters can form with each other under the guidance of the player. Sure, hooking up romantically is a few of those options, but there's a lot more potential hidden away in there. Mentors, rivals, bromances, etc. In relationship to non-party NPCs and places, you have things like sponsorship, fondness, patriotism, etc.

Some kinds of relationships will cancel or cause certain moods as long as the characters are together. In this way you can set up your party to never drop into a bad set of moods by carefully balancing out their relationships with their personalities to cover the most common problems. Perhaps you could even set up a party party, where everyone's always in a great mood. This is also really the only way to have characters with badly conflicting personalities on the same team.

Other kinds of relationships set up opportunities, where you can rapidly create or deflate a mood by having that character interact in that way. This is normally the kind of relationship you would have with places or people not in the party, since it is action-based rather than presence-based.

Other kinds of relationships set up statistical bonuses. A flow of cash, mana, willpower, or even new equipment. These are both in-party and out-party.

The problem with interconnectivity is that once a party grows stagnant, it also grows stagnant. So if we're going to rely on this, we need to also shake up the party fairly often. Which leads us to...

Scope changes
Characters shouldn't always stay in your party!

While it's probably not a good practice to arbitrarily snatch characters away, there are often good opportunities for characters to do something on their own. Stay behind to help a town rebuild, take a particularly wealthy caravan on a trading run, oversee a castle's construction, and so on.

These are often things that would be side quests, so what I would recommend is that when you encounter a side quest, you can either accept, refuse, or send someone off to help them!

Characters that are away send regular missives to keep in touch and remind the player that they exist. More than that, though, it's important that the player continues to have some amount of interactivity with those characters. Therefore, over the course of the mission, there should be several opportunities for things to go differently, and the missives should ask what they should do.

Some of these might be choosing between various rewards - "They offered me a lightning sword or fleetstep shoes. Which do you think is better?" Some of them might be about choosing between long-term and short-term - "Do we want 5 gold per day from now on, or 500 gold lump sum?" Some might be about choosing between personal gain and the world - "I can take this 500 gold, or I can put it back into the orphanage." Some might be about choosing two different world options - "Do we want to build an orphanage or a library?" Some might be about taking care of things automatically or manually - "We found a den of thieves. Do you want us to handle them, or will you stop by and do it with me?" Some might be mood-based - "I can do this better, but it's going to put me in a real bad mood."

The other ways
While I'm not going to talk about them again, there's also the already-pioneered methods: character-world interaction, character-player interaction, and character-character interaction.

There are also a huge number of other things you can consider, such as a character attempting to learn what the player likes and adapting their behavior accordingly. I'm sure there are others.


Now, this is obviously all theoretical. Just throwing ideas against the wall. Let's consider feasibility anyway.

The first and maybe biggest barrier to this is the concept of voiced NPCs. When you have specific lines you need actors to read, you need to specify all the lines in advance. So we have three options: we can either try and cram all the variety of things we need to support this system into a few hundred lines of dialog, we can throw away the concept of voiced characters, or we can use computer-generated voices. If you're a small team, voiced characters probably aren't on the menu anyway (pricey!), so you can throw it away. CG voices are not very convincing yet, so that's only viable if your setting is some kind of future robot setting.

Even if we assume we have no voiced lines, we still need have these characters able to say the variety of things they need to say. This is not too big an issue with general commentary - just a few dozen lines of dialog per character, customized with embedded variables to make them address the situation properly. The problem is the specific commentary.

See, if Anna and Bob are characters in our game, Anna and Bob have no problem saying that they don't like your approach to a particular ethical situation or complaining about getting hurt. They don't even have any difficulty expressing love for each other or squabbling or any of that. But that's when it's Anna and Bob.

If it's "Anna the court magician for the loyalists" and "Bob the miner who joined the rebellion", well, now you have a lot more information. You have to come up with something immersive. Something where Anna and Bob can squabble over specific in-world things such as loyalists vs the rebellion, and hoity-toity mages vs blue-collar miners.

I think the only way to do this is via a faction system, where various factions are established as having various relationships to each other, and these automatically reflect onto the characters that are part of the faction. However, this is difficult to phrase in-game because everyone needs to have their own way of talking. It's tough, but I think the only thing we can do is give every faction lines of dialog that are full of embedded variables that are replaced by snippets of a particular character's dialog library.

For example, the miners might have the phrase "%amplifiedAddress% %optionalExclamation% %targetFactionMembers% should try getting your hands dirty %rareTimespan%". This would translate to something like "Maybe you mages should try getting your hands dirty once in a while" or "You fucking magicians should try getting your hands dirty sometime!"

This kind of thing is very annoying to write, but it's the only thing I can think of that would be modular enough to support characters and factions added in later. The relationships are what matter, not usually the specific target faction. The miner's don't have a mage-specific line they use, it's a line they use for any group they think is hoity-toity.

And if Bob has a hilarious accent, he can use a combination of token overrides and text replacement to get a more personalized result.

Modability is a huge concern for me. I want players to be able to drop in new content.

I don't really want players to launch the game and make 6 unique characters as they see fit. I'd much rather that all the NPCs be carefully built to be fully world-immersive. Players that really want to add NPCs can do so, but it is a lot more work (mostly dialog library writing, and perhaps personality level-up tweaking). In exchange, it's a much better result.

Since we're talking blue-sky design, I also want players to be able to add factions, places, spells, weapons, activities - anything that could conceivably be added to the game. While many things should relate to a character's specific in-world connections, we also want them to react to things that didn't exist when they were written. If Anna hates "dark sorcery" and later "necromancy" is added as a separate group, all the modder has to do is say that necromancy defaults to dark sorcery. Now Anna hates necromancy and will use the same dialog lines.

Well, all of this is just hot air. I don't have an RPG in the works. I'm just going on and on and on and on and

No comments: