Showing posts with label social simulation. Show all posts
Showing posts with label social simulation. Show all posts

Wednesday, September 05, 2018

A Sense of Place

So, I really like games with a sense of place. Some days, I think it's the most important part of a game, more important than how the game actually plays.

But only some days: the vast majority of games don't give me any immersive sense of place.

I asked around on Twitter, and nobody chose the same places I did. They all had very different priorities. And it's clear that game devs share their priorities - especially clear, given half the respondents were game devs.

What they mostly liked was a sense of scale. Mostly cities with epic vistas and large scales.

I sure do like pretty cities, but that's not what keeps me coming back to a game year after year. I'd like to talk about what I like in cities and towns, try to nail it down so that I can build it myself.

So, let's start: one video game city that keeps luring me back is in Bloodlines.

It's not big. It's not beautiful. The design is blunt and uninspired. It has no redeeming qualities as a city or a piece of art.

But... I keep replaying the damn game, and a big part of that is how much I enjoy being in the city. There's a little fizz beneath the city that instantly smashes me into the game and keeps me there.

I think that's a good hint. Since there's not much distracting epicness, I can focus on the one thing I want to see more of, even though it's just a fizz.

Pace in Place

In most games with cities, the cities are subordinate to the wider gameplay. The city might host missions or objectives, but living in the city is not an objective.

There are games where the city is the main gameplay. For example, in Crackdown. Surprisingly, this seems to be even worse for my little fizz: it reduces the city to a mechanic.

The experience of being in the hubs in Bloodlines is different.

You are living in the city. Or... unliving, I guess.

You're existing in the city.

Your struggles in the game are simply struggles to continue living in the city. You end up fighting dangerous battles against ridiculously overpowered enemies, but the point is that, at the end, you'll get to go home and take a nap and then tomorrow you can maybe visit your friend downtown. Even the end boss is literally chosen by you deciding what kind of city you want to live in!

Over the course of your adventure, you establish a life in the city, with friends and coworkers and maybe someone to date.

You also get to know the city a bit better. Although exploring the city isn't really the point, you do explore it while you roam around trying to make a life for yourself. There are plenty of things to find - a few topological secrets, like the back entrance to the the pub. A few new people with new missions, such as Ash in the cemetery or the truck vendor that wants you to clear out a parking lot. A few areas that are locked and you'll have to remember later.

The pace of discovery feels right to me. In many video game cities, you explore to find random treasure baubles scattered around. But in Bloodline's cities, you search to find new people with fun new missions, new shortcuts, new locked doors you'll unlock later. You never feel like you came here just to get a mechanical reward: if you go into the back alley, you won't find $5 in a treasure chest. You will find a skeevy guy that wants you to clear out a parking lot.

In a theoretical modern remake, you might feel compelled generate these missions on the fly. But you'd have to be careful: the point is to make a life for yourself. When I clean out the parking lot, the skeevy guy not only gives me a reward, but becomes a better vendor. If you were randomly generating missions, you'd still have to make sure the rewards are about better living... and I don't need more than one skeevy guy selling me stuff.

If you look at the missions in these cities, nearly all of them are about living in the city. Either getting you established, or making the city safer for you, or making friends and allies.

Even though all the NPCs are barely functional weirdo jerks, they somehow become your barely functional weirdo jerks. Mission after mission, day after day.

Counterexample

The most obvious counterexample is Stardew Valley, or any similar game. They are about building a life, but in the most mechanical way possible. You literally build your life: more farmhouses, more crops, more ore, more machines. But the town is not really part of that.

The NPCs are rigid and inflexibly forced into your life. You cannot be allowed to alienate the shopkeep because there are no other shopkeeps. You cannot work for or against the mayor, because there are no other factions. There are few NPCs, and they largely exist to fill specific roles in the gameplay. Dating is the exception, but usually you can only date NPCs with no critical role, and therefore they have no actual place in the town. Moreover, you can typically only date one of them.

Although you can make friends, there's no particular change in the way the game feels, or your lifestyle.

This doesn't mean the games are bad. It means those games aren't what I'm talking about right now.

Extending That

If I were to imagine a game where this little fizz was turned into a torrential waterfall, we would need to punch the Bloodlines up without Stardewing it.

A big part of it is that the city is largely not interested in you. They don't like you, but they don't dislike you, either. If you want to make a place for yourself, that starts with proving yourself to them in their own personal corner of the city.

This is in stark contrast to most game cities, where the inhabitants are intended to pull the player into the game world and narrative. The NPCs in a normal game might welcome the player, or be hostile until a plot point, or they might just talk incessantly about whatever the main plot element in the area is.

These are all the wrong choice if you want to feel like you are making a life for yourself.

This doesn't mean they can't do those things. But the main purpose is make the player figure out how this person fits into their life in the city. Maybe the player decides they're a threat and sabotages them. Maybe the player needs their friendship... for now. Maybe they want to date this person, or just want them around as business partners or something.

And, along the way, the NPCs can be welcoming or hostile or exposit endlessly. But regardless of that, the player knows this is a person that will impact their life in the city, and they have to decide what kind of impact that should be.

Easy example from Bloodlines: when you meet the two-faced bar owner, she's friendly... but you know she can't be trusted, because you haven't earned a life here. Similarly, although the anarchists are unfriendly, you know they can be turned around and made friends if you can earn a life here.

If you're considering how to structure your missions, this is a good thing to keep in mind. Not only in terms of how the initial encounter goes, but in terms of the final outcomes: the player's goal is to be friendlier, sabotage, charm, alienate - therefore, those should be the possible outcomes of the mission, rather than choosing something like a "renegade" or "paragon" ending.



The design of the city itself is also important, because living a life means being in a place.

This doesn't mean the city needs to be beautiful or epic, but rather that these NPCs need to have lifestyles and locales. They have their life in the city, just as you want to have. By choosing who to rely on in what ways, you get an echo of these lifestyles.

This was one thing that really, really worked in Bloodlines: all the NPCs were vampires, meaning they literally don't have day jobs. Whenever you meet them, they're doing whatever they've decided to dedicate their life to, and that includes the lifestyle they've chosen. From the poolhall relaxation of the anarchists to the overly formal, excessively expensive meetings with the town boss, none of the vampires are ever portrayed as simply filling time with sleeping or working a day job. They are always living their life. Unliving their death. Whatever.

Contrast this to games like Fallout 4, where the only thing that defines your settlers is their day job.

Establishing a lifestyle is not something which has to be scripted. It would be relatively easy to randomly generate NPCs with specific lifestyles and specific methods of fitting into your life. But it would be difficult to randomly generate them in the right variety: NPCs come in packs, and often a pack of NPCs will have similar lifestyles and offerings, but subtly different ones.

If you do generate randomly, you'd need to think in terms of generating teams of NPCs rather than individuals that happen to be in the same place. There are a lot of fun scaffolds for this, such as the five-person hero team, but they'd all need to be adapted in order to make sure that the player has something interesting to gain from each one, and perhaps a reason to prefer specific members of the team over others.

All of this would need to be reflected in the construction of the city.

That in mind, the team should probably have a good time hanging out together in places that suit them. If their lifestyle together doesn't seem fun, that would poison the well: the player wouldn't be interested in fitting into their life. There's a lot of different kinds of fun: an annoying overlord can still provide a good lifestyle if the player thinks being rich and powerful looks like fun.

Near Misses

There are a number of cities that make me allllmost feel the fizz, but it fizzes out.

One set is the Citadel and your hub ships in the Mass Effect series. The first impression is very good, but it doesn't end up panning out because you aren't trying to establish a lifestyle. It's about already having a lifestyle, and getting to live it.

That's not bad! I loved hanging out with my buddies. But I never got to choose how people fit into my life. They were written in or out of my life at the scriptwriter's convenience, and that left me unable to get that fizzy feeling.

Most such modern RPGs give that same "alllllmost" feel, like Dragon Age.

Another example is The Sims. While I can choose which characters fit into "my" lifestyles, I can't get a feel for the city. Their lifestyles are encapsulated in their individual homes, and nobody is really integrated into the city.

Even if I go into the city and people are around, I know it's not really an integration. Their existence or lack of existence wouldn't change the feel of the city any.

There is one other example I wanted to talk about: Skyrim (or the modern Fallouts). These have lots of cities of varying size and shape, all stuffed full of NPCs that have opinions and lifestyles.

These cities create an itch I cannot scratch. Their characters have lifestyles and want me to help them, but doing so doesn't lead anywhere or provide me with a life in the city, because there's no reason to have a life in the city. If I decide to track down and kill the weird cultist... nothing changes.

