Wednesday, April 23, 2014

Violence in Sci Fi Construction Games

There's a lot of cool games in the pipeline these days, and a lot of them are about building cool things in scifi settings. The problem is, they all then universally talk about blowing things up with the things you built.

That's really a bad call.

Combat is not compatible with the sort of internally-focused construction games these people are building. We've become so used to adding combat to everything that people have forgotten to think about whether combat is a good fit. I think the reason most designers seem to lose track of whether combat is a good fit is because they are used to customization rather than construction.

See, in most space combat games, you can customize your ship. Add in a better laser, change how much energy is going to your shields, restock on missiles, and stick in a better engine. Customization is fine for a combat game, because it's fundamentally the same as equipping a character. You are changing how your ship relates to the world around it: improved firepower, faster speed, more cargo, whatever.

But with a lot of these new games, you aren't simply customizing a ship. You're constructing it, brick by brick. For example, in Space Engineers, you build a ship out of Minecraft-style bricks.

These ships are built with combat in mind, because uh... because... ... well... uh... lasers are cool?

The problem is that this kind of construction is an internally-focused system. The end result of weapons, shields, engines, and other combat stats ends up feeling very forced, because the actual construction of the ship is about making a ship exist. This is not about making a ship relate to the outside world, it is about making the ship exist in its full complexity, with all the walkways and landing pads and sleek planes and whatever.

If you just care about how it relates to the outside world, you end up with a very ugly optimized ship. It feels wrong and stupid-looking. Even if you do that, the combat is never very interesting because it is too, well, too realistic. Things get damaged arbitrarily. Things resist arbitrarily. It's hard to tell how much damage you're doing. It's hard to tell how much damage you're actually taking. There's too much noise introduced by the extremely fine grain of detail that everything has.

You really need to consider whether your game is about customization or construction, because construction is not compatible with external challenges.

When you're building something where each piece relates to specific other pieces in direct ways, the challenges need to be about THAT. This trap moves a person towards that trap. This walkway connects that hall to this warp core. This wire hooks that light to this power source. That building creates a certain amount of cash but annoys all other buildings within 200m.

But there are base-building games that are externally-focused. For example, every RTS.

An externally-focused base-building game looks the same as an internally-focused game at first glance. They share a lot of similarities: putting things down in specific places, managing resources, and so on. However, an RTS base is not very internally complex. The buildings don't relate to each other very directly, but instead only indirectly through resource production and consumption. Where you choose to put them is more about the constraints of the map and your guess as to your enemy's tactics, rather than having to place them to directly relate to other buildings.

You could argue fine points. For example, you could argue that a combination of turrets and walls is sometimes used, and those do physically relate to each other. Similarly, you could argue that something like a goo field directly relates to other buildings. In the end, the line can be a bit vague, but I don't think anyone would argue that building long lines of walls is the core gameplay of Starcraft.

Putting aside the sometimes blurry edge cases, I would argue that internally-focused construction games are inherently a bad match for combat gameplay. Combat boils your avatar's performance down to some stats, while complex construction is focused on exactly the opposite.

Thursday, April 17, 2014

Interstellar Archaeology

My friend ran a KickStarter about space and time being insanely vast. Most scifi compresses both space and time, but he wanted to show it in the proper scale. Me too! It inspired me, and I spent a lot of time thinking about it. And I decided that my contribution to this theme would be interstellar archaeology.

No matter how many millions of years your society has, it's just a tiny blip. You will never meet another living alien species. Even if you live for a million years on a million suns, you won't meet them. Space is too big, time is too vast.

But you can meet them. As long as you don't mind them being dead.

So this is a game about archaeology, about discovering ancient, lapsed civilizations and digitally recreating them to live anew in a huge simulation. You aren't part of a civilization yourself: humans have "ascended" and you're just kicking around exploring the galaxy for a few million more years until you get bored of it. And you've decided to search the universe for dead civilizations and bring them back to life in your personal computer, manage your own universe that is chock full of alien species and civilizations. Maybe trade info with other ex-humans that are still kicking around.

The mechanics of finding and studying ruins is not what I want to talk about. Instead, I want to talk about how to seed them. An algorithm for creating dead civilizations.

Now, one way to do this is to simulate the civilization and come up with a big stack of places they went and things they did. However, this has the serious downside of being dull as paste. We would like the players to actually be interested in what happened, and that means humanizing it. Here's what I've come up with:

If you search a given place for archaeological clues, you have a chance of finding a random clue from a random time period. Say, you discover a 100,000 year old derelict space ship caught in orbit around a moon.

There are two keys to what this ship "means", archaeologically speaking.

The first key is that the ship uses "compatible" clues. So if you are aware of a colony on a nearby planet from 2 million years ago, perhaps the ship is related to that. If you are aware of a colony from 110,000 years ago 20 light years away, maybe the ship is related to that. But the timing involved is important: if the ship is related to the 2 million year old colony, it certainly couldn't have come from it. Instead, it must have been searching for it, well aware of its age and likely demise.

That brings us to the second key: the archaeological find is not categorized by where it is from or what it belongs to, but instead by mission. This gives players a strong hook to get interested. Usually, where they are from will arise pretty obviously from their mission. Moreover, as the mission emerges, archaeological seeds are laid for the player to discover elsewhere.

For example, there is a million-year-old colony nearby. Is the ship involved with it somehow? There is a 110,000-year-old colony 200 light years away. Is the ship involved with that somehow?

We don't simply determine where the ship is "from" or who built it. No, we care about the mission. Is the ship related to the million-year-old colony? If so, what was its mission? To reach the colony, almost certainly. Why would they have wanted to reach the colony?

Well, not to put too fine a point on it, but we don't know why. The player doesn't know either. All they know is that the ship had that colony in the last surviving star chart.

There's not a whole lot of research the player can do aboard the derelict, because it is truly ancient and basically just a jumble of floating rust particles. All the player can really do to follow the lead is to head for that colony. At least until some new information tells them what to look for in this ship.

