Thursday, August 30, 2018

Player-Generated NPCs

Hey, let's talk about player-generated NPCs, and sending them to other players.

In order to turn player-generated content into content for another player, you need to add context and a reason to play. This isn't too hard in mechanically-oriented games, but in an RPG it's tough.

Imagine playing Fallout 4 and running across random player settlements. Most players make facilities that are focused on making the numbers go up. Recontextualizing that into an RPG point of interest doesn't work out well: you end up with a dozen nameless NPCs and a bunch of empty buildings with beds in them. Hardly compelling RPG content.

The problem is obviously in the recontextualization. The settlement was created to make numbers go up, and now you're trying to interpret it as an RPG town? There's no connection.

The answer might be to make the original context an RPG context, so the player's created settlement is RPG content right from the start.


Pushing Context In

Let's pretend we're designing a Mass Effect game: players create colonies, which are then exported and encountered by other players.

As you play through the game, you make various choices. You visit the turian homeworld. You choose whether to side with the turians or with the humans.

If you side with the turians, you receive a number of applications from turians, willing to move into any colony you make. If you side with the humans, you get human applicants.

When you build your colony, you can add any applicants you like.

When your colony is exported so other players can visit it, the game checks to see what they did on the turian homeworld. If they did the same thing, those settlers are friendly. If they did the opposite thing, those settlers are more hostile. If they haven't been there yet or didn't take sides, those settlers are just background color.

This is an extremely fast and easy way to push RPG context into your colonies, and then continue to push that context forward into other players experiencing your colonies.


Pulling Context In

In addition to this, we can use simple keywords to keep these applicants interested in similar conflicts. Those turian applicants came because you chose turians over human interests. That means they will continue to have opinions on decisions regarding turian vs human competition, or more generally turian vs any other species.

If you visit the Citadel and side with a turian shopkeep over a human shopkeep, the turians back at your colony will compliment you for it, gain loyalty, become more effective citizens. If you choose the human shopkeep, the turians in your colony will be a little annoyed and rib you about it, although there probably shouldn't be any statistical punishment for such a minor event.

If you visit the citadel first and choose the human shopkeeper over the turian, you'll probably get a human applicant. Then you visit the turian homeworld, make your choice there, and your human responds appropriately.

Since it's keyword-based, events can be done in any order, and mods can be integrated smoothly.

In this way, your colonies will have a vested interest in your continued adventures, and you'll be taking your citizens' opinions into account as you journey.


Generating More Context Globally

Tying your colonies into the galaxy is important: if your colonies feel entirely isolated, that's not very immersive. So your colonists need to do more than have generic responses to keywords.

They should put their thumb on the scale.

If you visit the turian homeworld, get some turian applicants, and then get into that turian-vs-human shopkeeper conflict, your colonists should call you up to chime in.

Here's the key, though: it should be the wrong colonists.

If the colonists that actually care about turian/human competition call up, they'll try to convince you to choose the turian side again. This creates a feedback loop where you have more and more pressure on you to choose the turian side of things. With no counterweight, that's not a good idea.

Instead, you should hear from different colonists with no stake in the turian/human competition, and they should put their thumb down on the other side.

For example, since you chose turian last time, a quarian might call you up and say the turian sold them a lemon last time they visited. The idea is to push the choice back into balance.

Basically, if NPC A has a vested interest in turian/human conflict, that causes a situation where NPC B reweights the conflict to make it hard for the player to choose a side.

There will be some conflicts where the player has a particular favorite. If they really like turians, then you might need to apply quite a lot of pressure to make the choice difficult. In situations where the player doesn't seem to have much interest and are easily swayed by the third party pressure, it makes sense to create additional conflict by having your colonists come in on both sides and have a bit of an argument about it. Raises the stakes.


Generating More Context Locally

You'll need to generate a lot of RPG-context content in the colonies you build. Otherwise, the player will get stuck in a statistical, base-building mood.

RPG rewards, RPG missions, RPG context deepening, and RPG/statistical linkups are the tools we'll use.

In short, we can generate random missions when you talk to NPCs. But these missions are not the generic fetch quest blobs you're used to: we can generate much more interesting missions because we understand how these NPCs got here and what they care about.

If you talk to the turian that applied because of how you helped his people, he'll generate a mission about turian/human competition. Perhaps it's entirely local: him competing with a human colonist, or perhaps him falling in love with one. It might be partially local: for example, buying a human grabloxotl to improve potato growth speed. It might be entirely nonlocal: a lost ship he wants you to rescue.