While I do replay these games frequently, I typically spend less and less time being social in cities, more and more time doing other things. Being social doesn't really lead anywhere.

It does in Bloodlines. It always leads to a new life in the city.


... anyway, I wonder whether anyone else feels like this.

It might just be me.

Tuesday, January 09, 2018

The Sims vs Rimworld

There's a new genre hiding in plain sight. A genre about people.

Base building games are including more and more "personal simulations" about the people in those bases. For example, in Rimworld each member of your crew is simulated in great detail. Not only their stats and skills, but also their moods, personalities, traits, and so on.

But it's difficult to feel the "story" of these people. Despite getting sad over losing their dog, or having a bad case of the plague, or dating someone, the character stories don't really have a strong impact on the player.

This is because those events are framed in terms of how they affect the facility rather than how they affect the person.

If someone loses a pet and goes into a long mourning slump, the player has to try and keep them from going berserk or spending days just wandering around. It doesn't even really feel like "the story of that person", it just feels like one of the cogs in your machine is wobbly.

Because it is.

A base building game like Rimworld is about building bases. It's about creating an ever-more-complex self-sufficient machine. The inhabitants, no matter how diligently simulated, are cogs in that machine.

In contrast, consider The Sims.

It's a different setting, but The Sims has most of the same kind of setup as Rimworld when it comes to people. Each sim has specific traits and skills and goals, they tend to have specific jobs, things can go wrong - it's very similar to Rimworld in that regard.

But the house they live in is not a complex machine.

Although you can build your house with astonishing attention to detail, it is not self-sufficient and doesn't need to be. As long as there's some source of money, everything else is optional, and there's no real need to optimize your performance.

The role of "day job" is less about optimally making money and more about providing a scaffold for life experiences - it shapes both the character that goes to work and everyone they share the house with. If things go wrong or get delayed, the house will not collapse just because the day job person is being suboptimal.

Compare this to Rimworld, where it's very likely that half your base will catch sleeping sickness and then whoever is awake will get too moody and start lighting things on fire, at which point a crowd of monsters will attack. Rimworld is about creating a base that can survive all these bumps in the road, even if they pile up. So anything that goes wrong is a bump to your base, even if on paper it's the story of how Anna is depressed and Bob is sick.

The Sims is just the opposite. If something in the house goes wrong, like a sink exploding, the player will naturally contextualize it as part of Anna's crappy day rather than a systemic setback. Even death isn't a sign that the house is doing badly, it's a sign that someone's particular story has come to an end. That may be very upsetting, but it's contextualized as that person dying, not your overall facility degrading.

I think nearly all of the difference in this contextualization is simply because the 'facility' in The Sims is not a high-stress facility. You don't have to worry about droughts or animal attacks or hurricanes. It's pretty easy to establish a baseline habitability, and then everything else is just improving things more or having fun with side tasks.

The lifestyle options for Sims characters are all side options. Some are very dense, some are not, but they are all optional. They provide a stable, steadily-progressing scaffold for the characters' life stories while also providing a steady diet of life events. For example, gardening: you don't have to garden, but if you choose to, it's a steady task that moves forward day after day. Your garden will never be attacked, and even if your whole garden was destroyed, your sims would not die: the baseline habitability would not degrade that far.

If we want to make a game that focuses on the lives of the characters, it's critical that their support system is straightforward and robust, so that setbacks can be judged as affecting the characters rather than the support system. Similarly, the progression system needs to be character-centric rather than facility-centric.

As an example, Rimworld's research system unlocks construction options for the whole base once someone researches how to build it. A character-centric approach would be to allow only that character to build it.

In addition to being character-centric, a character's chosen lifestyle/career/hobby needs to provide a stable, steadily-advancing scaffold, needs to exert pressure on their life and the life of those around them, needs to provide small random events and schedule burps, and needs to respond to a character's own personality/pressure/situation outside of the lifestyle.

For example, rather than the farming system Rimworld currently has (identical to other games such as Dwarf Fortress and Minecraft), we would instead have the farmer work fields on a schedule. The more fields, the more hours of the day are required, and time spikes at harvest and planting. The result is a nice, predictable, slowly-changing curve as to how much time they have to work and how much time is available for other pursuits. Their early-morning schedule would bump up nicely against someone who gets up later - for example, a researcher or carpenter.

In theory, the fully-simulated fields work this way. But in practice, there are too many variables. For example, just walking from point A to point B can take a lot of extra time. Also, the characters aren't great at schedules, and frequently get distracted by their overwhelming need to pick up a meal halfway across the map or whatever.

By reducing the simulation fidelity, we can allow for a more 'readable' character lifestyle. This will help the player to 'feel' the character's life, personality, needs, and so on.

And I think that is where a genre is hiding.

Right in there.

Tuesday, August 25, 2015

Time Compression Minus Space Compression

I love base-building games. You may have noticed.

But I have a big problem with them: every base-building game reduces characters to a cog. They exist to do a job. The individuals are played down, the base played up. I want a game where the characters are more important.

A core feature of base-building games is time compression. This allows the base to progress faster than life, which is obviously something you want. There are three ways of time compression.

One way is lifestyle compression, AKA space-time compression. This is like The Sims: each character in the base has things they do over the course of the day. They wander to and from various rooms or facilities, use them for a specific amount of time, then move on according to a compressed schedule.

Lifestyle compression normally exaggerates the cost of space. It takes 10 minutes to walk 10 feet in the Sims, so you're strongly rewarded for literally compressing your space. An ideal room in that game might be a large, many-cornered room where all the furniture is right by the door, so nobody ever has to actually walk across any of that space. It's not uncommon to mix rooms together to try and put functional furniture close to each other even though it would be a disaster in real life.

You can blunt this effect by having the characters teleport rather than cross space as the timer ticks, but this is rare and largely considered immersion-breaking. Keep this in mind, because it's related to my solution.

Another method is lifestyle trimming, AKA schedule compression. This became common in Flash and mobile games, and can be clearly seen in games like the mobile Fallout game about managing a vault. This compresses time by simply trimming away all the other things people might do. They are always at work, always in the classroom, whatever you have assigned them to do, they are always doing it. They don't need rest, they don't need food breaks, they don't have a personal life. They are cogs.

This method is great for not compressing space, allowing you to build your base more freely. But it has the side effect of destroying any semblance of personality: the people in your base are simply mechanisms to make the rooms function. You can try to assign them personalities in your head, but once you have more than about 7 of them, that tends to fall aside.

The last method is lifestyle chunking, AKA turn-based/phased scheduling. This is pretty rare, but the basic idea is that time progresses in chunks. This has the uncompressed space of lifestyle trimming, but leaves people's personal lives intact enough that they can have personalities and be remembered as unique individuals by the player.

This method is pretty rare because it's normally done using a turn-based approach, and that's fallen out of favor in recent years.

I'd like to describe a variant of this method which uses a real-time approach. I've designed and paper-prototyped a game, and it might be a fun illustration of how these three approaches are far from tapped out.

****

You are in control of freighter space ships, traveling vast distances. Each mission lasts months, years, or even decades - although you can have several ships running missions concurrently if you want.

This is the statistical heart of the game. How long is your trip? How many supplies did you bring? How fast/efficiently can you reuse or regenerate supplies? Food, water, clothes, 3D-printer goo, multipurpose electronics, entertainment supplies, luxury goods - all are worth considering as missions get longer.

This foundation drives the rest of the game, giving the player an easily understood baseline to work from. If you want to save mass, put in a water purifier that recycles most of your water. In the beginning, a 90%-efficient recycler works great. But as your mission length stretches to years or decades, you're willing to pay out the nose for a 95%, 98%, 99% efficient recycler. Maybe even have a crew member that is especially good with them to wring out every last possible percentage.

This is a natural growth. Simple, foundational limitations that urge the player to design a base to more efficiently push back against them. Each pushback is a little more complexity on the base building and management side of things. This is a "slow-cycle" gameplay, and is perfect for putting on some medium- or fast-cycle play on top. IE, managing the crew.

But a little more about the slow-cycle gameplay:

Each ship can be designed at least partially by you. This is a base-building game, after all. The ship chassis is set in stone: all you can do is choose what rooms go where. And, in many ship designs, some of those rooms are also set in stone.

The key trick in this Newtonian (no-light-speed-limit) universe is that the space ships are all designed around the same concept: accelerating for half the journey, then flipping and decelerating for half the journey. This produces an almost constant "gravity" towards the engine of the ship, and to minimize damage from interstellar particles, the ships are all classic 70s cigar shapes.