Maybe this player doesn't even know there is a colony there, just this star chart. Either way, when she searches for events ~100,000 years ago, she finds an archaeological event that was seeded by the discovery of the ship. What is it, exactly? Well, like the original discovery of the ship, it's largely random. She discovers that (rolls dice) a seed vault was stolen.

A seed vault from an ancient civilization was stolen?

There's a lot of ways she can go from this. One is to read into the million-year-old colony more, since she's obviously going to discover it exists given that its seed vault was stolen. However, she can also keep concentrating on the seed vault.

It automatically works its way into the mission parameters of the ship that stole it. They were going to the ancient colony... for seeds... and they got them. What? Why?

We need to come up with a driving response, so the algorithm looks up all possible explanations in the dictionary and decides there was a genetic plague on the 110,000-year-old colony, and they needed 'pure' ancient DNA samples to fight it. This, in turn, plants several more archaeological seeds. One on the 110,000-year-old colony - evidence of genetic collapse. One on the ship: evidence of the seed vault.

These missions can keep expanding, but a key point is that this isn't a one-player game. This player isn't the only one working with this set of facts.

Another player lands on the 110,000-year-old colony and searches for clues related to it. Since he's in the right place and searching in the right era, he discovers evidence of the genetic plague. He doesn't know quite what it is, though: a massive ecological collapse off some kind. The chain itself knows that a ship was launched with a specific mission because of this catastrophe, so it spawns an event for the new player to discover: the construction of a fleet of ships to try and find pure DNA. This seed of a space exodus is planted with the discovery of the ecological collapse: it generates only when needed.

The new player can discover this event by continuing to search in the right place and time. Rather than discovering the location of the originally-discovered ship, this player instead finds star charts pointing to dozens of planets. Each of these planets is then allocated a "phantom" of the originally-discovered quest line. If the player goes to search one of those locations, it will randomly determine which elements to clone from the original quest line. It might have a million-year-old colony. It might have an event 100,000 years ago where someone stole seed banks (or attempted to, if there was no colony spawned). It might have a ship lying derelict nearby.

Even if the original player gets sidetracked and never finished fleshing out what happened to the originally discovered ship, their progress lives on in the phantom missions descended from that work. And, as people stumble into pieces of the missions, they will usually be able to track the missions back to the homeworld. Many people will become familiar with the way that colony was destroyed by the plague, and their desperate final missions to save themselves. As they explore that time and space, they will discover more and more details about who these people were, what they were like, and what happened afterwards and before. These facts will be easier and easier for subsequent players to discover and, in turn, creating digital recreations of these people and this colony becomes easier and easier.

So the basic progression is like this:

1) Discover something. It will relate to existing discoveries via a mission template, and will create new clues to partially fill in that template.

2) Discover clues spawned as part of a mission template. This will spawn more clues filling out the mission template or spawn pre- and post-mission events. The more interesting/sensical clues will be discovered first, creating a sort of filter to weed out the worst randomness.

3) Research pre- and post-mission events to create echoes of the partially-filled-out mission template. This will allow for events/civilizations to become big and spread between players.

4) Connect clues/events to clues/events from other chains that happened in the same place and time. This will allow civilizations to become dense and have coherent culture/items/event chains.

In the end, the civilization is not formed by a series of algorithms determining how they expanded and what tech they had. Instead, it is determined by a random events being connected and amplified. The hard part is creating the unique content elements such as alien race design, ship appearance, and so on. The second most hard part is writing up a set of adaptive mission templates.

Anyway, that's my idea.

Tuesday, April 01, 2014

Backstories are not characterization

I find that the biggest pitfall video game RPGs suffer is that the characters are pretty static and shallow.

That's because the depth of the game is in the fighting. The character personalities, lifestyles, and beliefs don't evolve, but their levels, stats, equipment, and inventory does.

Think about it: in Dragon Age, you have a bunch of reasonably interesting (if very stock) characters. DA is one of the few games to really highlight intercharacter interactions. Not only do you actually have a camp where everyone hangs out and they try to sell you for-pay DLC, but while you're wandering around the characters will usually chat amongst themselves. Out of all of the RPGs you can get, this is probably the one with the most intercharacter interactions and character arcs.

However, even then it is incredibly bad at it compared to even the most poorly-run of tabletop games.

The problem is that the way we interact with characters is via interactive dialogs. This is a terrible way to do it. Firstly, because we don't have a personality, so it's hard to contrast them against us. Secondly, because the fundamental concept of a dialog tree and relationship end states is awful.

As an example, look at the characters in Dragon Age. Alistair is a templar that is secretly a high prince. Morrigan is a total jerk that is inheriting an exotic form of blood magic while living in a forest. Wynne is an elderly mage that has been secretly resurrected by a spirit that isn't supposed to exist.

Dialog is really the only way to get to know these characters, and the dialog engine is a branching tree. So when you talk to these characters, you slowly learn their stories bit by bit as the game progresses. However, the backstories are literally just grist for the dialog wheel. Since you can only get to know them through dialog, you need to have scads and scads of dialog.

If you remove their backstory, what happens? Your labyrinthine dialogs vanish.

Does that make them worse characters?

Not really. In fact, I would argue it makes them better characters, because it allows them to shine without being caged by their pasts. BUT. You can't get to know them through dialog trees very well at all.



Think about the memorable characters in movies and books. Han Solo didn't have any backstory beyond "I need money and I have a space ship". Frodo and Sam didn't have any backstory besides "We grew up in a farming village". Even characters that did have backstory, such as Vader or Luke, didn't have giant discussions about it. Instead the backstory existed to drive the plot, not the characters.

Movies and books understand that backstories are not characterization.

These characters grow on you because of the way they interact with each other and with the world, not in describing their painful pasts. It may be that they do have a scene where they tearfully recall something, but it's not the primary means of characterization and you could even argue that their backstories are allowing them to express their character by how they deal with the past rather than actually defining their character in itself.

We don't really do this much in games, because we like dialog trees.