The sides of this conflict can be weighted understanding the player's recent turian/human choices. If you've chosen humans recently, this mission is a chance to prove that the colonist wasn't wrong to trust you. If you choose turian a lot, then this is a chance to do some dirty work for the turians... or perhaps a chance to improve turian/human relations instead of keeping them pitched against each other.

The mission generation does not need to be terribly difficult - pretty basic missions will do. Instead, the key is that they generate RPG context.

One kind of context would be to reshape the local context. If it's a turian/human local competition, helping the turian makes them the boss. Helping the human does the opposite. This will create RPG context in that there's now a new social context.

Another would be to link RPG context to statistical performance. If you help the turian, his stats go up. They don't gain levels otherwise, so this is important.

Another would be to give the player versatile RPG context rewards. For example, new applicants, new colonist gear, new permits to plant potatoes on a new world...

These generated quests intend to be a change of pace from the rest of the game, letting you 'come home' to do some unwinding. So they should generally be fun and silly, rather than grinding. The difficulty or time taken is not the point: choosing a side is the point. The "body" of the mission is just there to make sure you understand what's going on and what the stakes are.


Showing More Context Locally

The most difficult and delicate part of making the colony RPG-ish is getting the player to feel like their settlement is an RPG hub.

The player will only intermittently visit the colonies, will be focused on their statistical nature, and will probably forget the details between visits. So creating local context requires A) unmistakable, easy-to-read elements, B) remote-friendly elements so their video messages create context, and C) creating context via direct interactions when the player is around. Optional, D), linking colonies together to create "global but player-local" context.

A) Easy to read elements probably involve three things: colony decorations, colonist clothes/gear, and non-player-centric interactions.

These can all be used to create NPC-specific context, colony context, and plot/conflict context. For example, if there are bales of corn everywhere, you know what the colony's doing. If someone's wearing an elegant evening gown, you know they are a socialite and that the colony has a swanky side. If a boss is reading the riot act to a subordinate, you feel one way about it, while if they're gently guiding their subordinate, you feel another way.

These decorations can be generated randomly, or they can be supplied by the player. For example, if you back the human shopkeeper, rather than get a human applicant, you get an evening gown you can give to any colonist. This isn't simply cosmetic: giving a colonist an evening gown retroactively forces the colony to have a swanky side.

Symbolism is also a factor. Different colors and building designs give different feels, and having a bunch of turian flags waving tells you right away that this a turian-focused colony. These can quickly give you an overall impression of the colony.

B) Remote-friendly elements would be elements that show up in messages. This would be character elements that show up on headshots, background elements that show behind headshots, and topics of conversation. These should be focused on reminding the player about the nature of the colony, rather than telling them about the nature of the NPC.

C) Direct interactions are things the NPCs do to each other or to the colony. Too many games slot the inhabitants into either "work" or "sleep" and that's it. It makes more sense to use animations to tell you who these people are and their relation to the colony. So rather than digging in the plant bed, it makes more sense to show them teaching someone how to dig in the plant bed, or bragging about their plant bed, or anything that gives you a stronger impression of their social role within the base. This can randomized, or, again, it can be inherited from missions in the game world.


Recontextualizing for Another Player

When it comes time to export your colony for other players (or import their colonies), it's important to keep it as interesting as possible.

Recalibrating Opinions

Probably the most fundamental element is to simply recalibrate how the NPCs treat the player by looking at how this player has handled the same choice axis. If this player chose the humans, then the turians will dislike him. This can be scaled pretty easily: by looking how severely the player has preferred the humans so far, the turians can be calibrated anywhere between mildly standoffish to instantly murderous. Most of the time, it'll fall between the two - for example, they might interfere with your missions, or lock your ship down, or try to assassinate you in the middle of the night.

Obviously, these frequently become mission content.

Final Missions

Unlike the creator, the new player is unlikely to revisit this colony. So we can go all out generating missions for this colony: it's fine to blow things up and kill colonists. In fact, it's preferable.

These missions have the same basic role as the missions we generate for the creator, but the volume is turned way, way up. If the creator chooses humans, the turian might grump at them, or maybe even leave. But if the new player chose humans, the turians will start a mission to get vengeance. This will embroil the whole colony, and may involve impounding the player ship, launching assaults, blowing up facilities...

However, in the end, it's still about the player choosing. So even in this kind of mission, the player will be expected to choose between turians and humans again. This time, it'll be something like whether to save a turian child or let it die as you escape.