This is not just flavor. The interior of the ships reflect this approach, and every ship has the same three "decks". At the very top of the ship, where nose is narrowest, are the living quarters. Below that, the ship begins to widen, and you have the communal space/off-duty area. Below that the ship gets wider yet, and you have the on-duty areas like engineering, 3d-printing facilities, laboratories, bridge, etc.

That's just the nose of the ship: below that is a huge space for cargo and engines and whatever. But that space just exists statistically: you only care about those top three floors. On-duty, off-duty, and downtime.

And there's the secret. Rather than chunking our lifestyles by time, we're chunking them by floor.

When you look at the on-duty floor, you see your whole crew busy at work at their stations. No matter how many days pass, they work work work work work.

But if you pop up to the off-duty floor, you see your whole crew busy with their secondary tasks. Cooking, cleaning, eating, playing games, drinking together, going to lessons, exercising, etc. While they may move between these stations sometimes, they never leave this floor. You can watch them have their off-duty life continuously. Of course, this is just a view: they are also still working, there's no work penalty for watching them hang around off-duty.

If you pop up to the downtime floor, you see them sleeping and getting up and going to bed and trying to eat breakfast and stuff. Again, you can just watch this forever. They are also working and off-duty at the same time.

This three-view split allows you to easily handle whichever floor you want whenever you want.

The on-duty floor has a minimum of personality. Your characters are basically cogs, keeping the ship running. This floor has the most rooms in it since it's the widest area: in the starter ship, there would be a circle of 8 wedge-shaped rooms with stairs running up the middle. Later ships might have multiple circles, or half-circles, or other interesting configurations, but it's always circle-based with the same wedge-shaped rooms.

The off-duty floor has a narrower circle that continues up from the on-duty circle, with 6 rooms per full circle. This area is about tending to crew needs, starting with food and cleaning, then up to recreation, training, etc. Where people are assigned here is a strong indicator of their personality and interests, along with creating a coherent shape to push the crew to higher levels. You may need to tweak this to keep the crew happy, as most people aren't going to want to be assigned to KP for ten years straight.

The downtime floor is the narrowest circle, with only four wedge-shaped rooms per circle. These are bedrooms, bathrooms, and lounges - places you would hang out quietly, sleep, or get ready for the day. This isn't just flavor, either, because the way these rooms are allocated changes what people have what pull in what groups.

For example, the starter ship (a single circle, classic cigar shape) has 4 downtime rooms. One is hardwired as a lounge. Another needs to be a bathroom. The other two are bedrooms, but since there's a crew of three, there's a two-person bunkroom and a one-person private room.

The captain gets the private room. By that I mean: whoever is in the private room is probably the captain, because social rank is determined by who has the better or worse accommodations. This is reflected in the interpersonal events which can happen, and in the flavor interactions that happens as you watch.

Later on you'll get ships with multiple cores. For example, a two-pronged ship might have two cores, which means 8 downtime rooms. But the two circle cores are important because each is a different social circle. People in circle A tend to hang out with people in circle A, and B sticks with B.

This is a natural and easy way to "cluster" your inhabitants. Even if you have 30 crew, you can "chunk" them in your mind by who they hang out with and what their social standing is in their group. Each player can choose to chunk them in any method they please - one player might prefer to have "A" be for the greasemonkeys that keep the ship going and "B" for command staff and pencilnecks. Another player might have "A" be for women and "B" for men. Another might choose to cram everyone into "A" and have "B" entirely reserved for lounges and bathrooms. Since you choose your crew, you can choose to have only a few people in palatial suites, or cram dozens of people into coffin bunks.

These clusters propagate to the off-duty area. When not actively assigned to a specific duty, people will choose to hang out with others in their group. You can use this to gently guide the crew - force-assign one person from group A to a classroom, and the rest of the people in group A will automatically try to go to class with them... but they will take breaks when they want to, keeping themselves from overstressing. So assign that bookworm that never gets tired of studying to the classroom, and just let the whole group slowly rank up.

This kind of base management feels pretty easy in the paper prototype, and it seems easy to keep track of even ~30 characters.

The last piece of the puzzle is interpersonal events.

I don't think these events should be simulated, at least not past a very basic level. Instead, my approach is that when an opportunity for an interpersonal event arises (random chance), you can click on it and it displays a variety of possible outcomes. No explanation as to what happened to get them to that result. You choose whatever result you want, and imagine whatever interaction you want to justify it.

The potential results will vary depending on what floor you were on when you clicked the event, the established basic relationship of the two, and how they are socially related. IE, a married couple might have different potential results than two people that have never met.

In the paper prototype, I simulated this by drawing random outcomes, but having "upgrade" notes - if a specific relationship existed, the outcome was morphed. IE "start dating" morphs into "get married" if they are dating, morphs into "have kid" if they are married, etc. With this in mind, I can choose from several potential outcomes that reflect their basic relationship, and the game doesn't have to simulate anything or know personalities or anything.

This means A) the player gets to imagine events and personalities, B) we don't have to simulate them and C) we rarely, if ever, conflict with the player's vision.

Anyway, that's my design. If you got this far, let me know what you think. If I get some free time, maybe I'll try programming it.

Thursday, August 06, 2015

Generating Episodes with Outrage

Well, I thought about it a lot, and I came up with a new kind of game. It's a base building game - let's say it's about a space station. You build the station, manage the various pieces much like any other construction game.

But it has a second kind of play: you can drop into episodic stories similar to what you might get on a TV show set on your station. Say, Babylon 5.

The secret sauce is outrage.

Instead of health, we track how angry characters are. An episodic story starts quite simply: someone is angry about something. We have a heuristic for setting up the whole situation - plonking in a bunch of characters with simple relationships, some resources, some places. For example, maybe a genocidal ex-warlord is visiting the station in secret, in order to get surgery to change his genetic fingerprint from a gray-market surgeon.

The player created a number of characters as the "named crew" - each with stats, skills, and personality. This time, the linchpin character is the station's official doctor. He realizes who the visitor is and becomes outraged that this warlord is still floating around free, and will escape forever if the surgery is successful.

The situation can be made as simple or complex as our engine and patience allow. We can add in constraints like "in this sector, there is no warrant for his arrest and no charges have been made against him" or "there is an assassin aiming for his life" or "he has young children" or "he has a shipment of slaves" or whatever. We can add as many or as few details as we would like.

The core driving force is the doctor's outrage. It's very high - over the maximum limit. The doctor is on an in-game timer: if he doesn't act within a few hours, the player will lose control and the doctor will act as an NPC for the rest of this episode. Of course, anyone can be enraged and act out because of it, the doctor is simply today's starter.

In order to keep control of the doctor, we have to act. Actions related to the outrage's source will reset the timer, so we can keep control if we do something related to the warlord. Ideally, we would like to reduce the outrage, but that's significantly harder to do since the source is something outside of our control.

Here starts the gameplay proper. What does the player do during these episodes?

The key is to not make the player do anything. The player is allowed to take any action they want (well, that we modeled). We don't insist that the player bring the warlord to justice, or protect him from the assassin, or whatever. The only thing we do is set up a situation where if the player doesn't act, he'll probably lose a character (the doctor will go rogue due to high outrage).

ANY action related to the source of the outrage will delay the doctor going rogue, and the player can take more or less any action. This is a simple-asset 2D game, so you control the doctor mostly via menus rather than any kind of walking around, and that means you can select actions from lists in menus.

There are a large number of unique and interesting skills in this world, and each character you create has some of them. The doctor might have "contagion management" and "medicine" as two high-rated skills. These skills come bundled with generic actions: "quarantine" is one from contagion management, while "sedate" is one from medicine. In addition, the doctor's position as head doctor also gives him some authority over other doctors on the station, including the gray-market surgeon. The doctor also has a huge number of other generic actions such as moving around, calling friends, carrying stuff, whatever.

The key to all of this is that every action causes outrage dependent on how much it annoys the people affected by it. You can avoid outrage if your action is in regards to something that is already causing them outrage, but that's definitely not the case here. If the doctor decides to quarantine the warlord, he can. But it will outrage the warlord and his crew. Moreover, they will all know who they are outraged at: the doctor. This might be good, it might be bad, that's up to the player to decide.

Instead, the doctor could choose to sedate the warlord and sneak him away to some secret place. This causes substantially more outrage, but since it was done in secret, the crew don't know who to be angry at and are instead just angry in general.

The player can continue to take any action they please, targeting any character or place they please. Maybe it's time to activate the cop character: otherwise, those angry crew are going to cause a lot of trouble for the space station. But the cop doesn't know the doctor is the kidnapper, and the doctor is still boiling over with fury: he'll go rogue soon, since he's done taking actions against the source of his outrage.

