Monday, September 10, 2018

Character-Driven Game Design

Well, another day, another trailer.

These days, a lot of video game teasers and trailers are animated shorts with no relation to the gameplay. Today, League of Legends posted a teaser about an energetic, funny space ship crew and asked you to join up.

Of course, it's not an energetic, funny space ship crew game. It's League of Legends, meaning it's a MOBA - a plodding arena combat genre known mostly for toxic team play. In short, not energetic, not funny, not character-driven.

This is not a one-off. Virtually every major action game has been releasing character-driven shorts of extremely high quality and pretending it has something to do with the game in question.

It reminds me of the old days, when the cover art sold the video game. Except, of course, the cover art would be some Vallejo painting and the game would be eight pixel high sprites jumping from platform to platform.

Given the response I and many others have to these teasers, it's clear there is an interest in high-energy, cinematic, character-driven experiences.

But no games like that ever seem to come out.

Let's talk about it!

Hangin' Out, Havin' Ourselves a Parrrrtaaay

There are games with strong characters. For example, Telltale-style adventures. However, you can't really "hang out" in those games. The narratives are character-driven, but the games are narrative-driven. This is a bad fit for me: I care a whole lot about the characters I'm hanging out with, and the distraction of being told to uncover some ancient secret while fighting off invading ninjas just weakens the experience.

There are games where you can hang out. For example, open world RPGs. However, while you can hang out in the world, you can't really hang out with the characters. They're programmed to only really respond to specific world events. Worse, semi-open RPGs like FFXV or Dragon Age often ruin the hangingoutness with dull filler and melodrama in equal measure.

But I mod games. A lot.

A modded party member has the disadvantage of not being in the core event structure. They aren't introduced in some blazing cinematic, and they don't have loyalty quests.

This means that the modded party member has to make their presence known during normal play.

A lot of modded party members tell stories, crack jokes, sing songs, and randomly comment on anything and everything the game has to offer. This ends up making them feel more real than the core party members, at least if you're the kind of player that randomly wanders the world and never bothers progressing the plot.

We script characters to respond to world events. When we have control over the world events, we script them to perfectly match the specific events we've created... but that's a flaw. We need to get out of that habit if we want to let the player hang out with them. Because hanging out isn't specific.

There are lots of games with "specific hangouts". For example, chatting at the camp fire in Dragon Age, or private actions in Star Ocean. But these are tightly scripted events that are a facsimile of hanging out rather than actual hanging out. They're expensive to make and limited to play, and I think we can do better.

Structural Issues

We think about hanging out as being unstructured, but the truth is that it is very structured.

In order to interact with a character, you need a medium of interaction. A task, basically. Most tasks have a set of progressions that can be used to move the hangout along a fun path.

For example, if you're drinking in the bar with a fictional friend, what happens? Maybe they get drunk. Maybe you get drunk. Maybe they start a bar fight. Maybe someone at the bar recognizes them, and then something unfolds. Maybe they get hungry for real food and you change locations. Maybe someone else you know walks through the door and the dynamic changes. Maybe you look for dates.

Alternately, if you're playing video games, there's a lot of flexibility as to what game you play, whether you switch games, who tries hard or not, who wins or not, whether you start betting, whether people start getting way too into it, etc.

These progressions are at the heart of "hanging out", and they are also at the heart of how a character can express themselves.

Each character in the game can prefer different progressions. They don't need to be completely unique: a lot of characters can get drunk at the bar. But if the progressions go on for several elements, you'll see their uniqueness start to manifest: person A gets drunk and starts a fight, person B gets drunk and hits on everyone, etc. These are small, simple things to talk about, but this is the heart of how hanging out has to be approached: there's a task, and different characters want to progress or change the task depending on their personality, mood, etc.

This spectrum of progressions allows the characters to contextualize the event as they see fit, and to recontextualize a generic event ("at the bar") with a specific in-character event ("picking up guys" or "getting shit-faced") based on what progression they want to see.

Adapting to Existing Games

For example, in Skyrim you might be wandering the world map with Lydia, your dull, dutybound housecarl.

Skyrim has progressions built into its systems and maps. If you're wandering outside picking flowers, you'll run into options to fight monsters, go into dungeons, see wonders, change biomes, get rained on, go from day to night, find an ore resource, find a town... these are all perfectly valid progressions.

By understanding what progression Lydia wants to see while on the world map, she can make comments about what's going on. For example, if she sees a bear, she might say "that bear might threaten travelers, maybe we should drive it away."

