Monday, July 21, 2014

A Soft Touch

This is how you make adaptive NPCs that are actually fun for the player to interact with long-term.


I want NPCs that change based on what the player does. Not on linear character arcs, but in a living, breathing world. And I've created a lot of systems to do that, created a lot of prototypes.

The problem is that the more complex an NPC is, the more opaque everything is. In theory it's fun to have a very nuanced NPC reacting to the player's actions over time, but in practice it's impossible to tell what's going on.

So let's throw out the idea of a personality.

The NPCs have no personality. They have no internal tendency towards one thing or another, behaving one way or another.

Despite that, we're going to have the player absolutely convinced that not only do they have a personality, they have meaningful interactions and grow in meaningful ways.


The secret is board games.

While NPCs don't have a personality, they do have a lot of situations they are in. This NPC is ill. This NPC wears mod clothes. This NPC has a kid. Regardless of where they are physically, those sorts of things shape their behavior. This creates their personality.

The key to making all of thing interesting is to accept that we're not modeling a person, we're modeling a piece of the world. We're modeling a complex and slowly evolving situation.

Anna is a parent. However, it's not a check box. It's a mistake to simply tick "is a parent" and then rely on Anna's personality to determine what sort of parent she is. Instead, Anna's parenthood is a board game where she and the kid go in endless loops. Which loop she's on, which loop the kid's on, what the tile says to do today... that's what we mean when we say "Anna is a parent".

Anna wears mod clothes. What we mean by that is that Anna wears the same kinds of clothes in an inertial loop. Each day she wears clothes, she stitches those in as tiles on her board, into the future. She proceeds down a track of her own making, and each tile is a reference to something she's worn before. She'll try to wear something similar, now that she's landed on it.

Anna is ill. In addition to screwing up her stats, the illness has a board game layout full of forks and loops. You can tell exactly what is going on with Anna's illness, because it is proceeding down this layout. Medicine can change the statistical penalties. Medical care can change whether you go left or right at this next fork.

This method of representing someone's personal life is flexible and powerful, but most importantly it is easy to understand.

No matter how many things affect an NPC, if each of them is a game board, the player can clearly see what is happening.

The only problem is that there are a lot of game boards. Not three - dozens. At the very least, every relationship between two people is its own game board.

Now the issue is which game boards matter, when.


There are three kinds of "mattering".

One is when an NPC is directly involved with the subject of the game board. For example, if Anna is talking to her kid, Anna's status on parental game board will strongly influence her behavior. When Anna buys more clothes, Anna's track record will strongly influence her choices.

This is very simple, but doesn't really give the characters a personality. Their personality arises from mixing their various concerns together.

The latter two kinds of mattering help to mix these things together, and they serve to create a personality the player can both understand and get interested in.

The second kind of mattering is "resonance".

When you and your target have similar boards, you can compare your positions on those boards. Anna is married to Bob. They are both parents of the same kind. If Anna and Bob are talking, they may talk about their parenting, because they both have a parenting board. They can compare: oh, little Jimmy likes you better than me, oh, I grounded him, oh, I keep telling everyone how great a kid he is...

This can also be used to compare paths between the two positions. "Little Jimmy likes you better..." (calculate path) "Well, you could try helping him on his homework, that might (cause him to go left next time instead of right)". Or (calculate path) "Well, it can't be helped (there is no path from there to here)".

This resonance works fine for all kinds of boards. Compare clothes. Compare illnesses. You can even compare friendships, although there are likely to be so many of that board it should probably be exempt to keep every conversation from being about friendships.

There are a few things that weight when you bring boards up. For example, the further "behind" someone is on their board, the less likely they are to try and compare.

The third kind of mattering is "proximity".

We can't quiiiiite talk about that yet, but soon.


Every board can be queried for the categories of actions it recommends. That query takes a lot of arguments, so the board can be pretty adaptive. For example, Anna and Bob are married. The kinds of activities the board will recommend are obviously going to be completely different based on whether Anna is with Bob or with some other guy, and whether Anna is outside at noon or in bed at midnight.

The board is always ready to give its advice, but the NPC is going to ignore that advice much of the time. For example, if you have a kid, the board is probably going to recommend you behave yourself, don't swear, and be a good example for your kid.

If your kid isn't around, you can ignore that.

That's because the NPC only cares about a board based on proximity. So if your kid is at school, you might swear like a sailor and watch TV in your underpants. If your kid is at your side, the board's suggestions are a lot more important all the sudden. And, of course, there's a whole range between.