Fortunately, the cop can use her 'investigate' action and look deeply into the visiting ship. If this had been done right at the start, it would have caused a lot of outrage, but in this case there is an excuse. The crew members don't get outraged - the cop is acting in regards to the source of their anger. They don't get any less outraged, either, but at least their angry actions are delayed while the cop acts on their behalf.

The doctor is also assuaged by the cop's investigation, since the source of the doctor's outrage is the kidnapping victim, and the cop's investigations naturally bring that up. So the result is that the cop gets to investigate while simultaneously pacifying everyone on both sides of the fence. A good way to have the situation unfold.

Complexities, secrets, hidden agendas, and time limits can all be deployed to screw the player up. That part is straightforward.

What's not straightforward is creating and modeling all the various actions that the various characters can take.

Well, it is straightforward, but it needs explaining.

Actions fall into a few basic categories. These categories can be expanded on later if needed, but the idea is the same: variations on a theme.

For example, "lockdown" is one generic action type. This includes arrests, drugging, kidnapping, quarantining, stabbing, delaying, identity chip canceling - the intent is to keep the target from performing specific kinds of actions. For example, kidnapping someone removes almost every kind of action they could take, while locking down their bank account just prevents them from taking actions that cost money. Of course, locking down someone's bank account generates a lot less outrage than kidnapping them.

Each lockdown action filters out various actions and has various acceptable excuses to prevent outrage.

Another action category is "travel". This would include walking, sneaking, driving, taking a taxi, flying a spacecar, flying a battleship, etc. Each of these kinds of travel has a different price and annoys people in different ways, as well as covering different distances with different minimum ranges and with different up-front delays. Travel can be aimed at people as well as places, so our doctor could tail the warlord by using any of these actions with a lower minimum range than his current range.

Another action category is "communicate". This is the action of sharing outrage between people in various ways, and includes gossip, complain, compliment, reassure, etc. One of the biggest issues for the player is that outraged characters will tend to gossip and complain, spreading that outrage to everyone.

Another action category is "investigate". This could include stakeouts, interviews, sensor analysis, hacking into databases, etc. Each specific action has different parameters and different targets, but the fundamental result - coming out of it with more data to act on - is the same. Having additional data can mean knowing more targets (people or places) for other actions, but it can also mean being able to "inoculate" people.

This is when you cause someone to get outraged at something specifically so you can take an action and not outrage them. For example, if you arrest someone without cause, they'll complain and spread their outrage to everyone they can talk to. But if you have evidence that they are a murderer, those people will be inoculated against it, and only people who aren't upset by a murderer will be upset by the arrest. This can even inoculate the murderer in some situations, creating wonderfully complex characters!

Another action category is "instigate". This includes blackmail, allying, fast-talking, seducing, programming, etc. The various kinds of targets that you are trying to convince, the method used to convince them, and the kinds of actions you can make them take might all vary, but the fundamental act of instigating is easy to model.

All of this results in a system where we understand the basic parameters in play and how each category of action affects them. It's up to the player whether they prefer to use stakeouts or interviews to do their investigation. Or perhaps they prefer to instigate instead of investigate. The machine is just as happy to chew on that action and alter the scenario to fit the result.

The difficulty is not the actions, but creating an interesting response to the action. If the player can stakeout or interview, what makes one better than the other? Aside from having one point more skill in one or the other, why would a character prefer one or the other?

That's where the situation needs to be complex and multi-faced. Outrage is a big help here: in trying to minimize outrage, you'll often find one or another action does best. Stakeouts and interviews create or assuage outrage at different times. Stakeouts tend to be secret, creating and assuaging outrage only with other people on the team. Interviews might create some outrage depending on the willingness of the target, but they are also more obvious, and therefore can be used to delay outrage onset by convincing people that you are acting to resolve some outrageous situation.

Combine this with the tactical situation, and you have plenty of beautiful variables. Stakeouts take time - but sometimes that's exactly what you want, if you want to be available to act the moment they do something suspicious. Interviews are fast - but how likely is it that they know something? Are you going to give away more about what you're after than they'll give away to you?

Each character you build has different specialties, but unlike an ordinary RPG, you don't travel in packs most of the time. Each character you bring into a scenario reduces the reward, so there's a lot of pressure to act independently. In addition, outrage can build up between characters and you can lose control over someone if you're not careful.

Functionally, this means you can't always choose your cop. You won't always have high skills in stakeouts and interviews. Maybe it's your systems engineer today, and you need to investigate by hacking databases or deploying sensors. Different parameters, different tradeoffs.

Now, regarding NPCs.

Outraged NPCs are active NPCs. Even mild amounts of outrage make people more difficult to deal with, but the more outraged someone is, the faster and more aggressively they'll take action. The question is: what kinds of action?

The good news is that it's easy to determine what kind of action they'll take. Just pick an action associated with a high skill. "Move" or "complain" if that turns out to be inapplicable.

The really good news is that you can make this have dramatic irony very easily. Whereas the player chooses targets carefully to try and resolve the situation, the NPCs choose whoever will gain the largest percentage of outrage.

For example, the warlord's crew is running around the station causing trouble. They consider troubling everyone, including both the cop and the doctor. The doctor is already hugely outraged, has been since the beginning. Five more points of outrage isn't even a dent. So we hear about it from the cop, who goes from 0 to 5 outrage. This pulls the cop into the story a bit more solidly - she now has a "reason" to get involved.

This basic system means that any person or place that is explicitly introduced will be cycled into the plot opportunistically. It also means that "B" plots are easy - just activate two plots at once, and they'll naturally tangle as NPC actions target the least upset people on both sides and raise the temperature to boiling. It might not even be a player character: the warlord's crew might piss off a visiting trade delegation or your captain's mom.

This is a pretty simple, straightforward system built explicitly for a low-representation game. That is, these actions don't play out in detail, it's more visual-novel-style graphics and focuses more on the results rather than the processes. In a game where 3D models have to act out every detail of staking out or kidnapping or flying space ships, this would be prohibitively expensive. But if we restrain ourselves, it's easy to model them statistically instead of physically.

That's the outrage engine I invented, and this is the shortest essay on it I could write. First time it's been less than ten pages long.

Monday, February 23, 2015

Basebuilding With People

So, I played a LOT of RimWorld recently. I think it's a great game, but let's talk about some of the places it could have gone. Some of the tantalizing bits it showed hints of, but never went into.

One of the things I really liked doing in RimWorld was disaster recovery. Like most basebuilding games, the challenges RimWorld introduces are usually "nasty things trying to kill you". This is a really boring kind of challenge because it's very binary: you tend to either win handily or get annihilated, neither of which is very fun.

But RimWorld has a few situations that are a bit unusual. If you're attacked by people, they often survive your gunfire and go into shock. You can then haul them back to your base as prisoners.

The prisoner system in RimWorld is really primitive. There's no work system or deprogramming or any of that. You can do some nasty things - sell them as slaves, harvest their organs - but it's very basic and flat.

The thing I liked doing is repairing them.

Most of the time, they would be pretty screwed up by the firefight. I enjoyed making cybernetic limbs for them, patching them up, and letting them go. There's no bonus for doing this. Your faction score doesn't increase. Even the individual prisoners don't like you any extra for it, so it doesn't help you convert. But it's relatively engaging.

Then I discovered a mod that brings a whole starship crashing down on your head. You tend to pick up half a dozen survivors, all of whom are really ripped up by the crash. Suddenly there's a very specific drive to your opening game: you want to patch up the survivors. And this drive doesn't really stop, because once you've given them peg legs you realize you can give them cybernetic legs, then bionic legs, and so on.

This is all possible because of the ridiculous Dwarf-Fortresslike body simulation. It's quite easy to empathize with someone who has suffered, and seek to ease that suffering through the medical mechanisms of the game.

Even the basic challenge of the ship crashing down around you is fundamentally interesting, because it's something you weather, not something you defeat. If you lose people or resources or whole buildings, you can be assured that you can come out of the other side anyway. It's not like the disaster will hunt you down until you defeat it, unlike goons with guns. For a basebuilding game, this kind of challenge feels fundamentally better: there's no terminal state, so you can see how your base performs and then fix it up.

However, this runs into the weakness of the basebuilding genre: faceless NPCs.

See, all the NPCs in this game have a variety of traits and stats, just like in most modern basebuilding games. There's a complex simulation of their physical state, and a marginal simulation of their mental state. They often have a marginally unique sprite due to combinations of body and hair sprites/colors. But once you hit about six people, you can't remember most of them any more. You can only actively remember a few of these NPCs, even though you can remember dozens of real people with ease. Why?

Because people aren't defined by a list of stats. They are defined in contrast to other people, including you. This forms a social terrain.

