Wednesday, June 22, 2016

Technical Stuff

Last essay I posted about how we might think of using the power of a linear RPG in a nonlinear way: we can use predefined arcs to strongly seed random content. I got a fair number of people saying "how?", which is not surprising because my explanation was "It's easy... (There, I just cut twenty pages from this essay.)"

Well, here are those twenty pages.

We need to generate random content as the player explores, but the issue is that we're not really trying to create "a random dungeon". Each content chunk that unfolds is huge and bombastic, in linear-RPG fashion. We don't enter a random level of a dungeon: we go to a whole new star system with a bunch of plot events woven into it.

This is both easier and harder. It's easier because this part is so much easier than generating random dungeons. It's harder because we do, eventually, have to generate random dungeons.

The heuristic for generating content is simple: while it can be largely random, it needs to "make sense" to the player.

One method of doing this is keyword filtering. So all the pieces we use (factions, types of places, scripted NPCs, events) have plus and minus keywords.

For example, a toxic jungle planet might have +colonize, +toxin. This means the planet generates those keywords.

By filtering to keep things matching keywords, we can link the planet to subsequent (or prior) pieces of content. When placing something on the planet, we would choose something that hits at least one of those keywords - for example, a new colony. It has the keywords +colonize, +economy, -monsters, -toxin.

The new colony matches the colonize keyword and conflicts with the toxin keyword, both of which are considered good things from a storytelling perspective. So we know that any quest lines involving the colony can "spread" to the wilderness of the planet either in alliance (+colonize) or conflict (!toxin), which allows us to generate minor sidequests such as "Go find toxin samples" or "go help our scouts look for more colonizable locations".

Creating a big list of such sidequests is pretty straightforward, and can use dangling dialog fragments that get hooked into whatever faction is involved. It doesn't much matter whether the colony is full of humans or elves or quarians - anyone can say "go find toxin samples" and have their combat units seeded into a generic map.