Aside from the mission, the colonies should generally offer amenities - shops, etc. The player may never visit again, but they should at least be able to do normal things while they're here, assuming the colony isn't specifically built to prevent it.

Of course, if a colony is too similar to the player's choices, you can always generate an invading monster or a weird disease or something. This will give the locals a chance to show off their social nature.


Leads from Elsewhere

Another key to integrating this player-generated content into the universe is to mix it into the universe. Partly, this just involves getting leads from somewhere else.

If the colony is heavily turian, then a player will get a lead from a turian: "my family lives here, you should go visit them!" Or perhaps, if they are anti-turian, a human: "this is a turian stronghold..."

More than that, additional content can be easily mixed into friendly colonies. Recurring NPCs, threads of ongoing missions, or minor loyalty events for your companions can be interwoven into the colony. Characters that are oriented around a conflict this player doesn't care about can be easily removed and replaced with known quantities from this player's game. IE, if this player seems to not have an opinion on turian vs human, those turians might be replaced with an asari psi-broker telling you where to get the next link in the psi investigation chain.

This can be punched up as necessary by making you have to rescue them from whatever's going wrong.

Generating these missions can be as complicated as your algorithms allow, as you can see. But even if it ends up fairly simple, it should hold up.


Recontextualize-Friendly Construction

Another trick we want to use is to leverage the simulationist nature of these colonies. Because we're simulating so much, there's no need to always just offer mission-mission-mission-shop.

Like in Skyrim, sometimes you'd visit a town just to steal things. It's really fun to try and figure out how to get away with your theft.

This is similar, except we have a wider variety of simulated objectives. For example, you can change who's in charge by helping them, giving them better gear, etc - or by harassing their opposition. You can change the culture by arguing about things - for example, if you argue that the turian culture is inherently corrupt, you can sway things towards the human side of the turian vs human conflict. You can hack computers, steal vehicles, reroute credits, teach children, rearrange their defenses, get them better deals on their exports, get them better gear for their processing...

These things are all already being "weakly" simulated. We had to, in order to create both the statistical and RPG contexts in the original creator's world, and to link those two contexts together. Therefore, we can expose some of that simulation and let the player do something besides chat.

We're not talking about deep simulations. I mean, in Skyrim you steal stuff, but the shopkeeper doesn't actually get any poorer. This is the same sort of thing: we expose enough of the system to let the player interact with it, but we don't have all the pieces deeply connected, and we don't need to.


Final Thoughts

That was long.

And some of it might be a bit of a stretch.

Fundamentally, I think we can give player-created colonies a lot of RPG context by tying the people, facilities, gear, and options to your RPG adventures.

And then I think we can wire that back into the world, to make your colony part of the RPG adventure.

And then I think we can export your colony to other players, and make it part of their RPG adventure.

What's your opinion?

Thursday, August 02, 2018

Action-Oriented Escalated Bidding

I've been thinking about new kinds of gameplay for MMORPGs, because I'm not happy with any of the current styles.

I love the feel of the "personal epic" games like Star Wars Galaxies, Star Trek Online, even things like WoW. There's a lot of joy to be had in running around a world in real time. But the combat in these games is always either so clunky it's painful or so action-oriented that you have to be a twelve year old with broadband.

Thinking about alternate combat styles, one with appeal is escalated bidding.

This kind of bidding (found in poker and many tabletop games) basically allows players to judge a situation and decide whether to escalate or end the round. It's easy to balance, compelling, and naturally cinematic.

However, it's turn-based.

It's easy to come up with styles of play that allow for this kind of combat, but the turn-based nature is hard to avoid. And turn-based doesn't mesh well with the epic personal feel I'd like in my imaginary MMORPG.

I was having a hard time coming up with escalated bidding that didn't involve turns, but I think I figured it out: it's just a simple rework of existing mechanics.

For example, you're playing Star Trek. You're wandering into combat with your space ship. What's the "escalated bidding" for this?

Well, it's the same as Star Trek Online currently is... just a few small tweaks.

One critical element is range. Tiered bidding is a great way to escalate. In Poker, that would be the ante, the initial bidding, and the final bidding - but in Star Trek, it might be shields, system, hull. Rather than having distinct rounds, it's based on range.

You start off at long range, taking shield damage. You get closer, your weapons tick over into optimal range... but, at the same time, you now take systems damage from incoming shots. You get even closer, your weapons are guaranteed to deal terrific damage... but now any damage that leaks through your shields will blast away at your hull... and some damage is always going to leak through.