Look, it's easy to remember when an NPC is missing limbs, because their physical body is defined in contrast to the physical world. You can see them move slower (or not move). You can see them work slower, more clumsily.

An NPC's "social body" needs to be defined in contrast to the social world. And there isn't one.

Basebuilding games use a massive amount of time compression to keep you focused on building and managing your base, and this makes it very difficult to get a feel for any kind of social situation. The only way an NPC has time to show social inclinations is if you remove them from the brutal pressure to manage their day as efficiently as possible.

You can see this in Dwarf Fortress. There is a basic social structure: children, nobles, enforcers, and so on all feel like they belong to a social structure of some kind. However, this is accomplished by removing them from base management. In order to give them time to be socially distinct, you remove them from the time-compressed burden.

Well, why not drop the time compression?

Time compression is inherited from RTS games, but there's no need to keep these RTS mechanics. Let's get rid of the guys with guns and let's get rid of the time compression.

Instead, we can just use time chunking. When you decide to start the day shift, time moves forward rapidly until the end of the day shift. You have a basically unlimited amount of time in the morning and evening to plan out your base, schedule your people... and more importantly, watch them interact with each other and you.

There would need to be some kind of thing to do during the slow periods, but that's the point: we can start to really rev up our people skills.

We can structure your base personnel in a much more explicit social world. A branching tree of social leadership. A mental simulation as complex as our physical simulation. Tweaking people's mental state in the same way you'd tweak their physical equipment or cyberwear.

This is only possible if we remove the time compression. After all, socializing is what you do when you're not under crushing pressure.

Well, you can socialize while working, or at least have a presence in a social society while working. But only if you're not under time compression. Time compression means you still don't have enough time to express yourself, and even if you did, the player would not be paying attention. They're too busy planning out some other part of the base.

Hm.

Those are my thoughts. I have a lot of prototypes in mind, but I'm so busy.

Playing RimWorld.

Friday, August 15, 2014

Moddable NPCs

I've talked a lot about mods a lot, and I'd like to talk about NPCs.

Even with highly-moddable games, the NPCs are miserably difficult to manage. Skyrim probably has the most moddable NPCs, but the way the NPCs are implemented in the base game really limits their behavioral flexibility.

So, let's talk about a game where modding NPCs is the point.

You play a godling. Not in a gods-eye view, but as an actual person in-world, similar to Skyrim. Your big power is to create people out of clay. They turn into living NPCs, and you can interact with them.

The basic loop is that the NPCs generate resources for you. You can gather some resources on your own - clay, water, grass, and whatever else you can find - but those are very basic and there's no crafting. Instead, you set the NPCs up to generate resources. First you create a farmer, and they make food. Lots of food - enough to feed everyone else nearby and still give you a stack of foodstuffs if you decide you need them. Maybe you create a woodcutter to create lots of wooden planks so you can build wooden houses instead of log cabins. Maybe you create a carpenter to turn wood into furniture, so you can fill those new wood houses with nice furniture. Maybe you put a shrine in the house so they can worship you and give you spirit points. Or a library, so they can generate new ideas...

As time passes, the NPCs will get better at their jobs. This isn't stored as some internal skill variable. Instead, it is evident in the tools they use. Their tool shed becomes more full with higher-quality tools. Their bookshelf is filled out. Their yokes & ploughs upgrade to the next tier. Their skill is represented quite concretely by the objects in their home. Trying to move these items to a new home will lose a lot of the upgrades, so it's kinda-sorta-vaguely NPC-specific.

While there is some challenge to creating a good flow for all the resources you'd like, the real challenge is in keeping your NPCs alive. You can create them easily enough, but if they are put under too much stress, they revert back to clay statues. They're not really dead - you can wake them back up as long as the statue isn't destroyed - but they certainly aren't living.

Unfortunately, these NPCs are very vulnerable to stress. Their default state is "dead of stress", and it gets much worse if they have a job. You have to build their homes to alleviate that stress.

For example, if you're going to start by building a farmer, you'll obviously need to give her all her farm tools and so on... but you'll also need to set up her home so she can survive. A bed, kitchen, and so on are all required to prevent added stress due to exhaustion and hunger. Then you also need to set things up to reduce the stress she is under! A fireplace, candles, some books, a veranda, some company...

There's no need to simulate the NPC's stress in real time - it all derives from the furniture in her house. The NPCs are simulated when you are nearby, but that's for social purposes, not for statistical purposes.

So, you set up a little farmer family. They farm, and they support each other, and stress is kept to a minimum. However, nothing lasts forever. As time passes, all the furniture in the house drifts and/or decays. This won't affect something like a workbench, but things like beds and chairs and bureaus and costumes all migrate and/or degrade. So your carefully balanced house steadily falls out of true, and stress becomes an issue. Eventually things will drift far enough or decay badly enough that the NPCs turn back into clay statues.

This is often a catastrophic spiral, because a lot of the stress relief comes from other NPCs. The farmer parent's bed is a double, with each side assigned to one of them. This creates a romantic relationship between them, and that really reduces stress quite dramatically. But if mom turns to clay, that stress relief stops happening and dad quickly turns to clay. Of course the children are likely to turn to clay as well, since much of their stress relief comes from being taken care of by their parents (indicated by the parents ownership of things like the kitchen, front door, etc).

Now, the moment-to-moment behavior of the NPCs is actually handled the same way. Every object can create a "state" for the character, and that state has certain kinds of behaviors and takes certain kinds of inputs. It's very freely done, and the heart of the modding system. Each state gets to "vote" on what it thinks the action of the NPC should be at any given time.

For example, the parents share a bed, which sets up their romantic relationship. In addition to being stress control, this also creates a behavior state for each - the romantic interaction state. Romantic interaction probably doesn't mean "having sex" - it means the gentle interactions over the course of the day that show they are used to each other and think of each other frequently. The romantic state only votes on situations involving their lover, and it doesn't always win the vote: another piece of furniture might cause the pair to fight, or just do things other than get along gently.

Moreover, the state of the bed can really change the nature of their interaction. Different beds might have different nuances - perhaps certain relationships are more bitter, or more brusque. Each side of the bed can be customized with a pillow, or perhaps have several states such as made/unmade, bedspread, etc. These can all be used as markers for different tones in the relationship.

It might feel stupid to rely on things like a specific color pillow to represent a specific kind of interaction, but the point is that the NPCs can swap out the components randomly over time and their relationship will drift. By controlling how things get swapped out and how likely things are to be swapped in various ways, you can control how relationships grow or degrade. This is still clumsier than having a simple state machine hidden inside the NPCs, but it's much easier for the player to understand and control.

Moreover, the relationship system is bound to the specific bed item type. Use a different bed for a different kind of relationship - not necessarily just a different nuance: it can be a completely unrelated mod with similar functionality. You can have both mods loaded into the game without difficulty: one is tied to beds A&B, the other to bed C. In fact, there's nothing preventing you from having several beds for one pair of people, each with a different relationship attached, resulting in several simultaneous romantic relationships.

That might sound broken, but there is a limiting factor:

The more rooms and furniture you have in a house, the more maintenance stress. This stress is distributed evenly among everyone, unless you have cleaning supplies assigned to specific people, in which case it is dropped on them. In the short run, mom and dad having three beds is quite nice, and stress is really kept very low thanks to the stress-relieving property of beds. However, as the beds decay, their stress relief drops off quickly and the relationships become rocky. The amount of maintenance stress does not drop off, so stress relief drops off three times faster than it would with a single bed.

You can build a wealthy nobleman's house, lots of beds... just assign the maintenance duties to servants. That's how the pampered live their lives. Of course, their position of authority may involve taxing their citizens, in which case the citizens will all gain more stress because of the nobleman lording it over them... but there are advantages to that, with the nobles generating resources ordinary people can't generate. Well, that's one approach, at any rate. Maybe you have a different set of "nobility" mods loaded in.

Anyway, all of this is done through an open API, allowing anyone to compile a plugin using the Unity framework. An integrated mod manager is actually pretty easy using the asset management tools in Unity, so this would be pretty easy to mod. It could also easily support multiplayer shared worlds due to the low amount of simulation required.

There's a lot of other details. For example, the alignment and position of furniture often matters. A chair facing the fire is relaxing; a chair facing a desk will help generate ideas; a chair next to another chair will make the two people assigned to those chairs get along and have lower stress. Another thing to keep in mind is that NPCs might have different "hearts" - while they are all made out of clay, the seed you build around can be any small item. This can allow for NPCs to also be directly modded rather than always relying on furniture.

Well, all in all it's actually not a hugely difficult game to start. At the beginning, it's just a simpler version of The Sims.