It's the range inbetween where things get complex and interesting.

First off, there is a percentage of actual concern. The board will tell you how much you personally believe that you should actually be a good example for your kid even when your kid isn't around. That will depend on where you are on the board, rather than on any personality you might have. The parenting board has many loops of different quality, and each loop has its own rating for that.

Between the "actually care" percent and the "actually need to" percent is the "would like to if I can get away with it" percent. That's where the swearing softly lies: as long as your kid isn't affected (can't hear), there's no problem with swearing. Right?

This is a meaty region. The interplay of "actually care" and "need to keep up appearances".

If you actually care, then your personality will be "swear less, behave better" - you'll be a goodie two-shoes. If you care too much, you'll be an annoying nanny figure telling other people to stop swearing. It's the same if you're a kid, of course - behave well in front of your parents... or behave well everywhere?

It's not binary. You want to actually behave like a role model maybe 25% worth, and you need to keep up appearances 75% worth. That doesn't make you 75% sleazy. It makes you 75% "behave appropriately" - behave well in the situations that call for it, and don't let your personal activities screw up your kid. That's pretty good!

Now consider Anna and Bob's marriage.

Obviously, the marriage will tell Anna and Bob to only get romantic with each other. But... how much of that ends up being "I really only want to sleep with my spouse" and how much of that is "I need to keep my spouse from finding out"? It can be hard to tell, and it can evolve over time as their positions on the board of marriage change.

This also gets complex because the "keep it from affecting X" is complicated. Consider this: your kid is very sick, and you're trying to get the doctor to treat him. If the doctor is being reluctant, you may find yourself swearing at him. In theory the parent board says you shouldn't swear in front of your kid (most of the time), but that's overridden, a minor concern next to the massive "protect!" imperative. It's just that your "protect!" imperative doesn't normally have much to say.

Also, consider someone threatening to tell your kid or your spouse something about your behavior. What if your sister says she's going to tell your kid you swear like a sailor? Well, that's a rather minor issue. It'd be better if she didn't, but as tiers of infractions go, swearing is a pretty minor one. On the other hand, if your sister says she'll tell your kid that you killed a cop, that's... a bit more serious.

So there are hooks for playing cover-up.


The point of this system is to make it the most interesting experience possible for the player.

Everything is pretty easy to understand. Even if you don't know precisely what an NPC has been up to recently, you can look at their position on the board and see where they must have come from. You can see where they are going, and perhaps persuade them to do something to change how things will evolve.

You can change their situation, and in doing so change how they act and react. The situation can evolve in big ways, sure - a kid could get kidnapped, or a house could burn down - but you can also evolve the situation in small ways. Push someone's token just one step further on one board. Convince them to try to get along with one person for one day. Tiny details that can change the flow of the future - and you can see how.

Moreover, there's room for mods.

Each personality element is a situation represented by a board. Adding more boards is relatively easy - just create a new situation or category of relationship, and the board simply runs. No problems. You want to add in a mentor/pupil relationship? No problem. You want to add in a "werewolf" "illness"? No problem. You want to upgrade the fashion system to a more complex board rather than a pattern of repeating clothing decisions? No problem!

"But how about making the game interesting?"

The key there is to set things up so there is tension. This arises naturally from the way each board calls for specific behaviors and responses that interact with other boards.

For example, Anna and Bob have a kid, and they're all in pretty good relationships. However, times are rough - their job boards are languishing, which means their household board is staggering around, taking the bad loops because the cash requirements aren't being met.

This is already interactive, but the situation is a little bit more interactive because the parental boards demand Anna and Bob protect their kid and serve as good examples. This means they attempt to downplay how difficult a time they have, and keep debt collectors from encountering their kid.

That's already a pretty interesting situation to drop the player into, either as a third party or as one of the three family members. It's adaptive - it's possible for you to improve the situation in various ways, or hammer away at the cracks if you're a vile person.

However, the overall scene is also set.

Little Jimmy has a classmate who is very rich and not very nice - makes fun of Jimmy for having crappy parents. Jimmy, as a child, has a "defend" requirement in his child board, and beats the rich kid up. Drama is born!

But why does the rich kid make fun of Jimmy?

Resonance. The rich kid and Jimmy both have a household board. The rich kid compares them as part of standard operation: "my parents are doing soooo much better than your parents and (path search) your parents will NEVER be as rich as mine!" The scale of the insult is pretty high, and Jimmy's response is also scaled appropriately.

The idea sounds good to me.

As a way of building worlds, it's an easy way to make a compelling world that creates ongoing life stories.

As a way of allowing players to participate in that world, it's crystal clear without being simplistic, and well-chosen small actions can have a long-term effect.

As a way of modding, it's easy to add more options!

Anyone read this far?

Wednesday, July 16, 2014

Species in Not-Star-Trek

While designing my not-Star-Trek game, I needed to design some species.

Designing sci fi species is always an interesting challenge because it is constrained by the nature of the setting. Trying to come up with something interesting and avoiding stereotypes is fun.

My game, being lighthearted, can design species lightheartedly. This is a big advantage.

Since it's Not Star Trek, the species are all humanoid and largely based on Star Trek tropes. It's important that we are all humanoid so I can reuse body assets instead of having species-unique assets. The "funny-shaped-head" is valuable because the high angle focuses on the character's heads.

Each species has a species trait that affects how it socializes as part of a crew, and within each species there are a variety of personalities for individuals which change the flavor of their socialization.

Right now, the species I'm thinking of are:

Newcomers to the interstellar arena, humans are mostly known for their obsession with secrets. They want to be the galaxy's information brokers, but in truth they are just big gossips. Humans generate a resource known as "gossip", which can be transformed into drama by hanging out with others in the canteen. (Drama can only be generated during plot events if humans are not around.)

Human personalities include shouty, beguiling, chatterbox, curious, etc.

Space elves are an older, more mature race with a more mature demeanor. While most races think of them as extremely dull, oppressive bureaucrats, humans like them because space elves gave the humans a crap-ton of technology. A space elf can turn loneliness into inspiration by hanging out in the library.

Space elf personalities include stodgy, cold, overanalytical, observant, etc.

Onions are a young species that joined into the Star Collective because they were convinced it would be interesting. They were too young to realize that space elves are the most boring species anywhere. Still, they keep a cheerful face: onions generate a resource called "cheer", which is automatically substituted into any social resource conversion when an onion does not have enough of the required resource.

Onion personalities include cheerful, heroic, passionate, etc.

Robomans are synthetic humans created by the space elves as a test run for creating the Star Collective with humans. They aren't very good at being human, but they are very strong and clever. Robomans have extremely high physical and mental stats, but can only generate one social resource at a time, instead of all of them at once. You can change which gets generated at any time.

Roboman personalities include wannabee human, simhuman, "Danger Will Robinson" robot, logical, etc.

Anyway, each of these has their own unique head decoration for use with the tiny pixel view, so they should be easy enough to tell apart even though they all have the same shared body sprites (different builds are available, but not species-specific builds).

Monday, July 14, 2014

Driving Complex Arrangements

Games where you build things rely heavily on the complexity of building things. Constructed objects are placed relative to each other and serve various roles.

Adding depth to the game usually features either adding physics or adding a chain of resources. Physics is much more interesting because it allows for the player to really come up with unusual solutions and makes even small changes to the construction matter a lot. Chains of resources are useful mostly because they are a very easy way to add complexity - it requires very little balancing or assets, and can also easily be added by mods.

I've been thinking of another method, though.

What I really like is machinery that moves and does stuff.

It's a bit difficult to make physics about moving pieces, because fundamentally the most useful machines to deal with physics challenges are stiff things with a few wheels or jets or whatever, not something that changes. Similarly, a tiered system doesn't normally require any movement, just more things placed cleverly.

You can force them to require machinery by changing how things interact and proceed. For example, if you have to change from plane to boat to space ship, you can create a game where that's best done by mechanically moving things around. However, that's simple "hiding and exposing" - the mechanical version of turning things on and off.

You can make a tiered system require mechanics by having to move either the resource in question or the processing units manually. For example, if you're creating a robot, but you have to dunk the chassis in coolant every few steps to keep it from melting, you have a lot of freedom as to how to do that. You could create a long track with all the construction arms and occasional pools of coolant, or you could just have a single pool of coolant that the chassis gets dunked in over and over, while the construction arms revolve in to do their work.

This gets especially interesting if the player can choose the robot's specs and they make the construction method vary, because then there is no "best".

This seems like an interesting way to do it, but the idea of "heat" that needs to be "dumped" made me start thinking about the idea of side effects creating mechanical play.

For example, let's say you're putting crew in a space ship. Your first order of business is making sure to assign crew to each station, so the space ship runs. The crew gets tired, though, so you build bunks and set the crew up on a schedule to sleep and work. The crew gets lonely, so you set up a schedule where they hang out in the canteen together.

The point isn't to play The Sims in space. These things - loneliness, exhaustion, hunger, and whatever else you put in the game - they aren't simply negatives to be deleted. They are a resource.

Removing loneliness generates camaraderie, which can be used to trigger crew events. Removing hunger generates waste, which can be used to grow plants or processed into biofuel. And so on.

Introducing different species into your ship can add a lot of complexity to this if we would like to. For example, camaraderie might come in a number of flavors, which can be mixed in specific amounts to produce diplomacy points, which can be used to trigger international events.

Allowing for flavors and advanced mixing allows for players to set up an almost unlimited variety of setups, with no obvious "optimal". Maybe someone creates a crew and ship that are engineered for optimally triggering international events as fast as possible. Another might be focusing mostly on science production, but carefully save up the rare flavors to trigger an international event now and then.

This sort of game would allow for a very "Star Trek" feel, but with a mechanistic backend. The ship components don't move, but the crew are constantly in motion. Building your crew (at least, your command crew) would be interesting. Their skill sets obviously matter, but so do their fundamental ways of life.

Anyway, that's it. A tired Monday essay.

Friday, July 11, 2014


I've been struggling to talk about density of space in games. Here's my latest attempt!

What's Density?

There are a lot of ways to measure 'density' of space. How far you can see, how quickly and freely you can move, how many enemies are around, how many resources, how many NPCs.

But I find these are all proportional. If you can see further, then you can move more quickly/freely and there are fewer encounters per square meter. Similarly, if you are stuck in a cramped little maze, you can't see very far, you don't move very freely, and there are more encounters per square meter.

These things vary over the course of a level. That's the heart of good level design. Here's a huge area with a ravine you can't cross, a monster closet, an area with a bunch of resources clumped up. However, if you average all the variations together, you'll find that the level revolves around a specific density, and all the different elements that can be used to measure density all reflect that choice.

Because of that, we can really use any of these things as a measure of density. We don't have to painstakingly consider them separately.

I'm going to use how the player sees as my measure of density. The more space the player sees at once, the sparser the space is.

Of course, this isn't just camera-view space - it includes HUD popups and overlay maps. If you have a map that's easy to reference, or floating decals showing points of interest outside of your view, then you can see a lot further than your camera view indicates. That means your space is sparser, which means you'll move faster/more freely, and you'll have fewer resources/encounters per meter.

With those assumptions in mind, let's get a bit aggressive with the concept now that it's been laid out.

How Dense is Dense?

When people think about spatial density, they normally think in terms of something like "rooftops are sparse, vents are dense".

They aren't wrong. However, in most games those are outliers, not part of the core experience. You can tell, because if you pretend that vents or rooftops are the point of the game, you can easily see that there would be different mechanics in place to make the game more fun. In most games, rooftops and vents are changes of pace, not distinct levels.

You can see the core gameplay break down in these places. In fact, in most modern games, the vent sequence is guaranteed to not have any enemies in it, since you're too cramped to even fight. Space is too dense to maneuver.

That said, you can get a lot more sparse than rooftops. What about the boat sequences in Windwaker? What about the "lost in the desert" sequences in Quest For Glory 2? You can get very sparse!

The thing I noticed is that you can't really get very sparse or cramped before violent gameplay disintegrates. Violent gameplay is about removing enemies from play, and that fundamentally doesn't work if there are too few enemies. As you get sparse, the gameplay becomes about getting to the few things you think you see, rather than removing them from play.

You can get very dense and still have violent gameplay - old robotron games show that - but there's still a limit. As your movement gets more and more constrained, maneuvering gets tighter and tighter. As density goes up, violent gameplay slowly changes from violence into racing with obstacles. A good example of this is Tempest 2000, which is technically a "violent" game but it's mostly about desperately trying to wiggle from side to side in the tight confines given you.

However, other kinds of gameplay work fine in dense and sparse spaces.

Most games have one core kind of play, and it revolves around a specific kind of density. Density fluctuates from level to level, moment to moment, but the gameplay is intended to work at a specific density and that's the density their levels keep flowing back towards. In contrast, consider Skyrim. It has several largely unrelated kinds of play that allow it to support dense and sparse spaces natively, rather than as exceptions.

Skyrim has three kinds of gameplay that live side by side. It has the violent medium-density-space gameplay - raiding dungeons, clearing bandit camps, fighting dragons. But it also has the low-density gameplay of exploring the world and the high-density gameplay of stealing things from townsfolk.

Each type of space has a different kind of fundamental gameplay, even though they all use the same user interface.

This isn't to say Skyrim is very good at it. Skyrim is notable mostly for this existing at all, not for doing it well. The different kinds of play do not offer meaningfully intertwined reward systems, a heroic character will never see the denser half of the game, and the play balance is completely awful unless you mod the hell out of your game. But it exists!

I think this is the future of open world games.

I look at games like Saints Row or older GTA games (haven't played the new one), and I see games struggling to have multiple densities. You can be on foot, you can be in a car, you can be in a jet. These are obviously trying to see space from different perspectives, trying to change the density of the play. Unfortunately, they don't quite have it figured out. They don't seem to be sure what they actually want.

Being in a jet does change how you see the world, but it doesn't change how the world interacts with you. This means the new sparseness is not a native density, but an exception: it's typical space smeared awkwardly into a jet's visor, rather than a different kind of play supporting that new sparseness at a deep level.

The spaces don't need to clash and feel disconnected, like with Skyrim. But they do have to change.

Let's Talk Gameplay

If we wanted to come up with an open-world game that supports a wide variety of densities, we would need to consider how to link them together.

Let's start stock, with a typical open-world game setting. Rather than fantasy, let's set it in modern times - we'll call this a GTA-like rather than an RPG.

The medium-density setting of the urban environment is what most players are used to. In this environment they run around, jump cars off riverbanks, shoot cops, etc. Basically every GTA clone ever made.

We also need a lower- and higher-density way to play. And, importantly, they have to reflect on each other.

Let's say the high-density space would be places you actually go into. Shops, homes, and the like. In these spaces there wouldn't be very much call for violence - you could shoot a shopkeep and go on a rampage, but there's not any significant reward for it. Instead, these tight spaces are about arranging people and things.

It's about stocking a friend up with beer he likes by putting it on his shelf, or about hooking up some people that have never met each other by introducing them and kicking off a conversation, or its about sabotaging the air conditioning so it gets abysmally hot. It's about the things in this dense space and your inventory, and using them to affect each other. As a key part of this: these aren't quests. It's all open world. Sabotaging an air conditioner always has the same kind of effect everywhere. Putting something on someone's shelf - or taking something from their fridge - registers in the same way even if people have different responses.

Some possible rewards are obvious - you get resources if you steal them, and havok can be its own reward. However, we want our rewards to echo properly, they need to affect the player in other spaces. In this case, a good reward might be whether or not someone will follow you as an NPC if you phone them, and how powerful they will be when they do.

That's high-density.

Low-density, we have a lot of options. We could make some kind of wilderness/outskirts thing. But this is a techie wonderland, so I have two ideas.

The first is drone flying. You can use a drone to wander the city. Unlike wandering as a human, the drone cannot stop and chat - it doesn't even go down to street level unless you want to crash it. Instead, the drone scans for specific people whose phones you've bugged, open wifi networks, and so on. The city is a glowing map of flowing data, allowing you to search for points of interest, tidbits of data to harvest, and track individuals. The city is also large - real city size.

The second option is exactly the opposite: drone evasion. After curfew, drones watch the city. You can't use vehicles - they'll be spotted immediately. Instead, you have to move on foot. Everyone's gone home, the city is much less dense. It's just you and the glowing patterns of light that indicate where the drones can see. Change your gear to change how long it takes a drone to realize you're a person, or how hard it is for street-level cameras to identify you.

These kinds of play can all feed back on each other in relatively interesting ways. Cause a ruckus during the day in medium-density space, and that area will be crawling with cops and drones at night - leaving fewer in the rest of the city. Sneak somewhere at night to hack into security and change what you can see during a drone expedition. Do a good drone expedition to find a weak point in the mafia's defenses.

Normally this would all be scripted missions, but if the play exists, these can be emergent situations. Scripted missions are mostly useful for hiding parts of the game that don't flow well, don't emerge naturally. If our spaces blend together well and support each other, we don't need nearly as much scripting.

This is a pretty conservative kind of design, too. There are a lot of much more out-there designs where the spaces get a whole lot more dense and less dense. A game on a starship where you get stuck in your crew's dreams at night, for example. A camping game where you spend the day hiking and the night trapped in a two-person tent with three other people.

There's lots of options. I just wanted to show you that density goes a whole lot further than most people might think.

Monday, July 07, 2014

Utopian Scifi and Families in Star Trek

I recently found a link to a slightly obnoxious Slate/Quora article about shipboard families in Star Trek. Feel free to not read it, I'm not a fan of Slate, Quora, or the specific essay. Link via @derekpost

The essay basically states that Roddenberry's ideas were half-baked and stupid, and that Star Fleet is clearly a military operation. What a thing to say!

At the time, Roddenberry's ideas were amazing. The steady drift of the series from a utopian future to a typical military sci-fi drama makes the ideas seem foolish in hindsight, but that's because the series became military sci-fi.

It didn't start that way, and it should not have drifted that way.

But Hollywood will be Hollywood: never enough guns, never enough explosions.

Families and non-military friendships have always been an important part of the heart of Star Trek. A lot of the unique flavor of Star Trek came from the way it dedicated itself to these relationships, and not to military camaraderie and competition. This was especially true in TNG: just think about how many episodes featured these kinds of nonmilitary relationships. Hell, Data's entire character was about "learning how to have normal social relationships", no matter how they cast it as "getting emotions".

The original series was a bit less obvious about it, but even there it was not militaristic. While the crew was not really friendly with each other, they were more about learning to get along and figuring out how to work together rather than approaching things as soldiers doing their job. It was intended, right from the start, to be about international cooperation. Not shooty-shooty murder.

The universe of Star Trek has become typical military science fiction since then. When we look at the universe, we see it overrun with threats that are met by military force. It is so generic that you can literally run simulations based on the known stats of the various ships. The games make this explicit: every recent Star Trek game is about killing shit more efficiently than shit kills you.

When the Borg were initially introduced, it was to show the hopelessness of military obsession. The borg were the "super-military". No weapons could threaten them. Resistance was futile. If you do try to resist them, they actively pursue you and incorporate you into their whole, turning whatever military strength you managed to obtain against you.

The only thing to do was to band together with everyone and try and find a nonmilitary solution. It was TNG's way to introduce the same impetus TOS had: international cooperation instead of shooty-shooty murder.

But Hollywood couldn't bear to let that stand, and so the Federation's military was upgraded and upgraded and upgraded and upgraded and upgraded and now the Federation can win a slugging match against the Borg. The Borg do not incorporate your military strength any more, either, because that doesn't fit into a summer blockbuster narrative. Their incorporation is now a weak point to be exploited, because obviously learning things is a weakness.

That is so wrong and stupid.

Roddenberry's "half-baked" ideas about the future were extremely compelling. In Science Fiction, "The Other" is usually met with force, with murder. That's a bad way to see the world. The idea that you can meet up with something alien and talk it out is much better. The universe is chaotic and confusing, but you can meet it halfway and still have a life, still have a family. That is a world worth living in.

I'm sorry Hollywood's obsession with explosions and murder has degraded Star Trek to the point where people think the original idea is incomprehensible.

Monday, June 30, 2014

XBlaze Etc

So, I decided to try a visual novel out for my morning commute game, and I picked the most recent one: XBlaze. Or XBLA*ZE, whatever. It's by the BlazBlue folks, so I knew that it'd be full of grim dark grimness with grim grim darkness and one joke character.

What I didn't expect is that it would be the most stereotypical thing possible. Literally, it is impossible to cram any more stereotypicality into this game, because every character, every set, every story beat, and every plot point is the most stereotypical rehash of a common trope they could find. Every single character is a fetish stamped on tissue paper, every plot event would have been considered old and tired in 1989.

The format is easy to consume while standing with one hand on a train rail, so I've played it through a fair amount. Nothing has been even vaguely new or interesting.

See, the basic problem with XBlaze is actually the basic strength in BlazBlue.

Arc (the devs) are pretty good at throwing tons of polished stereotypes into a game. In BlazBlue, every character is a stereotype, but that's actually good in a fighting game. You have to know who someone is within 1.5 seconds in a fighting game. So you walk a narrow line: stereotypical enough to identify, but interesting enough to look at that people will remember them later. It's actually advantageous to not have any character development - so all the character "development" is actually just revealing the past to the players. That way the characters don't change over time, and everyone who plays the game will always face the same version of the same characters.

Moreover, a wide variety of instantly recognizable characters means everyone will find someone they are interested in playing. It's the "shotgun" method of character design: put a ton of instantly-recognizable characters in your game and let the player sort out which ones they like. If they dislike 80% of the characters, that's fine: they don't have to play them.

While that's good in a fighting game, that's awful in a visual novel.

Visual novels work in exactly the opposite manner. It's less important that a character be immediately identifiable, and more important that they evolve over the course of the story. Hidden backstories being revealed are common, but it's a way to make the characters behave differently. Since no two players are competing, it's not important for characters to be the same between multiple players.

The selection of characters is also less important, because a player cannot really choose to spend time with one character and ignore another. All the characters are always interwoven. Maybe in a dating sim a player can choose a particular favorite and it will matter, but in a typical visual novel you are always stuck with all the characters. If you only like one of the ten characters that you're stuck with, that's considered 9 fails rather a success.

Fundamentally, Arc took the same approach in their visual novel as their fighting game. They filled their story with a huge variety of instantly-recognizable stereotypes.

Unfortunately, none of them are even slightly interesting.

They attempted to make the characters evolve by applying the standard story for each standard stereotype. For example, the cute robot girl slowly learns human emotions and, I presume, will die while betraying her creators in favor of her new friends in the third act. Doubt I'll play long enough to know for sure, because the robot learning emotions is so painfully standard that it predates robots, and there's no spice in this particular dish.

The hope with XBlaze is that you will find at least one of the story lines to your taste, at least one of the characters. Unfortunately, that's not how stories work. That's how fights work, sure, but this is a story.

A story is much more cohesive. While a reader can technically ignore large parts of the story, that's a sign that a story has failed. Instead, each of the pieces of the story - whether a character, place, or event - needs to contribute to the core of the story.

In a fighting game the core of the game is the fighting. The characters, settings, and events all contribute to the feel of the fighting, giving it a strong flavor and unique texture.

In a visual novel the core of the game is the heart of the story. The characters, settings, and events need to contribute to that.

In XBlaze, the story is theoretically about a pacifist having his worldview challenged by harsh realities.

Having three different kinds of magic does not help the story any - it just allows you to have three different kinds of stereotypical magicians. This is a sacrifice made to enable more characters at the expense of the story.

Having a robot learning emotions could actually be a powerful echo of the story. The robot could go from being a militaristic, violent, order-following machine to being a dedicated pacifist at the same time that the pacifist main character is pushed into fighting. But instead of serving that end, the robot is simply allowed to trundle along their trope's default plot line regardless of the fact that it doesn't have even the slightest bit to do with the core storyline.

You have to balance your characters and how they relate to the core story in the same way that you would balance the character's fighting styles in the fighting game.

What I'm saying is that Arc has misunderstood what a visual novel is.

Friday, June 27, 2014

Context-Driven NPCs

Most NPCs are scripted with a lot of personality. They have character arcs and opinions and a backstory and a romance arc and all sorts of stuff to try and make them interesting.

The problem with these NPCs is that they are pretty oblivious to when they should actively express themselves, and relative to which people and things. If they are active, they tend to run roughshod over other dialog, current missions, and the player's current intentions. Even if they are just commenting in a small way (such as '-5: Lilliana doesn't like you helping magicians') it distracts from the player's intention and simply makes things muddy and awkward.

So most of the time, the NPCs are put into extremely passive roles. They are only allowed to express themselves when the player returns to base and actively seeks them out. This gives them explicit permission to activate and express themselves.

Unfortunately, it also limits how they can interact. They can't interact much with other NPCs, the world at large, or the ongoing central quest. All they can do is sit in a safe little spot and wait for the player to strike up a conversation. This is very awkward and forced at the best of times.

There have been a lot of NPCs I've wanted to spend time with, but these games don't allow you to do so. Sure, you can put them in your party, but they leave their personality back at base. Sometimes they will judge something you do, but rather than being interesting and fun, it blindsides you and leaves you feeling cheated or caged-in.

For example, almost all of the characters in all the Mass Effect games were interesting enough that I wanted to hang out with them. Mass Effect didn't let me. While I could go through their personal character arcs and learn their backstories, it was impossible to simply shoot the breeze. Mass Effect 3 was especially notable for this because many of the shipside conversations ended up being hanging out. You'd talk to Garrus and he'd take you on a drinking-and-skeet-shooting hangout. It was fun.

But it was only once.

I couldn't get Garrus to go drinking with me again. I couldn't get Solus to sing any more songs. I couldn't get Tali to geek out over random pieces of tech lying around in the various places I went. I couldn't get Liara to do psychic hang-outs. I couldn't go bar-fighting with Wrex. I could only march along the scripted course and reach the scripted destination. The only thing I had control over is which person I wanted to see half-naked for 3 seconds.

Even that was, of course, a one-off event.


The only times NPCs are active is when you are in one of their personal sidequests.

Sure, they are scripted to respond to events in their personal sidequest, but that's actually only a minor issue. It's easy to script general responses to general events in every kind of scenario. No, the reason they are active in their sidequests is because you have given them implicit permission to be active. By going on their personal mission, you have implicitly stated that you care about what they have to say, at least for the next hour or so.

There's nothing difficult about programming Tali to run up to every significant piece of tech randomly found in the game world, scan it, geek out over it, say random clips of dialog about it. That would have been very easy to program. But it also would have trampled my gameplay, and walking around would have become more like herding children than being on a mission.

The core issue is that Tali has no way to tell whether it is contextually appropriate for her to geek out over something. At any given moment, her running off to geek out could screw up my pre-combat arrangements, or talk over an important meeting, or just be incredibly socially inappropriate.

There are a lot of heuristics you could use to try and keep Tali's commentary reasonable, but the core problem isn't the exact timing or number of her outbursts. The problem is that the game devs can't read the player's mind. Even if you know exactly where all the enemies are and exactly where all the socially constrained areas are, you don't know what the player is thinking. If you were really there, you would: the player's body language and facial expression would give it away pretty quick. But you obviously can't read that through an XBox controller.

The solution is to create a way to give implicit consent.

Basically, you trigger the same kind of "consent to act" that is usually associated with loyalty sidequests.

You need to do this in a way that isn't annoying to the player, and the easiest way to do that is to use it to enhance immersion rather than detract from it. By spending time with Tali on your ship, a counter begins. For the next 30 minutes or so, Tali will be active, happily running around. Afterwards, the context fades and Tali reverts. You can prolong the context - or change it to an even more permissive context - by interacting with her out in the field. The interactions you have available to you depend on the context you've established.

If you've talked to Tali about her pilgrimage, most of your options will be related to that facet of her character - talking about whether something is suitable to send home, or can be learned from, or how it contrasts with home. If you've invited Tali out on a date, then most of your options will be related to that - and she'll spend less time geeking out over tech and more time considering whether you're having fun. And the context can be changed, if you can find the right opportunity.

You can revert faster by changing the context. You don't have to call an excitable Tali over and say "stop it! You're annoying!" Instead, you simply ask her whether she's ready for the mission. This painlessly changes the context from "Tali is important to me" to "Mission time!"

I propose we increase the number of times the player interacts with the NPC while decreasing the amount of time each interaction takes.

The intention is that the player will often "nudge" the NPC gently into a mode which suits the player's current mood and play intentions. As the situation changes, the nudges wear off or the player nudges in new ways. This constant low-level interaction allows the player to enjoy an NPC without getting sideswiped by annoyingly overactive NPCs.

A few things are required to make this work well, though.

One is that there needs to be a reward for active NPCs. For example, if Tali geeks out over a piece of tech, Tali should gain 5 XP or something. A small reward that makes you feel like they are either evolving or useful to you when let off their leash.

Another thing is that you still have tiered relationships.

When you first meet Tali or Garrus or Mordin, you can't simply go "OK let's date and get kissyface". I mean, it's a viable route, but you'll have to establish that kind of relationship by letting them be active while in less romantic contexts. But what kinds of relationships are viable with what ease will vary: Tali's romance route is tough because she will literally get sick if you even touch her. Liara, on the other hand, would probably be very easy to woo - not only does she start right off with a crush on you, but her species is not exactly puritanical.

Whatever relationship you aim for isn't a "final goal", and is instead a "fun place to be". Sometimes that's closer or further from where you start.


The last thing is "passive evolution" and "simple judging". Even when not active, the NPCs need to exist. The easiest way to do this is to have them gently react to the player's actions.

However, this is a trap you need to be careful of. In most games "react to the player's actions" translates to "judge her dialog tree choices". This is an obnoxious thing to try to do, because you can't read the player's mind and have no way of knowing why she chose that option. It's also obnoxious because the player often doesn't know it's coming, can't predict it, and can't easily fix the damage it causes. It's just not a great approach.

"Simple judging" is probably a better answer. With this, the characters feel differently about the player inch by inch as the player performs various basic gameplay feats. Most of these should be positive, very few should be negative: hanging out for a long time should make you more friendly and accepting rather than less, even if that person is kind of annoying.

So Liara might respect you more each time you use a powerful psychic attack or kill a psychic in combat. Mordin would like you more each time you used a medpack. Garrus would like you more each time you sniped or used a grenade. Etc.

In a less restricted world, these could be applied to a wider variety of interactions, but I think that's enough talking about it.

That's my basic idea! Small, frequent context shifts under the player's control give the NPCs all the information they need to know about whether they can express themselves, and how.

To be honest, I have this whole big algorithm thing involving nodes and context pipes and crap, but I really don't think discussing a specific implementation will help this essay much.

So I'm done!