Dragon Age's chitchat method was really good. We got to see all the characters defining themselves relative to each other, often in very delicately constructed ways - like the way Alistair was gently spoiled, and how Wynne took some joy in being motherly but just as much joy in snapping the preconceptions of youth. Almost none of this had to do with backstory, except in a few situations where the backstory gave a topic of discussion and the two people could define themselves relative to it as well as each other.

And... that was beautiful. It was very good.

...

Then you talk to them and it's like EXPOSITIONEXPOSITIONEXPOSITIONloyaltyquestEXPOSITIONEXPOSITION okay, choose whether I'm your friend or your lover.

ARRRRRRRGHGHHGHHHH.




Dialog itself is not the problem. As you can see, I like dialog when it's not mistreated. The problem is that video games abuse dialog horribly, and that needs to stop.

1) Dialog is not monologue.

Nearly every time you talk with a party member in an RPG, it's not a dialog. It's them talking while you either nod or shake your head. While you can certainly pound home the other person's most basic personality traits by what they are willing to say, they don't have any opportunity for give and take, no opportunity to define themself in relation to your personality except in the most primitive ways.

2) Dialog is not interactive.

If the player gets to choose how to respond during a social conversation, you've made a mistake. There are no meaningful choices to be had there. Even in real life, we rarely pause to decide how to respond to a social interaction, because we already have a good feel for the sort of tone and subject matter this relationship is comfortable with. The only pauses we really see are when we're totally blindsided or when we're trying to come up with something new to say. And those can be considered actions, rather than lines of dialog.

Because of this, I recommend you make the player choose ahead of time. For example, "assign two adjectives to each party member as you meet them. These will determine how you interact with them. You can change this at any time."

3) Interaction should not be centralized.

Perhaps the most core problem is that everyone is interacting with you, and you alone. Even if you did have a personality, it would be quite a limited spectrum of contrasts. Dragon Age's strength comes from the interactions of their characters with each other. This allows you to use a much greater palette and get a much more nuanced picture of who the characters are.

One way to make this happen in an RPG is to not have a primary avatar. This used to be popular, but has fallen out of style recently. Maybe we could bring it back.

Another way to happen is to make the interactions between the other characters the primary social interactions, and interacting with the player a very secondary kind of interaction. For example, if you play a spirit or a starship or something while everyone else is an adventurer, they'll have a pretty basic but deep relationship with you while having a very nuanced relationship to each other.

4) Interaction should not be dialog.

Who needs dialog? Well, okay, dialog is not a bad way to have characters define themselves, but it's vastly over-rated.

Sam and Frodo, for example. Sam's character is defined more in how he relates to Frodo: his loyalty and courage shine through in all the details. He sets up camp, carries the heaviest loads, watches for danger, urges Frodo to act more safely, and so on. Some of this is reflected in dialog, but much of it is reflected through either actions or simple body language. Imagine if, in Dragon's Age, Alistair continually stared at you and would step between you and any vaguely dangerous-looking NPC as you wandered through towns, and even insist on opening shop doors and going through first?

Or even just imagine that he would push you off of traps or help you out of them.

Some of this would be difficult to pull off because of the mechanics of how the player plays the game. Usually players want to dash from point A to point B at maximum speed, and there's not a lot of room there for body language or interactions with the environment. But I'm sure a clever developer could come up with some way to do something, like how Dragon Age has chitchat that works fine even if you're dashing at full speed through very dull caves.

Anyway, this relates to some ideas I have on how to script characters - especially randomly generated ones - but I think I'll go over that some other day. I'd also like to talk about the evolution of character relationships and characters themselves - I think the paradigm we've got now is pretty crappy and overly confining. But you can sort of see where I'll go with that by thinking about how a game with no player avatar would run if the characters could get into relationships with each other.

Hm. Lots of thinking to do.

Monday, March 31, 2014

Semiautomatic NPCs

In which I write a very long essay as if I know what I'm talking about.

We've gotten to the point where creating random NPCs is pretty easy. In turn, a lot of games have started to use random NPCs as primary NPCs or even player avatars, rather than just filler characters. However, when brought into the limelight these characters tend to fade a bit, so lets talk about some facets of creating and using NPCs.

The first things to consider is the role the NPC is intended to play. Originally, random NPCs were simply intended to give the world a bit more color and liveliness - not every enemy you shoot has the same face, for example. However, we've started seeing a lot of other roles.

Random NPCs in tactical RPGs are very common as party members, in which case the NPCs play the role of a bundle of stats and algorithmic growth. Unfortunately, scripted NPCs have a lot of extra oomph here, as they have personalities, character arcs, unique looks and abilities, and often unique relationships with other characters. In games like Final Fantasy Tactics, most players prefer to use scripted NPCs instead of random NPCs, and there is a certain amount of annoyance at the inarguably more complex and interesting character you get later on forcing you to kick a staple random NPC off your front line. Random NPCs can have personalities and relationships, but usually they are only in the player's head and pale in comparison to a scripted NPC with actual in-game storyline.

If you want random NPCs to fill that role well, then you need to include the hooks for the social half of these RPGs - the parts where we learn to care about the characters.

We're not talking about a powerful social AI or anything, just some basic hooks.


Reduction

First, let's think about cutting away rather than adding. A big problem with random NPCs (and massively singleplayer content generation, if you're using that instead) is that you have so many options. So there's an impulse to just throw more and more of it into the game. An unlimited number of random NPCs.

In practice, this is an absolutely awful idea if you want to care about the NPCs at all. A better option is to dramatically throttle access to NPCs. If the player ever has more than six or seven active NPCs, they are going to lose track. So regardless of what sort of game you're programming, if the NPCs need to matter then you'll need to make sure only a few of them matter.

The best way to do this is to have certain exceptional visual traits. You can have hundreds and hundreds of variable NPCs just floating around the cities or whatever, but it's the ones with exceptional traits that stand out and lure the player into including them onto the player team. While there can be a rich variety of them available, the player shouldn't actually be able to accept very many of them: every character counts.

