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.


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.


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.


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.

Thursday, March 13, 2014

Facilities and Space Games

Space games! And building stuff!

When you're building bases, there are typically two kinds of constraints that guide your construction.

One is topological constraints. This is when facilities have to be neighbors, or establishing connections uses up a lot of space (big pipes), or when a facility produces a certain radius of influence.

The other is spatial challenges. This is when the fitness test for your base comes from a specific location, so the line of sight and possible paths to/from that location matter a lot. IE, goblins attack - the goblins exist in a specific spot and move in a specific way. You configure your base with that challenge in mind.

I don't like overly specific fitness tests, because the more specific the test is, the less the player can express themself. For example, if my base must resist an attack by goblins, anything else I want to do with it is going to be secondary. Contrast this to Kerbal: Kerbal's fitness test is a very basic combination of gravity, hard surfaces, and thrust constraints. That's enough to challenge your creative instincts, but it's free enough to allow you to build landers, jets, space stations, rovers, fueling bases, science bases, dropships, and orbiting dance halls.

So, in my ideal base-building game, that's the sort of thing I'd like to aim for. Constraints that are loose enough to allow you to aim for anything, but tight enough to inspire creative construction.

Which means relying on topological constraints rather than spatial challenges or physics.

Here's the idea: the same construction mechanics can be used to build ground facilities, undersea facilities, orbital facilities, long-range unmanned probes, drop ships, and exploratory warp vessels. The capabilities of the individual parts within a facility can be expanded and modified using mods, with the core constraints fueling a never-ending challenge to fit this stuff together.

Fundamentally, we'll use the "big pipe" method of topological constraints, but with a huge, huge out that makes things far more interesting.

For example, you build a supercomputer. The supercomputer requires power, cooling, data, and intermittent human access. These are the four things you need to supply.

It's probably possible to supply them all relatively easily. The power and data are humorously oversized compared to reality, but they aren't so large that they are impossible to deal with. So you really end up with three waist-high sets of cables, either arranged going out in all directions, or stacked on top of each other in a three meter high wall of pipes. Human access is simply a clear path, perhaps involving small ladders to climb over a set of pipes.

Of course, the complexity in this situation arises when you have several supercomputers. Even if they can all branch off the same trunk pipe, there's still a difficulty in arranging it so that the trunk pipe reaches them all. It'll probably result in a three-meter wall of trunk pipes with a three-meter wall of branch pipes connecting to each supercomputer. And that's best case! You may need a much thicker set of trunk pipes, and you could end up with quite the wall.

Maybe you can't even create a clear path to each supercomputer due to the way the pipes get in the way. So instead you establish an 'intermittent' path. Humans only need access to these servers for maintenance, upgrade, and repair... so you put breakable junctions in the pipes. Humans can disconnect the servers to clear a path to them, allowing for work to be done when required, although it also requires the server to be turned off.

But maybe even that isn't enough. Maybe the pipes just don't work out because of other constraints in the base, such as tight corridors or other facilities placed too closely.

Here is where our 'out' comes into play.

Rather than supplying the facility directly, you can supply it by creating a controlled space that meets the condition.

For example, you don't have to hook the supercomputers up to coolant. You can simply cool the whole room to freezing temperatures. Now you don't have to run individual coolant pipes. You just have to supply the central cooling system with whatever supplies it needs, and it can be located somewhere a bit away from the supercomputers, freeing up a lot of space.

Similarly, you could rig up a floor with extensive high-tech electrical wiring. Anything connected to the floor draws from the floor's power supply without needing a specific cable run to that specific point. Of course, you can't touch the floor or breach it - you'd get fried! So you have to run actual walkways across it, and other supplies have to be run in from other directions rather than up through the floor.

Creating these supplied spaces allows us to instantly expand our facility management into new and very interesting situations.

First is, of course, the added complexity of these spaces. Constraints as to how exotic and/or sealed-off they are balance well with the ease of supplying a centralized point rather than a bunch of diverse points. For example, an electrified floor is handy, but it will kill you. A freezing room is handy, but you can't leave the door open and you need special gear to work in there for long.

Second is that these spaces allow us to move into or create exotic conditions, and then allow the player to create "exotic" conditions that are normal. For example, if you go into space, you can wear a suit all the time to provide you with the air you need. Or you can create atmospheric spaces! Undersea base? Same thing, except you can also draw in the sea water for various purposes. Need to do ultra-gravity manufacturing? Create a high-gravity enclosure... or create a base on a high-gravity world and create a low-gravity enclosure.

Nesting the spaces is also interesting. This is an atmospheric area, but it contains a cold room and a hot room, and both rooms have electrified floors...