Monday, July 21, 2014

A Soft Touch

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

...

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

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

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

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

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

...

The secret is board games.

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

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

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

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

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

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

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

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

Now the issue is which game boards matter, when.

...

There are three kinds of "mattering".

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

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

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

The second kind of mattering is "resonance".

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

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

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

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

The third kind of mattering is "proximity".

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

...


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

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

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

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

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

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

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

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

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

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

Now consider Anna and Bob's marriage.

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

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

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

So there are hooks for playing cover-up.

...

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

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

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

Moreover, there's room for mods.

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

"But how about making the game interesting?"

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

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

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

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

However, the overall scene is also set.

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

But why does the rich kid make fun of Jimmy?

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

The idea sounds good to me.

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

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

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

Anyone read this far?

Wednesday, June 18, 2014

Growing NPCs

I've been thinking about NPCs.

A while back I came up with a "chatter" system that allowed NPCs to remember chunky bits of worldstate, then allowed both them and the player to use those memories to talk about things.

The idea was simple: NPCs are normally scripted to do specific things to further the player's adventure. They have a specific role they are assigned. But that doesn't sit well with me. To me, the NPCs are the player's adventure.

The most powerful experiences I've had in open-world games were when someone was with me. Whether it was another player or a good NPC, it's a powerful experience. The important thing about an NPC, to me, is not the design or the personality. It's that the NPC feels like they are moving through the same space as me.

Chatting with an NPC at a home base is all well and good, but I don't need it. It's extraneous. The NPCs don't need to have a compelling backstory, or a secret they refuse to tell you. They don't need to have a loyalty mission. All they need to do is move with me.

Probably the most powerful NPCs in this regard are from Dragon Age, because they react to each other. Their reactions to me are pretty bad, but their reactions to each other are really good, creating a real personal dynamic to the party. It kept me playing even as the gameplay disintegrated and the story collapsed into mush.

When it comes to interacting with my specific movements through space, the characters fall flat. They do sometimes comment on the spaces we pass through, but always in a passive and passing way. They do occasionally act in response to my actions, but their responses tend to feel arbitrary and annoying because they tend to judge something without allowing any explanation.

For example, if I choose to help someone, my party members will judge that in a particular way no matter what I was thinking. This was a big issue in the Dragon Age games, because I would often find myself blindsided by a character's judgment. The reasons I decided to take a particular action were obviously not the reasons any of the devs thought anyone would, and it often took me quite a while to figure out why a character would be upset with that, or like it.

We can learn from smaller projects, though.

In the original Skyrim, the companions basically didn't exist as anything other that combat flunkies. They had almost no personality after being put into your team. But since then many companion mods have been added.

One of the most interesting to us today is the thief character, Arissa.

She follows many of the same patterns as a Dragon Age character, but she does those patterns much better. She has more active rather than passive location-triggered comments, and she can be released to explore a city on her own, which is very interesting. But those require a lot of custom content for relatively small payoff. Let's talk about her most effective advantage:

She will judge your actions similar to a Dragon Age character. But she does it in a way that doesn't have an opportunity for misunderstanding.

She doesn't judge you based on which quests you accept or that sort of thing. She judges you based on how awesome a thief you are. Sneak attacks, picking locks, and picking pockets will earn her friendship. Murdering friendlies will earn her distrust. This is really interesting, because it ends up painting a very powerful picture of her personality: she appreciates your ability to rob townsfolk blind while they sleep, but if you hurt them physically she'll get pretty upset.

Relatedly, she gives you a very clear progression. You are told when she appreciates or doesn't appreciate things, and once her opinion has changed enough it unlocks new features. A bit of appreciation and she'll carry things for you. More, and she'll let you equip her. More, and you can ask her for lockpicks. More, and you can ask her for poisons. And so on. While these seem minor, they are important rewards to guide players onto the path.

After about half an hour of Arissa as my (only) follower, I found something odd: I was changing my behavior for Arissa. I was pulling off unnecessary stealth kills and stealing things I didn't need specifically to impress her. I can't recall ever doing that for any other NPC - normally I would just choose the NPCs that get along with my play style.

When I was finally caught pickpocketing by a civilian, rather than kill the civilian to cancel the bounty like normal for a villain run, I actually paid my bounty (after giving all the illegal stuff to Arissa to carry).

This story of my adventures was very different from what it would have been with any other companion. An NPC had shaped my adventures in a very open, simple way. No quest lines. No ethical dropdown box. No trying to read my mind and getting it wrong. I had the adventure I was having, and an NPC was a big part of it.

Arissa was flexible enough to fit into my adventure. No matter where it took me, or what mods I had enabled, Arissa's simple preferences held up. She could participate in any setting, any scenario, any specific adventure.

This is the heart of what I'm trying to do with my new prototypes. Basically, I want the overarching megaplot to be a mod. I want people to be able to "mod in" any end-of-the-world storyline they want, and all the NPCs will function in that adventure without an issue.

I would like to expand the functionality of the NPCs. Although Arissa was good for the limits of the engine, she was basically stuck just judging things rather than participating in any kind of meaningful way. The line dividing her active systems (combat AI) and passive systems (judgments) was far too stark.

A more active character can be created, but you need to be careful to keep chaos under control. That means that the game's fundamental systems have to be built with this kind of active NPC in mind.

If Arissa (or Morrigan or whatever) takes loot that I was aiming for, or kills something I wanted to kill, or otherwise disrupts my immediate plans, they are suddenly annoying. The game needs to be built with their free action in mind.

Another problem is the number of NPCs. Arissa works well as the only NPC judging things, but if there were another three of her, each with their own values, it would become a mess. If you're going to have a lot of NPCs, you need a different approach.

In my game engine, the tentative plan right now is to only allow for one or two active companions. You might have many people willing to go with you or be in a dance party together, but they exist as part of the world when they aren't in your party. There are rewards for letting them continue their daily life uninterrupted, at least for decent stretches of time.

The other part of my plan is to have "plan triggers".

In order to not disrupt your plan, all the NPCs really have to do is understand what your plan is. Also, if they understand what the plan is, they can be "moving through space with you" much more effectively, participating in your adventure much more clearly.

So, when you walk into town, click to tell your party to ask around for rumors but not get in trouble. Click a different button to tell them to stay close and on alert. Click a different button to tell them to go straight to the inn, or wander as they see fit, or stay hidden... all associated with you saying something, and them saying something back.

I'm thinking you can even expand this to targeted actions. Control-click to tell a party member to execute the plan there - whether it's talking to those people, stealing those things, blowing away those monsters... sort of like turn-based controls, but much vaguer and faster to trigger. More like saying "There!" rather than "attack goblin B with your fireball spell".

I've also been thinking about a lot of alternatives to the concept of "you". A big part of the problem with open-world games is that the player avatar is a specific person and therefore everything has to revolve around this one person. This one person has to be friends with everyone, know everything, act in a specific way...

To me, that only works for a small game. If an open-world game is going to be longer than a few hours, I think they would benefit from being able to switch avatars. To that end, I've been considering a variety of avatar-switching ideas.

Right now, my favorite is that you are some kind of ghost or godling. You have your own presence, but you can't really do anything without possessing a willing host. As time passes, hosts get steadily more burned out and you have to stop possessing them to allow them to recover. So you'd have a "primary" NPC that you are probably directly controlling most of the time, and one or two secondaries that act with you.

This would allow for a much wider variety of experiences without crowding in too many characters at once.

Well, nothing is set in stone. These are just my thoughts.

Friday, June 13, 2014

Chattering Questlines

A bit ago I posted a theoretical framework for doing constructive open-world RPGs. If you didn't read that, this post won't make much sense.

One of the things that makes open world RPGs so enticing is that everywhere you go feels interesting. The characters always have something going on in their lives and quests to hand out.

For example, you might walk into an early-game village and a woman would desperately ask you to help her find her missing daughter, who snuck off to Gooooooblin Mountain. It's a pretty typical early-game quest, and can really set the tone for the rest of the game. It can also become interesting or fun. For example, it could turn out that the daughter is a full-grown warrior who can definitely fend for herself, or that the child was in danger but the mother was a ghost, or that there was no child and it's a bandit trick. The quest can also be "chained" - find the child, and she explains she was sneaking out to tend to a wounded griffon, and now you have all sorts of options about whether/how you want to help, often gated by stats and skills.

How would you create this sort of situation in my chatter engine?

Well, first you would define the two NPCs and their relationship. Then put them in the locations they need to be. You'd want to disable nav on the child so she doesn't go home, obviously.