This would be different if she saw a monster in a dungeon, where it's not a threat to a city. She might say "some skeletons ahead, I wonder if we can get around them." Or, if she sees a monster in a town, she might flat-out rush to attack, to protect the people of the city.

By allowing her to decide what the current context is, she can choose what progressions she'd like to see. This gives her dialog a lot more vitality than simply yelling "yahhh!" and charging at any monster you find.

However, this is still very shallow. Since Lydia has only dialog and the player has only action, it's a lopsided mess where it's difficult for the situation to progress in any meaningful way. In the end, it boils down to Lydia making comments on what the player chooses to do, just like in later games such as Dragon Age.

The simple fact of the matter is that hanging out is collaborative. Lydia can't really collaborate with the player in the gameplay as it exists.

Stop, Collaborate and Listen

One thing we can do to make this more collaborative is to let the player give dialog responses. However, I don't think that's a good approach, as it will lead to very repetitive interactions as you hang out over and over.

Instead, I would prefer to do the opposite: let the NPC offer action plans.

When Lydia says "that bear might threaten travelers..." two action plans might pop up and be selectable. "Take it out, I'll support you" and "let's ambush it, follow my lead" might be the two options (with the third 'ignore' option implicit). These are represented as dialog, but they're not simply dialog: they're functional plans. Not only do they determine Lydia's behavior, they can also embed bonuses: Lydia gets an attack boost if you tell her to take it out, and a stealth boost if you say you'll ambush it.

Moreover, these plans are excellent at advancing several progressions at once. Not only is Lydia advancing from "outdoors" to "defending the roadways", but she's also advancing along her "Lydia, stealthy supporter" or "Lydia, front line knight" character progressions. She may also progress on her personal opinion of you if you do particularly well or poorly, although remember that all such progressions are temporary. You'll hang out again some other time, and things will unfold differently.

These action plans can offer things the player literally can't do without the NPC, as well. For example, Lydia might say "oh, this is such a rich iron vein. Let's claim it for the city!" at which point you'll have the plan to claim it for the city: something you cannot do on your own, or with another character. Other housecarls might also be able to do it... but for other cities.

This combination of factors will hopefully make the player want to participate in these collaborative plans.

Save and Load Contexts

One technique that can help us add depth to the characters is to allow contexts to be shelved and readopted as necessary.

Our instinct might be that Lydia following us around is Lydia hanging out with us, and the whole day is one "hangout session". But that leads to problems, because the context might not progress at all. The player might literally gather plants for three hours straight, and Lydia's constant talk about what she'd like to do will get repetitive and futile.

Instead, she can simply shelve an intended progression when it falls through.

So if Lydia says "that bear might threaten travelers..." and the player doesn't engage, Lydia won't follow that up with "that skeleton might threaten travelers" and "that treant might threaten travelers". Instead, that progression is on hold.

However, if the player does engage an enemy on the world map - pretty much any enemy - Lydia will be able to instantly pick up the progression. "You'll never threaten another traveler!" she barks as you smash down a mudcrab or whatever. From there, she's in her "cleaning up the wilderness" context, which can be built any way the devs want. Maybe one progression is to attack stronger monsters. Another, less preferred branch is to attack weaker monsters. Monsters in another biome. Monsters marked as 'evil'.

This context is active, so Lydia won't say "that bear might threaten travelers..." because she's not in that context any more. Instead, she might see a bear and say "let's clean up this forest a bit!" in an attempt to progress along the biome path of her "cleaning up the wilderness" context.

Of course, once the hangout period ends (spending a certain amount of time in another major context, like in a city or a dungeon), the contexts can reset and she can start over.

This isn't an ideal solution, but it effectively allows you to script character events that unfold naturally and opportunistically as the player plays, rather than being segregated into their own quest lines.

Parties, not Companions

Probably the easiest way around the collaboration difficulties is to have more than one companion. If there are several NPCs, they can discuss and banter. This is something Dragon Age does well, but primarily by using random snippets.

We can choose to anchor the banter to contextualized progressions, instead. As an example, if you're wandering Fallout 4 accompanied by both Piper (reporter) and Curie (science robot), they'll both contextualize the wandering and have directions they want it to go. You get a sense of this in Fallout 4 as it stands: they have a variety of generic comments on situations you might encounter.

But by allowing them to comment to each other, you can build up a sense of progression even if the player ignores their preferences.

For example, if you find a few talkative ghouls, Piper might say "hey, we should get their story!"