Lastly, maintenance and repair suddenly become really interesting. You have to replace an air filter. But, uh, first you have to depressurize the area, remove the roof, bring in the secondary power cable via crane, disconnect the electric floor, and only then can you go in and repair it. Oh, of course, you'll need to wear a space suit.

Combine this with a networking system where bases provide ongoing resources and processing, and you can create a game where bases are interesting to build and maintain, but without the limiting and over-controlling challenges that normally test your bases.

I like the idea. I may try to whip up a prototype soon.

Friday, March 07, 2014

Massively Tweaked Randomness

I've been thinking about player created content in vast, open-world RPGs.

Consider Minecraft. Here's a kind of content sharing that could have been implemented:

Whenever the player edits a chunk, there is a chance that the edited chunk is saved (along with all its edited neighbors) to the server. Then there is a chance that, whenever a player stumbles across a zone with the same basic parameters, the other player's saved structure is pulled into their world instead of the default terrain. Of course, if this player edits that newly spawned structure, there is a chance it gets saved again, as a new spawnable... in this way, interesting structures proliferate as players build within them, push buttons, etc, while boring structures fade out of the pool as players walk through without interacting.

This is a very simple system that would add a lot of player-generated content to everyone's experience. Yes, it would "unbalance" the game if you suddenly spawned in the port city of Atlantis, but who cares? You could even tweak the way spawning works by allowing players to find "maps". If you are following a map through unexplored terrain, it will spawn in player content, otherwise it won't.

Anyway, let's consider an adventure RPG, like Mass Effect.

You can generate random places. You can even generate random NPCs giving out random quests. But they don't feel right. The reason is because an adventure RPG has a very particular feel to it. An adventure is not simply about seeing new places, but about being pulled into them and pushed to experience them. When you arrive in a new place, it spends as much time pushing at you as you spend pushing at it.

You enter a new city and look around a bit... but the NPCs and situations are not wholly passive. A scene unfolds where some cops arrest a man but he escapes. Someone rushes up to you with a question. You overhear some people talking about a curfew. You are attacked by hooligans wearing a dog skull emblem. The weapons shop is gone, burned down. On a subtler level, perhaps one of your party members comments that their parents lived here, or that they know that person, or that something is 'despicable', or that they found a secret door.

These are all "draws". They pull the player into caring about the local environment and the people within it. These people aren't quest hubs, they are people who need help. Yes, the player might think "oh, side quest!", but at the same time they are thinking "she needs help with this monster before all her fields are destroyed".

This can be automated to some extent, and you could probably build a pretty good game out of it. But it'd still be random, disjointed.

This is where "massively tweaked randomness" comes into play.

Asking a player to design a whole city is a bit much. Even asking them to design a sidequest chain is probably a bit much - few players would care to. But you can ask them to tweak what exists.

For example, let's say that there's a lost child and you decide to return him to his family.

Why give him a defined mother or father? Leave the quest open-ended if the player is playing in creative mode. The child needs to be returned to his parents. So ask the player to choose which NPCs are the kid's parents.

Now that it's defined, the NEXT player that comes through will see a kid that needs to be given to his parents, and the parents will already be determined. So they can add in a complexity - send the parents off for some reason, or make it impossible to reach that side of the city from here at the moment, or spawn a kidnapper that's trying to grab the kid away from you.

Or they could add complexity after the quest is over: the kid and family are now a unit again, might as well attach a new quest to one of them. Let's see what quests we have in our bag of fate: oh, here's someone whose factory burned down and it needs investigating. Let's attach that to mom. Mom's factory burned down and needs investigating.

The next player who comes by, maybe he encounters the mom character before the kid character. She's not willing to give out her burned-factory quest because it's waiting on the "reunited with kid" quest. So she says something like "what a nightmare! First my factory, now my kid?!"

In this way, we can allow players to iteratively build a fully-fledged adventure world. Ask each player to donate just one idea to the setting. One new NPC, one new location, one new tweak. Each time, the location gets richer and more interesting.

We can also store variants and allow the player to choose between them. For example, let's say someone adds a mostly-naked troupe of dancing orc girls to the elven village, just randomly out of nowhere. Subsequent players, upon seeing this, can remove it. It gets less and less likely to show up in a new player's experience the more people remove it. On the other hand, if subsequent players explain why they are there and steadily work them into the tapestry of the experience, they become steadily more likely to exist. The more connections they have to other places and people, the more likely they are to exist.

Anyway, it's an interesting thought. It'd be interesting to come up with the in-game logic for why the player can reshape reality slightly.

This would really only flourish if the players were also allowed to flat-out add content, allowing for completely new places, peoples, things, and gameplay to arise long after the game's release.