It's not just a matter of losing track of who is who, but also a matter of the social dynamics that arise. In groups of 4-7, you can create compelling group interactions pretty easily. Lower than that and you need to make the interactions super nuanced, higher than that the individual interactions start to blur together into mush.

Of course, that many characters is rather low for any decent-length game, so you would probably use mechanisms to introduce churn. Plots that pull characters away, settling characters into specific towns for bonuses, characters getting thrown in jail, characters retiring... but don't flood the player with characters. You don't need nearly as many characters as most designers think - just a few!


Reducing Complexity

A lot of random NPC generators have very organic, diverse options. For example, in an Elder Scrolls game you can randomize every little detail of their body, stats, skills, powers, inventory... All of that stuff can be tweaked very precisely.

But that kind of complexity is actually very pedestrian. It's useful - if you can do it you should - but to show it to the player is a huge mistake. For things like the exact percentage of red in their eye color, you obviously wouldn't go showing that to the player during gameplay... but, on the other hand, you do show them the exact strength rating, exact level, exact inventory...

This is stuff is obviously going to come up in the course of play, but it is just a distraction when initially scoping out a new NPC. That stuff has value only when the player has a grip on it - IE, only when the player is actively upgrading the character - IE only after the character has joined the player's team.

For things like stats, I think the best option is to randomize very chunkily. A new NPC doesn't have "strength 68", their stats are all represented in a multiple of 25 or 50, so the player can quickly understand their basic category and not worry so much about the precise number.

For things like techniques or spells, the same general idea applies. It was always annoying in Dragon's Dogma to try and find a healer pawn, because you have to read through all these techniques that the mage just happens to know looking for that one. Obviously those NPCs were not random, but if they had been it would have been smart to have a "healer" category. Any random NPC with that mage subtrait would have all the healing spells up to their level, even if a party member would normally have to buy them individually.

Their inventory also needs to be simpler to understand. I've been sticking to fantasy RPGs, and in those games the individual inventories tend to be pretty slim, focusing on the party-wide inventories. If you are in a fantasy RPG, a randomly generated NPC's inventory can be very basic default stuff, because the player is expected to quickly upgrade them using party resources. This removes the inventory as a thing that needs to be considered.

But there are a lot of situations where the inventory matters a lot more, depending on the game type. This is a bit theoretical because nearly all random NPCs are in action or RPG games at the moment, but imagine something like Animal Crossing. Except, instead of a stock town, you "adopt" random NPCs into your town. Not only is their appearance random, but also their clothes, home, inventory...

This could get quite complex to examine, so again I would simplify things. By assigning categories of interests and content, you can make it clear what sort of NPC you're talking about and insure they have a solid variety of that kind of thing. A character might be "gothy". Rather than coming with a particular "goth" costume and a particular "goth" house, they have a variety of goth costumes in their closet and a randomly created house containing goth decorations. You know what you're getting when you choose the goth even if you don't know the exact contents you'll get in the end.

Personalities are also a concern, although we'll talk about them later. Basically, the issue is that if your personalities have a lot of little fiddly stats that drive them, you'll want to summarize those stats in the same way as we've talked about above.


Shtick

More important than the statistical variation of the random NPCs is their shtick. In fact, if you have to choose between adding more variation or more shtick options, always go with shtick! Even if everyone has the same face or animation, the shtick will make them feel unique.

When you are manually writing a scripted NPC, you can add a lot of long-term characterization that can really help make the character feel real. However, random NPCs can't do that, at least not without pioneering some new kind of algorithm. Instead, you have to use shtick to give the character a maximum initial impact, to try and cement them into the head of the player enough that the player will fill in all the pseudorandom garbage that happens over the course of the game with personality.

Because of that, shticks have to leave a really strong impression. I don't recommend making atomic shticks, but instead combining two or three basic categories of subshtick into one, so you can get maximum variety. Each kind of subshtick needs to have both a visual and personality element that makes the character both look and feel unique.

For example, you might stumble across a character whose shtick seems to be "pirate". However, that's not quite true: pirate is a very obvious visual, but you instantly know a lot more about the character. For example, "Pirate queen/king", "brutal pirate", "noble pirate", "ghost pirate" - fragments of shtick that get glued together. Each one creates a specific visual and expected personality, as well as having certain statistical effects.

Depending on your needs, your shticks may be a bit more reserved. If you were making a game about high school, for example, "jock" would be a subshtick... but in a fantasy RPG, that'd be a pretty weak choice.

In addition to fitting into your setting, shticks need to be high-contrast. In order to make the characters jump out of the background noise, the shticks need to have a lot of punch. Basically, the people with shticks are exemplars of your setting, representing the highest order of some setting element. If the visual impact lies within or near the range that can be achieved by random variation, it's not a shtick, it's just a high stat. And that's a really dull thing to be your characterization.

So our pirate isn't just some grungy lady with an eye patch. She's got to go "full pirate". Some statistical forcing, yes: rings around the eyes, grubby, some bling. But most of the characteristics should be nearly unique, and certainly not found in the general population. Tricorner hat, peg leg, hook hand, parrot, eyepatch, red longcoat - pick 3.

If she's a "brutal" pirate, you get the brutal elements. That certainly involves some statistical forcing - and some of it may combine. We're going to get a lady with a lot of scars and dirt. However, brutal also comes with a custom set of animations and some body and face morphs that aren't normally available, so she'll look significantly more dangerous and hungry. After all, this "brutal" means "an epitome of this world's brutality."

If she's a "ghost" pirate, she'd obviously have some undead features - perhaps being partially see-through, or having a skull for a head. "Brutal" requires some thought as to how to make it stand out as unique, but "ghost" has obvious traits that you can just plug in.


Personality and Relationships

While the shtick serves to create an impression of the character in the mind of the player, it's also important to keep reinforcing that image over the course of the game. This is why you do need some concept of a personality.

This is a bit iffy, because by "personality" I actually mean "personality expressed in-game". Just labeling someone as shy or heroic or whatever is fine, but if it never comes up in gameplay it's totally irrelevant. If you have a "shy" personality element, then you'll need a way for them to be recognizably shy during gameplay.