The key to this operation is that now there are more keywords in play. The planet alone only had two: colonize and toxin. Now we have economy and monsters as well, and can place elements that match any of those. This can be used for "large" pieces of content (an orbital trade station that has the +economy tag) or "small" content (a sidequest where a batch of monsters is discovered, but it's just a sidequest).

You can see how this creates a web.

Moreover, we've just been talking about places, but each place has to be inhabited by at least one faction, which grows the keywords even further. If it's a quarian colony, that's radically different from a human colony, and that will be reflected in the keywords in play, which in turn will change the sidequests you'll discover.

The quarian keywords are pretty complex, with tags like "+life-support" and "+scrounge". These keywords are unlikely to match very many big places, but they will generate sidequests such as "the life support is offline!" and "scrounge us up some stuff". They may also generate NPCs involved with those keywords, or sub-maps such as garbage depots and life support facilities.

These submaps and quests would feel random and arbitrary if linked into a human colony, since the humans exist to talk about underdog newcomers struggling to integrate. But those missions are core to the quarian experience, so it'd feel pretty good and suitable no matter the exact situation.

Subquests can involve just one place, but in general we'll want to create threads. We should engineer our subquests to do just that by having keyword-driven subquests that involve multiple places, probably all linked by the same keyword, although often inverted (IE, a +monsters and a -monsters location: monsters flood from one place to the other.)

Simple example: the quarians might have a life support problem at their on-world colony, but if there's also a quarian ship in orbit, they both have that keyword. We can use a two-site variant on the mission, perhaps "we need life support components from the ship" or "both have life support failing for the same reason" or even "the ship's life support is failing and we'll need to bring the crew to the colony as it explodes!"

(There's no reason a sidequest can't alter a location, either by destroying it, changing it to a different location, adding/removing keywords, etc. We just need to mark those quests with suitable dialog tidbits to make the player aware that they're about to Change Things and give them an option to back off for a while.)

By bringing multiple sites into a sidequest, we create a reason for players to move. Backtracking sometimes has a bad connotation, but in this case it's absolutely vital to provide a sense of place, a sense that things exist in the same world. Because of this, our sidequests should often have "feelers" written into them - for example, a human on the trading station above the planet might say "the colonists on the planet have been ordering a lot of toxin filters, but we're totally out..."

These can be opportunistic optional elements. IE, the sidequest is (1 +life-support location) with a bunch of keyword feelers for luring the player in, like (+economy: "Totally out of those toxin filters") and (+cutting-edge: "Our filters aren't compatible with their old junk...") None of the feelers is necessary: you can simply trigger the mission by vising the location. But they link the location to the rest of the universe and make it feel real.

That's the simplest secret: linking the random elements together to make them feel real. Whether that's by having missions that span several locations/factions or having a mission that simply gets mentioned in other places.

When generating content, it's also helpful to generate depth-first instead of breadth-first. That is, rather than generating each planet of the solar system, then generating the things on each planet, you should instead start with the most important planet, generate a location on it, generate sublocations for that location, generate a new location, etc. Then generate the next planet when that planet's filled up, etc.

The reason for that is the keyword density. If you generate all the planets without any subelements, each generated planet is only going to "read" the early planet keywords and the star system's base keywords. IE, things like "radiation" and "inhabitable", but not things like "scrounge" or "economy".

By generating the densest areas first, you allow the outlying locations to support them. By the time we get around to generating the moons of the gas giant, we have a big list of keywords. Populating the moon, we'll be able to filter for matches against existing content, giving us moon bases that support the overall arc of the core content. IE, we'll have a moon base related to economy or life-support or whatever, rather than just a random generic moon base.

Visiting that moon base will show us a small selection of sidequests related to the specifics of the base (+economy: "Get two corporations to play nice together", +economy: "pirate attacks are interfering-->moon base destroyed"), but also a bevy of feelers reaching out to content in other places ("The colonists keep ordering toxin filters, we're out of them!", "I've heard there's monsters on the planet, big things." "Man, did you hear about the derelict they found in the asteroid belt?!")

Well, there are a lot more details involved in actually implementing that system, such as determining what kinds of content can exist within what kinds of content, how to cram actual maps into those spaces, how to convert maps from combat mazes into walkable areas and back, etc. But hopefully you have the basic idea: it's all about keywords and piggybacking those keywords to connect objects.

I hope you get that, because we're going to kick it up a few notches.

One thing worth remembering is that we're fundamentally a linear RPG. The area the player can kick around in is targeted to a specific tactical situation, with specific ideal levels and equipment. The player will kick around that area as long as they want, and only let the game move forward when they want to allow it.

A lot of events and missions have outcomes that matter, at least a little. These things should be clearly marked so that the player doesn't accidentally stomp on their own stomping ground. For example, if the "failing life support" mission will result in the ship being lost, be sure that the mission start trigger gives the player an opportunity to back off.

But more than that, outcomes frequently trigger new missions.

This is important, because we want to present a specific (medium-low) sidequest density. It's possible to generate an infinite number of sidequests, especially when we have three factions in a location and the result is 15 different keywords. So... we lock some of the sidequests to keep the number the player is faced with under control.

The key here is that some sidequests have a notable outcome - for example, exploding the ship, or introducing a new keyword. These are good excuses to scuttle the existing sidequests and introduce the next batch. This can be due to the passage of time... or due to direct causality in the case of introducing a new keyword, even if the "new" keyword already exists.

For example, you go to the quarian colony. You fight monsters (+monsters), settle a zoning dispute (+colonize), and scavenge up mining rig parts (+scrounge). But when you decide to tackle the life support sidequest, you get a subtle warning, since you get the option to back out before you start. When you start, it turns out to also be affecting the ship above and, by the end, the ship has exploded and the crew has joined the colony (--> add +colonize). Scrap the leftover sidequests and introduce the next set.

Although the +colonize keyword already existed, now that it has be re-added, it's relatively easy to mark any new +colonize missions as resulting from that disaster, as described by dialog fragments in the disastrous mission. IE "We've been stranded down here, and it's been tough to keep things together..." then transition over to the new mission's dialog "... my child has gone missing, please find her!" Even if the dialog is a bit disjointed, it creates a sense of continuity.

This sense of forward progress is pretty tangible and fun, but even more important, it allows us to create a core arc for the entire content pack.

As I mentioned in the previous essay, your various main characters will represent core arcs. You may also have other core arcs that aren't character-centric, although you might not need them.

These arcs contain batches of content that get slotted into new content opportunistically. These create keywords before the content is even created to begin with, and that means the content will likely be created with those keywords matched in.

For example, Tali's working her way up her "quarian destiny" arc, and this particular event is about examining a new habitable world and seeing if it's suitable for quarians (and finding out it isn't). In addition to a bunch of specific content (maps, conversations, etc) it comes with keywords: +inhabitable, +toxic.

Well, we create the star system. Those keywords mean nothing to a star. We start to create the first planet.

We automatically filter for existing keywords, and we come up with a list of planets that are either inhabitable, toxic, or both. If we create a planet that is inhabitable and toxic, the quarian arc is confirmed and immediately slotted in, with any locations in the arc being instantly established as if they were randomly generated. This will, in turn, drive the rest of the system to create compatible elements and a web of missions that are properly themed.

If there never is a location with a suitable combination of +inhabitable, +toxic, the arc is left on the back burner and it'll try again later, maybe next content chunk.

We can afford to be laid-back about it because we probably have 4 or 5 arcs vying for our attention, and at least one of them is likely to find a suitable setup. We can even program the arcs to have flexible sub-events that can happen if we don't fill the main event, although the autogenerated events are probably fine.

The big advantage of arc events is when they get really involved and dominate the content. For example, near the end of Tali's arc, we have a dedicated location where we fight across a geth carrier group, and then after that another dedicated location where we go to Tali's homeworld and do all that stuff about hacking the geth and then fending them off, etc. While other random content may be wedged into the cracks, the majority of those locations are set in stone, and the progression should feel very consciously-chosen and solid.

One way to duplicate that feel is to have action setpieces - missions that end in epic encounters.

Many locations can have setpieces designed into them, and the setpieces can have a variety of zesty encounters programmed into them. Quests can opportunistically dump you into these setpieces for the finale, and they can be populated by the proper factions as required.

For example, a mining base might have maps for mines, refineries, corporate barracks, and a cargo dock. Each of those maps have setpieces: an underground rail system, an area full of conveyors and pouring molten stone, endless rows of destructable beds and tables, or a cargo ship desperately trying to take off.

Action finales are programmed into those locations, not into the missions that are climaxing. The underground rails normally feature track-switch puzzles, but in an action finale, it's a race through the dark while fighting off other cars. The refineries normally have the machine area blocked off, but in the action finale it's a battle across the conveyors while molten rocks splashes everywhere. The barracks normally feature a maze of flimsy-walled rooms, but in the finale it's about soldiers (or monsters, whatever) smashing down those thin walls and sending cheap furniture flying into heaps. The cargo area normally has a cargo ship sitting in it, but during the finale its turrets are firing and exhaust ports belching as it strains against the docking clamps...

Because these events are flexible, they can either be graded by impressiveness or have their impressiveness scaled to match the requirements. Every time a mission in a content chunk has a finale, the next finale should try to be one step up.

So if our first significant mission ends up in the cargo dock, the ship might be belching smoke and asking for permission to launch, but not actually doing anything substantial. But if it's the tenth significant mission, it'll be firing turrets, blazing the main engines, belching exhaust, and pulling around the docking clamp arms in dangerous sweeping patterns, maybe even on a timer.

Although there's no fundamental connection between the quests that cause the rising action, the fact that the rising action is rising should be enough to carry the content.

The question is: what's the transition to the next content? What's the final boss?

This would probably have to depend on your game, but my instinct is that there is a bank of generic content arcs, represented by a councilmember's interest in the location. Assuming there's no core character arc, a random councilmember arc is brought into play and serves the same purpose. These arcs are suitably generic, but always culminate in a final battle of some kind - for example, "exterminate the pirates in this region" or "find out if there really is an gene-smuggling going on" or even the innocuous-sounding "lay the foundation for a trade agreement".

Anyway, that's the bulk of the technical stuff I skipped over.

Let's see, the only things I can think of that I skipped are the specifics of the player's experience in each major content chunk.

Remember that this is a linear RPG and that grinding is a thing: make sure there are plenty of permanent enemy maps the player can grind on.

Also remember that missions can only take control away from the player when the player volunteers for it... but that they shouldn't feel shy about doing that once the player does! I gave an example about an exploding ship, but the same holds true for missions that split the party or force the player to crash-land for a while or blow up a world they used to visit or whatever.

The two biggest times the player volunteers are A) when they defeat the end boss and B) when they set course for the new star system. Therefore, the first mission of a content chunk and the last moments of a content chunk should take control away most aggressively, to show the coolest things and make the most important changes.

Monday, June 20, 2016

Nonlinear RPGs

Linear RPGs and open-world RPGs are not the same.

Linear RPGs allow the player to chew on things for as long as they like, then poke the sleepy plot into delivering the next big chunk of content. This has a lot of pros and cons.

From the dev's perspective, the pros are powerful. Since the content is gated and carefully scripted, the dev knows exactly who the player is playing, exactly who is in their party, exactly how strong they are, exactly where the plot is, exactly what they've seen and haven't seen. No matter how long the player spends on the Shining Plains, they can't buy anything better than a cutlass and a fireball spell.

In addition, the player has a very crisp trigger. They know how to poke the plot into action: fight the boss, cross the monster bridge, say "I'm ready" to the queen. This action is always very obvious and voluntary, and the player will trigger it when they are ready to experience the next content chunk.

These two things combined allow the devs to make sweeping content chunks. When you cross the monster bridge or fight the boss, things change. There's cutscenes. You're fighting your way out of a dungeon. One of your party members leaves, another one arrives. The world is blown up and there's no way back to where you started...

It can be precise and moving, because you know exactly what the player is doing and who they have with them. It can be big and bombastic because the player explicitly volunteered to go through it.

Open-world RPGs don't have these advantages, because the majority of the world is already available from the start. A player moving from point A to point C isn't really "volunteering" to experience a big plot event at point B. Hell, you don't even know who they are or who's in their party, not when you're creating the content.

Because of this, open-world RPGs typically have hundreds of tiny threads of content instead of large content drops. They also adapt the combat challenges by level-scaling.

Both of these leave the experience bland and featureless in comparison to a linear RPG with its more nuanced challenge curve and bombastic, personalized plot events.

Linear RPGs have downsides, too. The big, obvious one is that their appeal is limited. If you don't like the shoes you're stuck in or the way the plot is going, well, that's too bad. If you want to start over, you'll have to go back through the same shit again, there's no fast way to move through those chapters aside from being more efficient with grinding.

There have been open-world CRPGs since before "CRPG" was a term, but they only came into their own when computers became strong enough to convincingly render the world and its responses to you. This became a more reliable method of drawing the player in than the limited appeal of a carefully-written linear storyline.

Big, splashy, personalized stories were left on the cutting room floor... but I think it's a mistake to assume they're gone for good. Not only is there power in the stories they tell, there's power in the fundamental pacing of a linear RPG. The way the content unfolds is really strong.

What if we could come up with a new RPG subgenre that keeps that power but adopts the freedoms of an open-world approach?

I call it "nonlinear" RPGs.

Imagine if we were going to write Mass Effect as a nonlinear RPG instead of a linear one. The characters and stories would feel the same, but they would silently adapt to the player's choices. Not just "paragon vs renegade": wildly veering so that even the basic setups could be avoided or inverted. Maybe you play a smooth talker with a good record, and you convince the council to take immediate action against the Reapers and the traitorous Spectre. Maybe you play Han Solo, and just buy a crappy ship on your own and fly off to have carefree space adventures.

If it was an open-world game, these would be viable. You have that level of variability in the recent Fallouts, for example. But Fallout doesn't have the heavy "WHAM chew chew chew WHAM" feel of a linear RPG - it's more like wading through vanilla pudding.

In order to make stories adapt to your choices, you have to write variations for every choice the player can make. If you have one big story (like a linear RPG), the cost spirals out of control very quickly. So open-world RPGs use lots of tiny, independent stories. It gives the player feedback and tells them the game accepts the way they're playing their character, but because they're small and have so little effect on the game world, you can write their variants cheaply.

Fortunately, linear RPGs don't need that responsiveness nearly as much. The linear RPG already knows how you're playing your character: they provided it.

But... that's where we need to go to find the kernel of what comes next.

If we want a linear RPG to let the player play a wide variety of characters in a wide variety of ways, we need to have the game respond to those variations.

A linear RPG's "gateways" are always crystal clear. A boss. A bridge. A queen's speech. The player trips them whenever they decide they want to, and the game moves forward.

It's easy to create random events. It's even easy to chain them and thread them so you have repeating villains or escalating challenges. It's easy to make random maps and random subquests. (There, I just cut twenty pages from this essay.)

But what isn't easy is to make the experiences adapt to the player's choices and hit hard without being annoying.

Killing off a character or blowing up a place or putting you in a long dungeon sequence is really, really annoying if it isn't done well. It's not about build-up or epicness: it's about suitability.

In a linear RPG, the characters and places and factions all exist to tell a story. Each one represents a major arc or a piece of an arc in the fundamental pattern of the game.

In Mass Effect, Tali's character represents the attempt to take back your future from the mistakes of your parents. Garrus represents the failings of The System to deal with things, and the lure to work outside it. Wrex represents the struggle to provide a future for people that actively seem to not want one. And Liara represents blue nerd ladies that want to have sex with you.

OK, not every character is equally interesting, but they all have arcs that thread through the games and give you a gateway into the beating heart of the story line. The planets, too, represent tiny pieces of those arcs, allowing the arcs to exist in the game world concretely, instead of as a talking head. Factions like the Spectres and the Council also push the plot arcs along in a powerful, immersive way and create a multi-planet threat to hook things together.

And this is our method.

We aren't generating storylines. We are generating random content, sure, but it's anchored into the characters, factions, and scripted plot events that are the best our universe has to offer. Our random content offers a foundation, a stage for those core ideas to dance on.

One of the issues of open-world games is that the player can choose to be anyone, and it's very hard for the game to figure out what the player's self-image is. Thus the frolicking, daisy-picking assassins in Elder Scrolls games. The game tries to guess which plot arcs will be interesting to you by placing them in places those kinds of characters are likely to go.

But our games have a party, and our party members embody specific plot arcs.

If I'm interested in how the system fails us and what happens when we work outside it, I take Garrus. If I'm interested in the fate of the ancients, I take Liara. If I'm interested in struggling to build a future for people that don't want your help, I take Wrex. Not as a conscious choice, but because I am drawn to their characters right from the start.

Of course, the party structure of existing Mass Effect games wouldn't work, since you basically have everyone all the time and nobody ever leaves or comes back.

It's easy enough to replace that structure with one where the player only has a crew of three or four, and they frequently leave to go on some arc-related personal mission you can't help with. (Of course, you'll meet up with them later when the next piece of the arc comes around...)

This means our arcs have to be written with a bit of flexibility. While the core arc has a specific chain of events (for example, Mordin's plot involves rescuing a research victim, helping her, then distributing a fix), it should also contain a number of background events suitable for A) seeing Mordin repeatedly and getting to know him even if you don't trigger his join event, B) filling out random content with evocative situations (his commenting on the evil bug monsters, for example), and C) Mordin's background work after he's joined and then left and then is kicking around waiting to join again.

With these elements in place, the player would "naturally" be attracted to the local NPCs that seem the most interesting. Which will, of course, be arc characters suitable for adding to the party. Once the party is filled up (with maybe one spare), the others are too busy with their personal situation to join your team right now.

Don't choose to take Liara? Well, Liara will also show up in other space stations or on other planets, chatting about how she's chasing down a new lead on an old ruin. She may even have a small sidequest for you. And, if any of your party members leave for a while, you'll suddenly find she's pretty easy to recruit!

Now that your party is known, the next time you trigger a major content burp (fly to a contested star system, argue with the council, defeat a boss, etc) it'll be laced with the next arc events for your party of characters.

Not tiny drips and drabs, either: the next content batch is a big, bombastic event. A whole new set of planets, characters leaving and arriving, crashing your ship and fighting through a jungle...

This is also easy to mod. You can introduce additional characters with their own arcs pretty easily. Although the character arcs don't really overlap, they do exist in the same space: Mordin's arc introduces a mad science lab where genetic monsters are running amok, but it's inside a planet dedicated to Tali's next big arc element, where she's investigating the whole planet for suitability as a home world. Other elements are also laced in. Some are minor arc elements, some are completely random, but all can be laced together using a simple keyword system and a bunch of NPCs or audio tapes referring to other places. Those can easily be generated randomly.

Right now, we think of RPGs as either a world to play in or as monolithic stories. Instead, we might think of them as a bunch of opportunistic stories that piggyback on characters, factions, and places to assemble their setpieces.

... anyway, I cut about fifteen pages out of this long-ass essay. Hopefully it's not too hard to read.

Thursday, June 09, 2016

A Scaffold That Grinds Away

Last essay I talked about grinding. I did that to set up this essay, in which we talk about "writing" for open world games, especially RPGs.

In classic oldschool RPGs, there's a whirl of four kinds of gameplay, but each kind is very dull. Talking to folks, exploring maps, managing powerups, and fighting: individually, each of these elements is weak. Even combined, they're pretty weak.

A lot of RPGs have tried to become more interesting by changing out one or two of those elements for more interesting variants. That never seems to work. Why?

Look, RPGs are about the grind. There's no way around it. Even when you decide to stop grinding and fight a boss, you're still doing the exact same play, just with a different goal.

And that's the secret.

The power of an RPG isn't in the gameplay, it's in the pacing. You can grind as you like, and then when you're done grinding, you can easily prod the sleepy storyline into feeding you the next bit of content, the new grist for your grinder. New monsters, new target numbers, new setting, new people, new party dynamics.

All our effort has been spent on more realistic characters, lusher settings, better gameplay, adaptive music... but we've never really talked about new ways to feed the player.

We need to talk about grist.

How to make it, how and when to feed it to the player, how to tell how well they're absorbing it.

The term "roguelike" comes to mind. The computer generates the dungeons, and you walk endlessly through them. That is a roguelike's "grist": the neverending parade of dungeons. At first glance, you may think that's a linear RPG's grist, too. Maybe even an open-world RPG's grist. But it's not.

An RPG lives or dies based on the experience of spending time in that world. If we think like that, we can see that our grist isn't dungeons or random quests or generated characters: our grist is experiences in the world.

These are the things the game feeds us as we move forward in linear RPGs. A new town, new people, new plot elements, new character dynamics, new monsters, new world map, new dungeon, new background music, new spells, new equipment, new boss at a new level.

The difficulty is that grist has a flavor. If you deploy this stuff randomly, the player will get a mouthful of garbage. Arranging plots and characters and places and dungeons and monsters and bosses can't be done randomly. It has to be done sensibly.

I think there are three simple ways to choose sensible grist.

One is content packs. If you go to an icy place, you get an icy town, icy people, icy monsters, icy plots... the downside is: the more you do this, the less replayability and variation there is.

Two is arcs. By creating a progression across several grist packs, you can build a sense of permanence. IE, being chased by an imperial task force across three planets will give each planet's grist pack a connection to your experience, even though the planets are individually quite random.

Three is player response grist.

This one is important.

A big part of my enjoyment of old RPGs is having an "understanding" of how the major party members and NPCs "felt" about any given thing. The canon responses were limited, but I would fill in the gaps on my own. Essentially, I could write fan-fiction in my head as I played the game, imagining the characters responding to the random crap the game threw in my way. "Oh man, are you kidding? Another group of ten zombies?" grumps Lucca. "I will handle this group," Robo bleeps.

These stupid internal vignettes were a big part of how I enjoyed these games. My personal response as a player could be mirrored into the game world by the characters, discussed and properly contextualized.

I don't know how many players are like this, but it's important to me, so I'd like to talk about how to let the game help me do those things.

Dragon Age is an example of how to do this explicitly. The characters will frequently comment on random happenings, they banter among themselves, it feels very organic. However, in the end, this actually limits how freely I can shape the story of these characters.

None of the characters can have bad days, because their banter clearly shows them not having a bad day. None of them can have romantic relationships with each other, since their banter shatters that idea, too. None of them can become jealous, angry, happy, sad. None of them can find something interesting, or repellent, or confusing, unless the devs programmed them to.

Back in ye old days, the characters were unchanging, but they were blurry little pixel people who said maybe three lines outside of their personal arc events. You could imagine them doing or feeling anything you like, because they were too small and blurry to prove you wrong.

As our tech improved, we brought the characters into focus, but we left them as unchanging marionettes, simply increasing the number of personal arc events. When I drag Liara and Garrus around a starship for an hour, they never have any opinions or emotions, never feel anything, and I can see it very clearly due to the high quality of their modeling and voice acting.

Sure, games like Dragon Age try to get around this by filling the game with more voice acting and emotions, scripted by the devs. But that works against my enjoyment in many situations. I can't evolve the story as I grind the gameplay, because the devs don't know which direction I'm trying to take it.

There is a way to improve this situation. A surprisingly straightforward way.

We can see it in relatively mainstream games like Fire Emblem. Fire Emblem's devs don't know what sort of people we'll want to hook up with what sort of people, but they give us a mechanic where people that talk to each other in battle will advance their personal arcs. Not everyone has an arc with everyone, but it still allows the game to reflect the player's storytelling impulses.

As an even more mainstream game, we could use the recent Saints' Row or GTA games, where you can always just call people up on your phone to hang out with them. While they don't have programmed emotions while they hang out with you, you can drag them around into pretty diverse situations and they'll react interestingly - both due to their personality and due to their screwy AI that makes them freak out at random moments.

It's not hard to imagine scaling this up by offering more methods to guide the NPCs to behave in specific ways, either long-term or short-term, to reflect the player's personal story.

For example, a version of the GTA framework where the two people you call over will have an event together after they've left, and you'll get notified of the new social situation. A quick text with a picture of the two of them standing on top of a boat, for example. The event can be determined by how much money you made while they were following you around, or how much adrenaline you spawned, or how much damage they took, or where it left off...

Or let them get drunk or high as you pass them various inventory items. Or you can bring up something from their past by showing them a photo or taking them to their old house. Or you could just let the player freaking select how they want the NPCs to feel from a menu.

Wedding this kind of shaping into the grist of an RPG should allow-

Oh, yeah, grist. We're still talking about grist.

The player selects how the characters evolve. That can easily be limited so the characters stay "in character" and/or lined up for their long-term arc. Even with that limitation it's a powerful way to let the player trigger tasty grist.

When the player pushes a character to act in a particular way, why not have that character drag in a bunch of other content based on that? You get the berserker drunk and leave him stumbling around the rooftops, you're going to have a story event where he's caused trouble. It's a good excuse to introduce local law enforcement, a rich person whose roof got broke, people chatting about the weird, shadowy figure which must have been a werewolf stalking through the city at night, and several options as to how to break your buddy out of jail.

This is "piecemeal" content. It can be injected into almost any setting. If the town is big enough to drunkenly jump from roof to roof, it's big enough to support the subplot. It doesn't mean anything in the long run, although the NPCs you introduce here might recur later in other contexts. You can just throw it in and have fun.

Of course, the subplot should have variable long-term results - change the opinion of the town, change your karma rating, etc, who knows.

Fundamentally, this kind of random content is not too hard. Certainly not as hard as generating a good dungeon for a roguelike. The difficulty lies in making sure the actions the player can choose in order to reflect their personal take on the story can spawn these events without seeming overly random.

All of the moments that introduce grist in existing RPGs are already like this. You get new grist when you step on a trigger, and normally you can tell what is a trigger and what isn't. We're talking about the same exact situation, except that the content we introduce is generated instead of scripted.

The challenge is whether we can make that generated content "flow" from the player's situation. That applies for this piecemeal personal response content, but it also applies for arc content and content packs.

...

Well, in the end, I'd like to talk about how to set up the grist properly.

In my mind, we can radically improve RPG design by spitting grist in based on content pack chunks, arcs through multiple chunks, and introducing grist based on the actions of the player... as measured by actions we allow specifically to let the player choose how they want characters to develop.

What do you think?

Monday, June 06, 2016

Worlds, Characters, and Grind

I used to love "the grind" in games. When you take your party out into a dungeon and level up, fight random enemies, search for more treasure chests, buy the next weapon upgrade. Other people liked platforming, or shooting games, or racing games. I liked grinding.

Well, entering the Tower of Doom and fighting 8000 orcs isn't that much different from replaying a few levels of Super Mario, or running through a Doom chapter, or racing for a cup in some racing game. They're all just play within well-understood constraints, right?

But "the grind" has a very bad reputation. It's not fun.

Is it? Isn't it? It was when I was a kid. Actually, going back and playing FFVI, I still enjoy grinding. What's up? Why does it suck so much to grind in MMORPGs and other modern games?

What did I like about grinding? Why do I like grinding throughout FFI, but only in the first part of FFVI? What do Gau and Strago have to do with making grinding fun again?

Let's be clear: I like to grind because I like having a reason to spend time in that world with those people.

Modern games don't do that.

...

Right now we're coming out of a rut. For decades we've focused on silent and/or customizable characters, and now people have started to realize that marketing (both to consumers and to publishers) is much more effective if you can center it around energetic characters that resonate.

We used to market games based on visuals, gameplay, or plot. Now we market them based on characters. There's nothing wrong with that, but why do I not like grinding in any of these games? They have colorful, interesting characters in lush worlds, so what's up?

Well, I like having a reason to spend time in that world with those people.

I like having a reason to spend time.

Modern games don't give me a reason, and don't let me spend time.

...

The easiest example for me is FFVI. In the first half of FFVI, I loved grinding. Hanging out with Terra and Sabin and Locke and the other guy... Fred? Whatever. That was great! The world was beautiful, the music was grand, the characters were fun! I really loved their reaction when you first use magic in a fight: the game patiently waits for you to use magic, it doesn't just force the scene in wherever. It's damn near perfect.

How about the "reason" and the "spend time"?

Well, in a linear RPG, the "reason" is easy. There's a meat gate. You're stuck here until you can beat the meat gate, so you grind until you can.

The "spend time" is also easy: you measure your progress not in absolute power gains, but in gains relative to the meat gate. You're not "level 6", you're "two levels below where you need to be". How high we set the bar varies based on the player, but in the end you can't get around the meat wall. You have to grind through it.

You have a reason to be here (you're just stuck here) and you have a way to measure the passing of grind-time (your power relative to the meat gate).

The Kefka blows up the world, and you can go anywhere.

I didn't like this part as much for grinding. For non-grinding play, it was intense, and I appreciate that. But I couldn't spend much time in this world. Ironically, once the world opened-up, things got more goal-focused. While the goals were very well-written, they aren't very long and don't require grinding.

You can still grind, of course - kill baddies, gain levels. But there's no easy way to engage with the world or measure your progress - it turns into bland statistical grinding instead of being stuck somewhere intense making progress against a particular challenge.

I had no reason to grind, and no way to really measure time.

This changed when I remember Gau and Strago, two characters I'd written off as "annoying to use". These are characters that give you a reason to grind, and a way to measure grind progress. Not perfectly, but better than nothing. Plus, the music on the veldt is amaaaaaaaazing.

And, just like that, grinding became fun again. I had a reason (improving Gau and Strago's unique abilities) and a way to measure time (The list filling in) in that world with those people.

...

Open-world is not a curse. I love open-world games. I loved them back in the day, with Fallout and Wasteland. I love them now. And I can grind in open worlds, too. The process is a bit different, because instead of grinding "in place", I grind while exploring.

It's dangerous to equate the two kinds of grinding, because the first half of the sentence is different.

I like having a reason to spend time in that world with those people.

In a linear game, the reason is simply the meat wall before you can move forward, and the time is marked by your progress towards defeating it.

In an open game, the player needs reasons and something to mark time. Normally, the setup lets the player choose their reasons and the reasons have some kind of really clear progress built in, or at least can have some kind of progress put in as a limiter.

For example, in Skyrim I might choose to run vaguely towards the next town while grinding any encounters or dungeons I happen to stumble across. I'm grinding my character's chosen class - throwing fireballs, firing arrows, sneaking, stabbing, etc. Now, normally, grinding a class is incredibly dull, because your progress is measured in fractions of a percent of how far the class can go.

I mean, moving from 10 swordplay to 11 swordplay out of 100+ possible points isn't very interesting.

But Skyrim has a few fun ways to measure time. First, when you level up, you get a perk. The perks require you to have a specific stat. So if I want a big damage boost, I need to get to 15 swordplay and have a perk ready to spend on it. Going from 10 to 11 when your goal is 15 is very measurable progress! The chunkiness of the leveling also makes it more interesting than if you just get the damage boost at 15: you've got to weigh when you'll get a level, if you should save the perk, etc.

Another way to measure time is movement across the map. I'm theoretically going to the next town, but there's all sorts of random crap just off the road to lure me aside. That's great. I can see how far I've come, how far I have to go, and I can decide how quickly I want to get there and what detours I want to take.

I can also just strike out in any random direction, but since the map has major destinations and limits built in, I'll eventually reach a natural "stopping" point where I can reassess my goals and methods.

A lot of people don't like Skyrim, probably because this is the primary gameplay. Everything works like this. Want to be a thief? Well, measure how many people in the city you haven't robbed yet, how many buildings you haven't burgled, how much stuff is in this room, how much is worth taking. You have a goal and a way to measure the time you're spending on achieving it.

This seems to be a powerful way to build open world games, given that Skyrim is still popular. Lots of people don't like it, but lots of people still play it even after all this time.

What do you folks think? Are you the same way? Do you have different ways of playing?

Well, what I really want to talk about is how to make characters in that sort of setting, how to create an interactive world, how to make the player avatar act in deep and interesting ways without forcing a particular character onto the player, how to set up NPCs so they have character arcs that react to the player's activities in an open world, and so on.

But, uh, maybe that should wait.