If the player chooses not to do that and walks away, rather than something like "PIPER -2 FRIENDSHIP", Curie can disarm the situation with an excuse like "We cannot be distracted by such tings, we have important tings to do!"

Of course, the player avatar could theoretically also say that kind of dialog, but the player might not be thinking the same thing. The player might be thinking "sure, give me a second to raid this treasure chest first", which is very different from the dialog claiming it's something that won't happen.

If a third party says the dialog, being wrong is acceptable and can give rise to more complex lines of progression.

For example, if you do go back and talk to them, it's relatively easy to have remembered the original dialog, and now have different dialog. This can be quite generic. For example, as you approach, Curie might say "I remember zees people", then Piper can say "Now do we have time?" Or, if you're now just adventuring with Piper, she might say "hah, now that Curie's not around, we can do some snooping and scooping!" These are fairly generic dialog lines that can be deployed in a lot of different situations.

If we consider hanging out to be a task with a variety of progressions, then we can again run multiple contexts at the same time. We're progressing this specific subquest. We're progressing Piper's "search the wasteland for news" context, which may lead to her wanting to go home and write about it. We're progressing Piper and Curie's relationship with each other - again, it must be stressed that it's a hangout context, not a permanent progression. We're progressing Curie's "focus on the science" context.

By having many contexts which can be progressed, shelved, and activated at the same time, we can make the experience as character-cohesive as possible. From the player's perspective, it doesn't matter which context gets progressed next: they all have Piper acting like Piper or Curie acting like Curie, and for reasons that make sense.

It will require a bit of effort to create the engine to do this, though. You'll need to figure out the right generic dialog to switch or resurrect contexts, just for starters. It's not something I've seen done before.

New Hangouts

This is all about adapting the concept to existing games, but the truth is that we don't need to do that. We can make new games.

If they're intended to allow for this kind of thing right from the start, there's no struggle to make sure all the metadata you need exists or all the conversations have to work within some specific fiction: it's all designed from the ground up to work.

Moreover, it allows us to radically reduce the amount of content and gameplay we need to support, because this context-centric approach can use much smaller amounts of gameplay to accomplish the same thing. Rather than gameplay strongly relating us to the world, the gameplay is more about collaborating with a friend.

For example, you could decide to hang out with someone and spend the afternoon assembling ships in bottles. It's basically a minigame, but it's made much more interesting because there's a character-driven progression in play. The actions you take affect what the other people do, and what they want to have happen. Doing well at the minigame may be a bad idea... or, rather, doing well at the minigame may not involve actually building the ship in a bottle.

Hanging out and making ships in a bottle is not just about the progression of the task of ships in a bottle.

We've already talked about longer-term contexts like "Lydia's stealthy follower progression". Well, the whole point now is that the event progression is more about the personal contexts and progressions that our friends are going through. Rather than having one preferred contextual progression, the progression they want from this event is influenced by the progressions they want from their other, personal contexts.

You've going to have very different "ship in a bottle" minigames depending on whether your friend is drunk, angry at her parents, mourning the loss of a friend, nervous about a piloting test, or embarrassed that you found out she likes a terrible TV show. The progression of the minigame is not the point: the point is the progression of her personal contexts, as expressed through the progression of the minigame. Hell, she might even play the minigame without the player's input at all - the player can just watch.

We can spread this idea even further, into the world's overall state. Her personal context affects how well she can fly the ship, or how aggressively she fights. Whether or not there's actual gameplay involved with those or if it's just some flavor dialog, it will convince the player that there's a world and stuff happening.

One possible example leading towards this would be Dragon Age 3, just the parts where you decide who to send where, and for what purpose. You could hang out with someone, and then when you send them on a mission, they get better or worse results depending on how they feel. Their personal context will then be altered by the mission they just went on, so it's a good time to hang out with them again...



Anyway, those are some of my thoughts.

What do you think?

2 comments:

Anonymous said...

I think many recent RPGs (Pillars of Eternity etc.) would be much improved if they didn't focus on a big party of "shallow" adventurers and instead let us choose one "deep" friend between two or three. Because not only a bunch of playable units destroy any illusion of character when you minmax through the game, but it creates a lot noise and stress, when you leave a hub and have to choose which content are you going to miss next. Also I think that any progression of your relationship with other characters should be hidden, quest lines a la "hang out with your buddy three times to unlock the next event" do not exactly help immersion.

Craig Perko said...

I largely agree, except I really do like an ensemble cast.