If your game is just endless combat and buying new weapons, you're not going to be able to use that "shy" trait because there's nothing social to be shy about. So you can't reasonably have a "shy" trait in that kind of game, and would instead stick to traits that show during fighting and leveling and buying gear, such as "bloodthirsty" or "careful".

Normally, if I want random NPCs to feel real, I rely heavily on them feeling real to each other. Personalities can be defined in contrast to the world, or to an enemy, but in most cases personalities shine most when interacting with the people nearby.

So I usually try to implement some kind of camaraderie system where the characters chatter with each other. A pool of supplies and responses can be used to make it seem convincing, such as a shy person getting flustered in response to another person's chatter. This reveals both character's personality traits.

However, this chatter is not the same as a relationship.

If you want relationships, I recommend that you allow the player to create them, since the player knows how their personal lives are developing better than you do. Other than that, the chatter is largely stateless. It just exists to express the personalities of the characters and shake up the player's internal representations a little bit to keep it from getting stale.


Plot Arcs And Churn

Probably the biggest concern for a lot of people is the idea of a plot or character arc. Written NPCs grow and change over the course of a game! Random ones really don't.

First, I don't think it's that important. The characters should have a fairly rich internal life in the player's head, so enforcing some kind of arc on them would be awkward. If you do that, you should choose the most basic arcs and make it really obvious which characters are going to go through which arcs.

Instead, I like to think of this as an opportunity to introduce much-needed churn and emotional plot points.

So a character doesn't necessarily have an arc, but once the party has been settled into its configuration for a while, they should randomly pull the outside world into view.

For example, after wandering with us for a while, our pirate queen character would suddenly be approached by her old crew, or find a batch of pirates in the next town, or realize there are wanted posters of her all over town and the sheriff is hunting her.

There are three keys to these plot "arcs".

1) They should be very simple and have only a few resolution states. One of those states should be that the character is retired for a fair while. This probably means they all need to be preprogrammed, at least in terms of their rough structure and progression. Many shticks can share the same set of quests.

2) They should have between one and three new, unique NPCs involved. If there's a bounty on her, it's not just that there are endless hordes of faceless bounty hunters. You also have a sheriff that is an interesting character, an interesting bounty hunter, and an interesting side character who might also have a bounty on their head, or look so much like the pirate queen that they are being attacked in turn. Obviously, these slots have to be programmed into the event ahead of time, and there would be restrictions on the sorts of shtick they could have.

3) There should be real threat to someone outside your party. It's not just that bounty hunters are after your pirate queen: there are others at risk. Every unique NPC should be at risk in some way, even if the risk is just that they will lose their job. Categories of basic NPCs can also be threatened. For example, every woman that has red hair like hers. Or other bounty targets that haven't really done much wrong. Or perhaps the sheriff has bet his job on this bounty. In the end, some people will be hurt no matter which resolution you aim for.

Churn is really important in these games, or you'll settle on one party and stay with it forever. Plot arcs introduce churn, but they are hardly the only method of doing so.

Another method is "easy plots", where you have to leave characters behind to deal with a particular situation while you move on ahead. These can be suuuuper-vague, and in general should give you the choice of two party members to leave behind, and you can choose either one or both. The rate at which this needs to happen varies - it certainly doesn't need to happen in every new dungeon. These characters can come back later, perhaps a few levels higher, after the situation has been resolved.

Another method is to make dropping characters a major mechanic, like in Valkyrie Profile. By settling characters into specific locations you can prepare for the endgame or whatever. You can even make this temporary, so the characters can return later.



Anyway, those are my extreeeeeemely long thoughts on random NPC generation.

Well, that's not true. There's actually another essay this long that I want to write on the nature of interior, exterior, and pan-character growth and challenge, but I'll spare you that.

FOR NOW.

Thursday, March 20, 2014

Constraining Construction For Improved Construction

In the last post, I mentioned the possibility of turning the act of building something in a construction game into gameplay. Normally, building something is just a choice you make: the gameplay is how what you've built works, whether you can afford it, whether it fits - the actual construction is just click and maybe wait a bit.

But turning the act of construction itself into gameplay may make for a more interesting game, and result in more interesting constraints and results.

There are three aspects to this. Let's give a quick demo of each.



The first is the the idea of constraining the physical act of constructing. For example, in Minecraft you have to be within a few meters to mine or place a block, which makes it difficult to build large things or things in awkward locations. However, this doesn't mean players don't build large or awkward things: in fact, that's what they love to build most. It's a great test of skill, and very popular.

Contrarily, modders that use construction aides can build at any size pretty easily. Their challenge is in how dense, realistic, and interesting they can make their constructs. So that's what they focus on. Obviously, they also build very large things, but they don't typically challenge themselves to just build something as big as possible, because that has very little meaning once the in-game construction constraint goes away.



The second aspect is constraining the resources or space available to construct with. In Kerbal, this is the launch constraint: if you can't launch it, you can't use it. So whatever you build has to resist launch forces, and is therefore constrained. Building larger, less launch-friendly ships or ships that combine in orbit is a fun challenge a lot of people get into.

In Minecraft the situation is often reversed. In survival mode, if you are hunting diamonds, you'll build up a massive stockpile of lesser ores like iron. The sudden over-availability of this ore means you'll often get the urge to embark on significant construction projects and, say, build a house out of iron. Dirt and stone are so common that they actually surpass that and become gauche, worth less than the time it takes to place them. It's a balancing act.

Starbound uses a pixel furnace that turns ores into cash. This really helps when crafting things, since crafting requires a lot of cash. But it's detrimental to constructing things, because construction requires resources. If Starbound wanted to be more construction-focused, it would let the player drown in a glut of low-grade metals and thereby make them want to construct things with them - not necessarily out of iron blocks, but out of iron-derived elements such as iron beds or doors.