Conversely, if you can stay at long range, your ship is not at risk even if your shields go down. Incoming fire will scratch your hull and temporarily glitch out your systems, but that's damage that can be rapidly and completely repaired.

To be clear: as your weapons enter optimal range, you take a lot more damage. The better you can shoot, the more you get shot.

This range element adds a ton of complexity to conflicts, because your systems-damage range may not be the same as your enemy's systems-damage range. A long-range torpedo boat may be taking hull damage from a small merchant vessel while the small merchant vessel is still taking shield damage! This means the small merchant vessel's shots will squirrel through the torpedo boat's shields, while the torpedo volleys will largely splash off the merchant's shields.

Matching ranges will be a major element of what ships you use, when. Party loadout becomes a really interesting challenge.



In most bidding systems, how much you bid is also critical. But in this case, the "bid" is how close you get, for how long. Starships have position and relative speed: committing to a deep run can net bigger rewards if you come out on top... but huge problems if a lucky hit knocks your torpedoes offline. Ship headings are another, interlocked kind of bid, if each shield quadrant fails independently of the others.

Additional bidding can be done using various one-off powers. This is a classic "cooldown" setup: if you overclock your reactor for ten seconds, you won't be able to do it again for another two minutes, better make use of those ten seconds well.

Unlike current combat systems which look similar to our bidding system, the cooldown skills in our bidding system would exist to gamble on the next few seconds.

You're claiming the next few seconds will be critical, either offensively or defensively. With the range-based tiering system and quadrant-based shields, it makes a lot of sense to focus our skills on being useful shortly before or after changing range tiers - either your own or the enemy's. Fire your torpedoes when the enemy enters into their systems damage range, regardless of your current range. Pump your shields just before you change to systems damage range, since the damage you take in ten seconds will be far worse than the damage you take now.

Offensive firepower should be tiered as well, basically turning it into a set of cooldown skills. A full barrage hits hard, but takes a long time to recharge. Smaller shots recharge faster - fast enough to do more damage overall, but obviously the enemy's shield recharge and maneuvering cancel much of that advantage out. Will you do some small shots as you close, followed by a full barrage when the enemy becomes vulnerable?

This timing-based "bidding" feels more natural than any kind of shared pot or other abstraction. This also plays up the differences between different kinds of enemies with different ranges, and makes engaging multiple enemies or being part of a team a very interesting tactical opportunity. Obviously, various shortcuts also have value: a stealthed warbird decloaking right on top of you doesn't need a magic "decloak and fire" special power. Their special power is that they're right on top of you: you're at hull damage range, and at least some of that firepower is going to leak through the shields.



This combat is extremely similar to the existing Star Trek Online combat engine. The tweaks are very minor: simplified range indicators, slightly different damage model, slightly rebalanced skills. But the actual play is so similar that people probably wouldn't have to think about it very hard: they'd just suddenly be having amazing, epic fights.



This model could also be used for ground combat in the Star Trek universe, since ranged ground combat is the norm. You could just have literally all the same things.

A Klingon with a blade can rush through blaster fire: their max range is quite low, which means their range tiers are tiny. The blaster fire would just burn their armor a bit. Of course, when the Klingon reaches you, they are well within your nastiest damage range, and are guaranteed to put you down in short order.

The same basic mechanic would work for any personal combat system to some degree. A Star Wars combat system could be similar, with the light sabering Jedi naturally being similar to a Klingon. A Force-user could also take medium-range powers like Force Throw or Force Lightning. These would extend their attack range... and also extend their damage tier ranges. Someone specializing in sabers would be able to bull through Force Lightning because it's outside their damage tier range!

Even in tight combat, you could still see variations. A long light saber seems like a great choice... and it is, against anyone with a gun. But against someone with light daggers, your melee range is actually outside their most critical damage tier, meaning they can hold you off without too much danger... but you're not so lucky against them. You'd have to use combat abilities to close the range or disarm them unless you have a lot of time on your hands!

The downside of this is the bidding, since at melee ranges you don't really commit to be at a specific range or a specific angle for particularly long. To counteract that, I'd recommend using "charge" skills which push you into melee combat with a large bonus for a specific amount of time, but then leave you with a big penalty until it recycles. In this way, melee attackers would choose how much to "bid" by choosing a light, moderate, or heavy charge attack. They can also do this while already in melee combat, of course.



A tiny change to a fairly ordinary combat system: your optimal attack range is also the range you take worse damage. From there, a rebalance to existing combat approaches should result in a really interesting, cinematic challenge.

At least, that's the theory!