The mother doesn't magically know that the child went to Gooooooooblin Mountain. To inform her of this, you would need to create a state record. This is exactly the same as a conversation tidbit. It is exactly the equivalent of the child literally saying "I am on Goooooooblin Mountain". You stick it into the parent's head.

Even with absolutely no additional logic, the adventurer would likely hear this lady talk about her daughter being on Goooooblin Mountain, because it hasn't been talked about yet and unexplored "gossip" (state records in mental inventory) has a higher priority than "conversation" (state records arising from personal state).

But without logic, the mother would come off as not particularly caring. It's very important that our NPCs appear to care.

A child is a "good" item, your own child doubly so. Goooooblin Mountain is a bad item. It doesn't take much effort to figure out that the mother should be worried: a good thing stuck in a bad thing?! That's something you care about regardless of your personality!

But more logic is useful both in making things more lifelike and in allowing the parent to express her personality. The most basic piece of logic that would apply here is the relative power levels of the child and Goooooblin Mountain. A child might have a power level of 1 or so, while Goooooblin Mountain might have a 4 or 5. Alternately, if the child is actually a grown-up warrior, they might have a power level of 20 or 30.

The exact reaction depends both on the relationship and the personality of the mother. If we presume the mother is a worry-wart, then she might imagine Goooooblin Mountain to be 10x more dangerous than it actually is, which would mean she would be worried about her fully-grown warrior daughter. On the other hand, if the mother is of a proud warrior bloodline and has a colder, prouder personality, she could underestimate the danger by 10x, meaning she wouldn't be worried much even about her young daughter. In both of this cases, it might be more of a "could you please check up on my daughter?" rather than "OH MY GOD MY DAUGHTER IS DOOOOOOOOMED"

You'd need some generative text, but I don't think that's hugely difficult if you set your standards a bit low.

Any way you slice it, we didn't exactly program in a "quest" quest. We simply set the stage for a quest to emerge by putting specific people in specific places and making them worry about each other.

We could extend the quest in the same manner. Add in an injured friendly griffon on the Gooooblin Mountain. Set up a relationship between it and the daughter, as well as the daughter knowing its location. Add in some Goooooblins surrounding the griffon's hidey-hole. Now you can decide - is the daughter trying to find a way to the griffon through the goblins (place her outside) or is she stranded with the griffon (place her inside) or captured by the goblins or any number of other options.

But... how can you set it up so that she is actively trying to reach and care for the griffon?

Err... A STATE RECORD.

State records don't have to be past tense, as I brushed on in the prior essay. "I am trying to feed the griffon" is a perfectly valid state record. You can think of it as an AI directive, but it's actually more flexible to think of it as "I fed the griffon" with a future timestamp. By putting it in the future, the character's rudimentary AI will naturally realize that she has to reach the griffon with food in order to achieve it.

This can lead to unexpected results. For example, if you forget to equip her with food, she won't be trying to reach the griffon. She'll be trying to find griffon chow.

The goblins are another issue here. Obviously, the goblins and the griffon know about each other and aren't on friendly terms, so you can establish their relationship as "a standoff", meaning that they'll attack as soon as something changes the balance of power. The goblins are probably treated as a "group mind" rather than individually tracked.

If we leave the child without knowledge of the goblins, it could prove a nasty surprise for everyone involved. Adding the goblins to the child's concept of the universe is easy enough, of course. The question is: what are her reactions?

Again, this is a time for personality to shine through. The exact power level of the child and the goblins is crystal clear - the question is whether the child is panicked, worried, unconcerned, etc.

However, personality actually does more than modify perceived power levels up and down. Personality also controls whether you'd request help.

Depending on the child's personality, she may require quite a bit of coaxing to let you rescue her - or she may recruit the injured griffon and launch an offensive the moment you get close enough for detailed simulation to start.

Basically, personality serves a few purposes.

The first is how risk-averse someone is. Or, perhaps, what situations they are risk-averse in.

The second is how they look for solutions. And this is not a weighting mechanic: each personality forms plans according to its own custom algorithms. Heroes, for example, form basic confrontation plans and only include known party members as participants. Conniving characters will form plans that involve sacrificing your neighbor for your own survival. Neither side is capable of coming up with the other's plans.

This is actually a method to simplify the AI requirements, as well as make them modular enough to upgrade or mod as the game proceeds. The only "core" AI is things like navigation and basic combat. Even in combat, a lot of the choices might be made by personality-specific scripts rather than an overall AI. Which makes party member personality important.

In the end, the biggest advantage to this approach is that it makes NPCs very predictable if you happen to know everything they know. This means you can "script" the environment using NPC personalities. The mother asks you to chase her daughter because the mother has a personality that asks others for help as its primary plan of action. The child needs to be coaxed into allowing you to rescue her because she has a personality that is scared of strangers. This same applies to conniving thieves, drunken louts, corrupt aristocrats, and so on: the AI is deterministic.

...

The last important thing to explain is obsessive NPCs.

In most open-world games, NPCs tend to be concerned with one specific thing. For example, there's the guy that just tends the clock tower. The lady who is obsessed with fireball magic. The dork obsessed with bragging about his bloodline. Someone pretending to be the Great Hero. Etc, etc.

These are accomplished using two methods in tandem.

The first method is to embed a few states in their head as "permanent future". Once the child feeds the griffon, the future state changes to "I fed the griffon" - a past state. However, if we want a lady to continually obsess over fireball magic, we embed "I cast fireball" in her future. We can embed something that is impossible for her to obtain on her own, or we can embed something that will continue to be in the future regardless of however many times you accomplish it, or we can create nested futures, where when that one goes away it reveals another, more difficult one behind it.

The second method is to use "fake states". These are states which are lies. They do not reflect reality. For example, "Aaron is the Great Hero". It's a valid thing to say, but it is wrong: Aaron is not the Great Hero. These are a bit difficult to use and implement, as it requires a contagious counterfactual state and a certain amount of anger when the lie is revealed.

Well, that's more than I need for the prototype, so I'll leave that on the backburner.

Okay! That's it!

Thursday, February 20, 2014

Games About Relationships

The place where games fall shortest is how they handle relationships.

Putting aside fully scripted relationships, there are a lot of games where relationships are part of the gameplay. For example, getting team mates to like you or performing loyalty missions or giving a cartoon cat a comfy chair.

The problem with all of these approaches is that the relationship is a gating mechanism. You move through the relationship to get the reward, whether it's stats or a cut scene or whatever. In turn, the interactions are all rather stilted and transparent. It's made considerably worse because the relationships are not very interesting to move through - you use a variety of extremely basic dialog options or gifts.

Basically, the relationships suck because they're so transparent and flat.

One option to make relationships more interesting is to accept their "level-like" nature. If you're going to move through a relationship, set it up the same way that you might set up a level in a platforming game. Let the player move through its complexities using a more open-ended method of interacting. Fill it with interesting challenges and moments of beauty or terror as things unfold.

The other option is to stop treating relationships like levels. Instead of "using dialog to move through a relationship", you "use relationships to move through dialog". Or whatever else you want to move through. The point is that instead of being equivalent to the level, the relationship is now equivalent to the act of jumping, moving, shooting, building - whatever actions you would take in another game. Instead of being content to burn through, relationships are actions you take to burn through content.

As the most basic example, if you play a father or mother that's going to have a rough week at work, you might spend a few hours playing around with your kids. That'll relax you and give you the determination you need to push through the week.

While your relationship with the kids might change slightly because you spend time with them, the point would be to navigate the challenges of your life by spending time with people. Whether this is an emotional benefit or whether they actually help you with your problems directly, the relationship is largely a stable object, like shooting a gun in a first person shooter. You might change guns, or run out of ammo, or use alt-fire, or it might overheat - there's lots of ways to add complexity, but fundamentally you can rely on a gun to do what it is obviously intended to do.

Anyway, I think both options are interesting. The real issue here is in the objective. Why do you relationship? Whether the relationship is action or terrain, there has to be some reason to play. Hm!

Tuesday, November 12, 2013

Crew Play

This post has been a long time in the making, because I wrote half a dozen essays on the nature of gameplay, science fiction, and open-ended missions and ended up here. However, those essays were all pretty academic and dull, so I didn't publish them... instead, I'm just going to talk about one set of mechanics that arose from that thinking, and why.

Because that won't be dull at all... sigh...

My big problem with most science fiction games is that there's no human element. Science fiction, in any medium other than video games, is used to explore the human condition. You can highlight some aspect of human life by creating some slightly magical setting that lets you focus on just that. In video games science fiction is used, exclusively, to shoot aliens. In every other medium, the aliens are standins for other humans that you don't know very well, so this makes video game sci fi pretty annoying to me.