Either way, it's not just materials, but also topology. For example, if you build a house in Minecraft you may find that when you go to wire it, the size of your wiring basically destroys the house you built. Similarly, building a rocket in Kerbal sometimes runs you up against the maximum hanger size, or you find you can't do something because it'd put an object inside another object. Maia and other base-building games often have specific places you can build specific things.



The third aspect is how extensible the construction is. Basically, anything which allows players to make things they put in the game world do stuff later, relate to things strangely, or be important in a unique way.

Extending the function of your constructs is a huge part of personalizing them. Whether this is a redstone circuit or a book you can write in, Minecraft allows you to extend your construction a lot. Some of this might be in construction phase, such as redstone and pistons needing to be constructed the same way as doors and walls. Other times, it might be in an alternate mode, such as typing into a book.

The programming may be passive (adding setting details such as text in a book), automatic (sensors wired to a logic system), or manual (switches that need to be manually flipped). Of course, these things can all combine, and you can do something like display text (passive) with a series of logic gates (automatic) wired to a button (manual).

On the other hand, it can be quite simple.

To show how simple this can get, Kerbal's docking system is an extensibility mechanic. It's super simple to set up, but it can be used in a wide variety of ways. It doesn't involve any upfront programming, but it allows for very complex interactions and operations during the mission via manual activation.

Extensibility is addictive, and once you give a little bit, people want more. This is why so many of the early functional mods for Kerbal were docking-related - docking assists, hardpoint locks for docked ships, short-range fuel-beaming without docking, modular magnetic docks for base construction...

Later on, the extensibility was extended to things like cargo, power and data relays, life support requirements, fuel and materials manufacturing... all of these are individually very simple elements that require basically no upfront "programming" - you just stick them on your ship. However, it requires you to use that ship properly in complex and varied missions.

Similarly, many of the "extended" spaces in Minecraft are levels generated for people to play through. The vast engine of redstone machinery orchestrates a complicated story where players explore a space, solve puzzles, and face challenges. Well, this kind of programming requires a whole lot more care and effort in the construction phase, but the idea is the same: you give players the ability to make their construction mean more, and they'll run with it.

It allows for very high-level self-expression.



This essay was mostly for myself, since I'm thinking about how to use these methods to give a strong feel to my base-repair game prototype. Haven't got it sorted yet.

Putting Feel In Construction Games

The last few posts I wrote were about feel - about making games that integrate a particular feeling into their gameplay. For example, my Astrophobia prototype felt a whole lot like being trapped in space. And, in the past, I've created tabletop RPGs to give players a particular feel, such as a particular relationship to The Force, or the feel of being trapped on an alien world. I don't mean "gamefeel", I mean an emotional response, a tone, a nuanced mood.

But the problem is, I only want to make open-ended construction games.

This is because I feel that no modern construction games have yet been made. That is, our computing power and connectivity give us some amazing potential that we just haven't seen yet. Even games where the players share content with each other are very, very primitive compared to what it should be like. Construction games are at the phase where shooters were in 1992. The power of computers was just becoming strong enough to allow for a whole new kind of game: the first person shooter. It's the same now for construction games.

The problem is that I really can't formulate a decent construction game that has a good feel.

Oh, I can make decent construction game prototypes, but they all end up feeling pretty bland and tasteless. This is a very common problem. For example, Windforge just came out recently. It's a very advanced Terraria-like with a lot of depth. Unfortunately, even though the setting is very stylish, the actual game feels quite bland. Very minor annoyances that would be learning opportunities in another game are quitting opportunities in Windforge because I don't feel anything in particular to draw me back to it.

Its main competitor is definitely Starbound, another very advanced Terraria-like. Putting aside that Starbound is older and somewhat more mature, Starbound also has an interesting sense of style. While it is still very bland, it injects feel into its game by including really unusual monsters, special dungeons, and populated villages. Starbound has a much stronger feel to it than Windforge, and I think Windforge has an uphill battle against its most direct competitor.

The awful part about this pair of games is that the feel in Starbound is a cheat, and the feel in Windforge is legit.

What I mean is that Starbound's feel is entirely in the non-constructive part of the game. It's in the enemies, the computer-generated places, and the things you steal. When you build something in Starbound, it doesn't really feel very unique. The way the pieces relate to each other is very, very standard, aside from some simplistic wiring mechanics and a skyhook system, both of which are very late-game.

On the other hand, in Windforge you actually build very stylish, unique things using a combination of unique constraints and unique items. Moreover, the actual relationships things can have are a lot more interesting, such as an effect which steadily turns an entire island into dirt via a contagion mechanic. This is the sort of thing that should feel really interesting... but I don't feel it. I mean, I think it's interesting mechanically, but I don't get any feeling of wonder or amazement looking at the ship I built.

I can't blame Windforge for this. Open-ended construction games with a strong feel are very, very rare. If you start to look at games like The Sims, Minecraft, and Kerbal you quickly see that their feel doesn't come from the open-ended construction part, but mostly from the constraints and challenges that interfere with the open-ended part.

For example, the "feel" in Minecraft is a weird fright-night feel supported entirely by the enemies you encounter. The feel of Minecraft itself is "sssssssBOOM" and glowing eyes in the dark. The amazing castles and cities and machines that players build don't "feel like Minecraft": they mostly feel like the thing the player wanted them to feel like. Open-ended construction means you bring the feel with you when you decide what to build.

Closed-construction games have an easier time of it. For example, Dungeon Keeper has a reasonably strong feel, because the player is almost never allowed to bring their own mood into the mix. The player builds their base to resist the onslaught, within the constraints of cash and allowed population and so on. The feel of the game is embedded within the challenges and the constraints. Once you relax those challenges and constraints to let the player build whatever they want, the player brings their preferences and feelings in, and the game's feel weakens to nothing.

The reason Terrarialikes are actually more popular and common than Minecraftlikes is because Terrarialikes are fundamentally very combat-centric and are focused on crafting instead of construction. Many of the "Minecraftlikes" that have surfaced play down the freeform construction in favor of combat as well. Combat and progression can have a feel, and crafting feeds directly into combat. So if you want to be distinct from your competitors, you spruce up combat and progression. And downplay construction.

Well! Is there any way to, you know, not do that?

I don't think combat has much role in the next wave of construction games. How can I make a game that feels good?

One option is to use other kinds of challenges. This was what I tried in my most recent base construction prototype: the challenge was to maintain the bases you created, and that really feeds into the topological constraints as well as the actual devices you place. Unfortunately, I couldn't link the feel of the base and the feel of the maintenance. There might be a way, but I haven't found it yet.

Another option is to use static content that has a strong feel, such as Kerbal's gaping astronauts. I might try this, if I can find a good combination of feel and mechanics.

Another option is to embed progression into the construction so deeply that it becomes a major factor. Unfortunately, this only provides feel by taking the game out of the open-ended construction mode and into the closed construction mode.

I'm not sure if it's possible to make "how the constructed things function" have a good feel in an open-ended game, because the player brings in their own ideas as to what functional thing they want to build. The player chooses to build an ancient castle with a dungeon, even though neither castles nor dungeons exist in the eye of the game. There is value in allowing the player to extend or subvert function, sure, but I'd argue that's less feel and more gameplay. IE, outlandish redstone circuits are interesting, but do they add 'feel' or just complexity?

Well, either way, if we can't make "how constructed things function" convey feel, we have two other options:

We can experiment with making the construction itself somehow have a strong feel. I think the only games that have really done this are LEGO games, but it might be more broadly possible. This involves making the construction itself into gameplay. For example, forcing the player to physically construct things using a crane, or using inflating components that the player has to inflate however much they want, or by keeping track of whether the already-constructed parts can function while you add in new parts. Minecraft does this to some extent, because the constraint of only being able to drop or mine blocks within 5m of the camera gives a potent (if unnameable) feel.

Or we can experiment with having the execution of function have a strong feel. For example, if everything glows with magic circles when it functions, you'll end up with a particular feel. My problem with this approach is that it will probably damage a player's attempt to create something with the feel of their choice. Creating a pleasant house for your family can give a very good feel if you manage it, but if everything sparkles and acts strangely, it may feel quite odd.

On the other hand, once you are used to the uniqueness of the game, it may be that you can construct a feel while largely dismissing the uniqueness. This is how people can build things in Minecraft, after all: the square bricks are awkward and weird, but once you get used to it you can dismiss that awkwardness and see the feel that was intended by the player that constructed the place you're seeing.

On the other other hand, that may mean that the unique execution might not matter at all and therefore you can't rely on it for feel.

It's a tough call, requiring a lot of thought experiments and some prototypes.

The worst part is, there's a whole second factor I haven't discussed: extensibility.

I mentioned redstone circuits: the machinery of Minecraft is very limited. However, that ends up meaning that Minecraft has a very deep and advanced machine-centric 'endgame'. That is, it's a lot of fun to create machinery with the limitations imposed on you, and you quickly learn to be impressed by the machinery other people build, as well as their craftsmanship in concealing it well.

Similarly, Kerbal has a docking system that opens up a vast set of options for advanced play, and you quickly learn to have a lot of fun docking and undocking things for a variety of advanced reasons. You learn to respect people who do it very cleverly, such as a redockable mun rover.

Can I honestly claim this doesn't have anything to do with 'feel'? The high-end content almost certainly does have a lot to do with the feel of the game, even if the player initially only sees it second-hand. This is especially true in the next wave of construction games, where shared content will be much more common and newbies will likely encounter advanced content fairly quickly.

There is something to say for actually embedding complexity into construction itself, such that a player can essentially script or extend the functionality of something they built. This allows them far more self-expression. However, I think if you want to do this you have to do it very deeply, and make it available to midgame players rather than only endgame players.

For example, I think Starbound's biggest weakness is that the wiring mechanic is not very useful. It could be made useful if there were a much more powerful set of interactive objects it could control, such as robots, elevators, atmosphere pumps, docking bays, satellites, whatever else I can think of. If this was a more central part of the game after the tutorial section, Starbound would have a much more interesting feel.

Of course, Starbound's fundamental framework doesn't support that very well. The weight of the game is on exploration and combat, so making more advanced bases wouldn't be terribly attractive to most players. Perhaps that sort of thing would be more interesting to Windforge - for example, the ability to shift armor plates or maneuvering turbines using mechanical arms, or mechanical legs which can grip the surface... or an enemy ship.

But no matter how interesting that kind of content is, you still need to have a unified feel. You can't just rely on the feel that produces: it has to produce a feel that synergizes with the feel that the rest of the game produces.

Whew. Lots to think about.

Wednesday, March 19, 2014

The Weakness of Sci Fi Settings

I wrote a long post about the difficulty I was having translating the feel I want for my sci fi games into gameplay. In the end, it can be summed up like this:

Sci fi settings have poor feel.

Here's a basic example: what does it feel like to live on a space station?

That's a pretty core part of many sci fi settings, but if you think about all the movies and shows you've watched, all the books you've read, all the games you've played... there's no strong feeling about it. The feel of living on a space station is glossed over in favor of the feel of fighting aliens or whatever.

Here's another question: what does it feel like to walk the surface of a faraway world in a space suit?

This is a much more concrete feeling, one that has been shown to us many times. We can sort of feel the bulk of the suit, the low gravity, the sound of breath in our ears, the beep-garble-garble-garble-beep of conversation. We even allow for things like oxygen running out, damage to the suit, the "pssh psshh" of maneuvering jets, even the taste of the water in the sippy straw thing in your helmet. It depends on how hard core a fan of space travel we are: the more geeky, the more reality the experience has.

However, the suit has an advantage over the space station: it was hugely popular. Everyone can "feel" what is like to be in a space suit because there are hundreds of movies featuring space suits. Even if most of the feel is inherited from what it feels like to be in a diving suit rather than a space suit, there's still a tangible feel to it.

And the reason the suits were so popular? Because we landed on the moon and got actual footage of it. It inspired everyone.