In the past I've created some nonviolent sci fi prototypes, but I never really considered how to make the human side of things feel more human. How can you create gameplay around being human? I mean, you can script in some stuff, but I'm talking about core gameplay.

There are a few options. For example, you could make an entire game around parenting an android you built - sort of a Princess Maker: Android edition, or something.

But what if we wanted to have really open gameplay? I mean reaaaaaally open. Kerbal-level unguided play.

Okay, let's make it about starships. We'll set it in a zeerusty 60s space serial sort of environment. Science fantasy.

The core mechanic is not about creating the ship, but about creating the crew.

Let's start with the foundation: the chain of command. Or, rather, the tree of command, because below the leader it splits into three branches: security, science, and culture.

As your crew parades around the universe, they are exposed to stresses. For example, they might be chased by an angry dinosaur, a situation worth 80 "danger" stress.

It starts at the captain, who bites out a big piece, say 50%. This reflects her quick judgment: "RUN!" The remaining 40 danger is passed down to the security branch, since it's a security situation. The head of security takes another bite, say another 50%. This reflects him blasting at the dinosaur to try and scare it off. The remaining 20 danger is passed down to the final person on that branch, who similarly reduces it to, say, 10.

The 10 remaining danger is standing stress, and therefore reduces everyone's inspiration (basically health) by 10 points. Everyone starts with a lot, but you never regenerate any, so every point is valuable. More than that, however, one of the scientists is "clutzy", which means he is injured by danger-type stress, and receives a 10-point injury as well. IE, he got bitten or trampled or fell in a hole.

This will slowly recover, but while injured the scientist cannot participate in the chain of command.

Let's say the next stress is a scientific one - trying to figure out whether these dinosaurs are proper earth dinosaurs or what. The stress of not knowing is 80 points of science stress.

The captain's actual class is "scientist", so she takes a big bite out of that - say, 75%. Normally, she would then pass it down the chain of command... but the other scientist was injured, and can't participate. So the 20 science stress slips through and stands. This reduces everyone's inspiration 20 points, but the lead security guy is "dense" and takes "injury" from science stress. So he gets confused and panicky because of this weird, unknown situation, and will be useless until that "injury" heals and he calms down. This is a very bad injury, and will take quite a while to get over. So wandering back out into the badlands might be a bad idea.

You can see the bare foundations of the gameplay in this, but let's explore some more.

The key to making this kind of challenge interesting lies in making it predictable. The player has to know more or less what she's in for so she can create her crew for that purpose. This is not a game where you have a starship full of hundreds of crew that goes on interminable missions - it's more like Kerbal, where a mission is a huge event with a custom ship and a custom crew. Similarly, it is possible to chain and combine missions in interesting ways - the game doesn't ask you to, but it lets you. Hopefully this provides a graceful and endless learning curve as you choose to tackle ever more difficult and complex combinations of missions.

This means that if you land on Venus' plains, you'll always be chased by an angry dinosaur. But there are a lot of variables: you'll keep getting attacked by dinosaurs if you keep wandering around the plains. So you might venture into hills or forests, where different challenges await. Similarly, you might do research while in orbit to become adept at fighting dinosaurs, or keep someone in the orbital craft to watch for dinosaur herds and mark them on your map so you can avoid them...

But there need to be clear "success" states, not just an endless array of challenges. When you go to Venus, there has to be a reason. In Kerbal, the reason is always just to land on the surface. In our game, the conditions are a little more complex, so I think we can determine "success" by having specific modules on our starships or landers and fulfilling their requirements. For example, a zoology bay where you can examine dinosaurs in detail. A zoo bay for shipping them back to earth. A bacterial analysis chamber, a cultural exchange center, a gravitonic research chamber...

In this way we don't force the player to have a specific mission - in fact, they could just fly out there and dick around to learn the patterns of the world. But they can also choose which mission to undertake by attaching the proper module to their starship. And they can attach multiple modules. Or fly multiple starships out. Or use the same module on several different worlds. It's all very open.

The actions required to fulfill a mission module are predictable but not necessarily easy. For example, the zoology lab might require you to collect 3 samples from each Venusian terrain type - IE, survive 3 stress events from each terrain type. Others might require you to win by a certain amount, or leave crew behind, or get infected and then get healed, or any number of other conditions. These apply evenly to all applicable worlds - if you fly to Mars, you have the same kinds of requirements. Of course, not all worlds support all missions. Venus might not have any intelligent life, and a science base in the asteroid belt won't have different terrain types.

To reiterate, one of the biggest advantages of this approach is allowing the player to choose which mission modules to bring and letting them decide how to try to achieve them. This is powerful and easily modded, and a very good way to push the player to take on difficult challenges.



As you can tell, this isn't some kind of heavy-hitting plot generator. The stresses are pretty much limited to "in this kind of terrain, you get this kind of stress", with occasional bouts of "if you have X on you or Y with you, you get that kind of stress". The core challenge is to survive the stress you are exposed to. Since you never regain stress, it's basically the "fuel" of our game, and how quick you burn through it will determine how much you get done. Since everyone on the team suffers the same inspiration damage when stressed, it also really rewards you for breaking the team into smaller teams.

But the gameplay isn't simply building a hierarchy and then sending them out to the planets you want. There's a lot of other factors involved to make it more interesting.

One of these is technology, of course. Ships are built out of modules. The exact topology doesn't matter, so starships are just spines with each module as a donut, and shuttles are just tablet-shaped jets with a certain number of cylindrical internal slots. It's pretty simple, because our complexity is in the crew creation. Although simple, it is important and full of tradeoffs.

The heavier your ship, the slower it goes and the more fuel it burns - fuel regenerates, but you have to stand still to do that, so it comes down to more time wasted. And being stuck in space slowly eats away your inspiration, so it's best to minimize wasted time.

Many of the ship modules are about crew management, from simple crew quarters to security stations and even chapels. Some of these reduce the inspiration penalty for time passing. Others change the crew's stats (for example, giving them +10% against danger-type stresses). Others allow them to change relationships. Some of them help to repair injuries. Obviously, some of these are really nice to have on shuttles, but space is even tighter there.

Many of the modules are about interacting with the world. Sensors, cultural exchange centers, dissection labs, hospitals. And, of course, shuttle bays.

Many of the modules provide resources that allow other modules to function better. Computer stations, comm centers, gardens - these provide resources that other modules can burn to work faster and more efficiently.

Even though the ships are quite simple and abstract, they can get quite complex if you want them to. It might even be worth sending out unmanned ships/shuttles and connecting with them later...

But the ships are not the focus.

The crew is a bit more complex than a simple chain of command.

First off, each crew member has two aspects - a job and a weakness. Any crew member can try to deal with any kind of stress, but each job is best at a given kind. For example, a scientist will absorb 75% of science stress, 30% of culture stress, and 10% of danger stress. Or maybe you would prefer an academic? They absorb 50% science, 50% culture, and 10% danger. You can choose how focused or general you are. Certain kinds of very advanced modules can only be operated by a specific class, but that's unusual. It has no effect on their place in the chain of command - you can put anyone anywhere.

The weakness, of course, determines what injures them. Now, if someone's inspiration hits 0 they're disabled anyway, so nobody is completely immune to stresses of any kind... but everyone is also very vulnerable to particular stresses. There's actually more than 3 stresses - probably 9, although I haven't really settled on anything - so it's possible to have quite a large crew without repeating a weakness if you like.

Of course, each crew member also has an appearance and gender, which are only aesthetic.

Aside from their personal statistics, you also have interpersonal relationships. The chain of command is the biggest one. It can be reconfigured whenever you return to your ship, so it's pretty malleable. However, you can also define one personal relationship per crew member. For example, you can define person A as being the son of person B, person B as having married person C, person C being ancient rivals with D, and D being the mentor of A.

While each person can only spawn one relationship, relationships are two people, so people can and will be part of more than one relationship.

Each kind of relationship has a specific effect on the way stress and inspiration propagates. For example, a married couple will always "equalize" their inspiration. While no added inspiration will be gained, you could have one person exposed to a lot more stress and it would equalize to half on each. Because of this, married couples are usually split up into different teams so they suffer different amounts of inspiration damage. A parent and child relationship works such that the injuries they suffer regenerate faster when they are on the same team, and so on.

These relationships cannot be changed easily. However, it is possible: several modules produce social points, which can then be spent to establish new connections or break old ones - although which kinds of relationship depend on the module in question. This is invaluable on very long missions, because you'll lose a lot of inspiration on the flight and you'll need as many perfectly configured social links as possible to survive.

Anyway, that's the idea.

The core point is that we let the player create her own arbitrarily complex missions, but with crew instead of rocket parts.