We've also got a space station, but to be frank it really hasn't inspired anyone outside of true nerds. Instead, space stations and life in deep space inherit from other popular settings. We get grimy bars, even though bars on a space station wouldn't look anything like bars. We get streets, even though there would never be vehicles on a space station. We get full gravity, even though even if we could generate gravity we wouldn't generate it at 1g. We get showers, beds with sheets... it's all stuff inherited from more familiar settings. And, of course, the mood is inherited. We get noir science fiction, operatic science fiction, fantastical science fiction, postmodern science fiction...

Because the setting has no feel of its own, it ends up not packing much punch.

Think about a movie with a strong sense of place. For example, Lost in Translation. Whether you like or hate the movie, the feel of the movie is undeniable, a fantastic mix of what it feels like to be in Japan, traveling while tired and alone, and being stuck in a very foreign land. Each of these feelings grows from the setting as much as the actors, and much of the movie is simply moving the actors from one set to another so they can experience it for the audience.

Let's think about another movie with a strong sense of place. How about Alice in Wonderland? Any version. The places Alice goes are each engineered specifically to give a certain feeling. From the Cheshire Cat's phantasmal laughter to the Queen's mad courts, they exist to give you a feeling. I would argue that the sense and feel of the place is not as strong as in a good movie set in a real location, but that could simply be that directors who specialize in the sense and feel of a place tend to film in real places.

Now, there are very few science fiction movies that give you a good sense of place. Let's talk about a few of them.

One is the original Star Wars movie. The moisture farm scenes were especially strong, mixing a very good sense of place with just enough science fiction elements to make the world seem fantastical. But after that, the sense of place in the Star Wars movies decayed rapidly. The sets themselves actually got stronger, but the feel of the places grew weaker. When Kenobi is lurking around trying to find the tractor beam control mechanism, the sets are fantastic. But tell me: what did it feel like?

The same exact sequence could have been set anywhere, anywhen and it would have had the exact same feel. The feel was inherited mostly from the sequence, not the setting. Kenobi could have easily been wandering through an oldschool Japanese paper-walled castle, or a forest, or a cave, or a mansion, or even a boat. Except all of those places would have actually had more feel! If Kenobi was wandering around a ship, you'd have the wet, the rocking, the tight spaces, the bulkheady doors... it would have felt like a place.

The moisture farm itself is just inherited feel, a slightly Frankensteiny mix of subsistence farm feel and 'stuck in a tiny town in 1978' feel. It was good. The rest? Not so much. The feel of the places was dropped in favor of the feel of the characters and the plot.

To give you a hint of where I'm headed: this is why games all use the same damn gameplay, and generative-story games need to be reconsidered.

Let's consider another science fiction movie - or, more accurately, series. Firefly had a very strong feel to it. However, if you actually watch the series, the feel is inherited from the Western roots rather than the science fiction, to the point where exclusively Western elements are used when they want to have a sense of place. The ship itself was an amazing contiguous set, but it had little sense of place. It was only because the characters could fill it with their presence that it felt like a place.

Unlike the first few scenes of Star Wars, Firefly's attempt to mix feels was pretty awkward. The austere science fiction setting of the hospitals and government ships never really felt like a place, just like danger. It never felt like people lived in those places, or time ever passed in those places. They were just sets to challenge our heroes. To Firefly's credit, the Western elements continued strongly throughout, instead of abandoning the feel completely after a few scenes like in Star Wars. This could be because Firefly was much more character-centric rather than plot-centric.

Perhaps the grand poobah of all science fiction films in terms of feel is 2001. This is one of the few films where living in space felt like living in space. The feel of the place was overwhelming, magnified by the many unsettling perspective shots. This meant that when HAL became a threat, you felt like this was an excessively serious threat because the space ship was so fragile and weird. For once, the feel of the place was used to help drive the plot - a very different thing than the mechanics of the place driving the plot!

Anyway, there are a lot of movies to talk about. We could talk about Alien, how it started with a strong science fiction feel that faded as the danger rose. We could talk about The Matrix, which had spikes of place-feel and vast gulfs of nothing. But we've already talked enough about specific examples.

I'd like to talk about what it means for games.

All video games are set in fictional places, unless you're doing some kind of crazy augmented reality thing. This means that every game has a 'fake' setting that inherits its feel from something. Games with a good feel for their place tend to carefully inherit from real places or things. For example, the various GTA games carefully inherit the "feel" of the real city their fake city is based on, even though they don't exactly clone the map or anything. In fact, they can even amplify the aspects they want to highlight. In GTA this tends to take the form of extremely stupid insult humor from the 80s, but that's the feel they are going for so it makes sense.

You don't have to directly copy reality. Katamari Damacy has a very powerful sense of place, but it is not based directly on any real place. Instead, it attempts to create the feel of a child playing with toys, down to the assisting bits where his father is weird, all-powerful, judgmental, and makes him clean up things that aren't the kid's fault. It's a very strong mirror of what it feels like to be a child in that particular situation, amplified and twisted in its own unique ways.

I know that I have been very obsessed with mechanics over all else, but I know that the feel you are aiming for can strongly affect mechanics. In college I built dozens of tabletop systems, each aiming for a particular feel. The rules emerged from the dynamic I needed to create in order to get the feel.

Right now, even indie video games are built like summer blockbusters. The place doesn't matter, even though it's often the most expensive and expansive part of the game. The plot sequence drives the feel.

But there's only a few plot sequences, especially if we limit it to those suitable for gameplay.

We usually leave out the feel of the place and the feel of intercharacter interaction, two other great sources that could draw the players in. When we do try to include those feelings, we tend to copy them from other games or fiction, which is a bit like making a photocopy of a photocopy of a photocopy.

We should either copy from the source (something a lot of people have actually experienced) or we should carefully craft completely new feelings. Copying from copies is just a bad call.

And if we want to make a generative game, where the players move through random or player-created content?

Well, it's time to start thinking about whether we can make that content reflect place-feel and interpersonal-feel instead of just sequence-feel.