The most underestimated element of characterization is screen time. How much time a character has in front of audience eyeballs.
The reason it's underestimated is because it's usually mostly automatic. You write characters for a story, you give them traits to help tell the story, you let them help tell the story. Even a first draft will have a fairly suitable amount of screen time for the various characters.
When generating characters randomly, this doesn't happen.
There's an urge to generate characters similar to the ones you might write. Similar traits, visual features, and so on. But this is 'cargo cult' character design: you're emulating the sizzle of a character without understanding the meat.
The meat is screen time. You have to generate screen time.
In fact, I'd wager generating screen time is cheaper and more powerful than generating characters. I bet you can radically extend and punch up a game by adding in generative screen time without any generative characters.
Let's show some quick examples:
In Mass Effect, all of the characters are designed to support the fiction of the universe. As such, even if they aren't chosen to be in your party, their plot arcs still play out. Their roles in the universe are distinct (at least in ME1 & 2), and therefore it's easy to remember who someone is even if you don't pay any attention to them after their introduction. In addition, they are frequently given 'tidbits' of screen time even when not in the main party.
We can break these methods into a few specific types, each of which can be generated algorithmically. I'll use Liara T'soni from Mass Effect One as an example: she's not a very good character but lots of people love her anyway. Thanks to screen time.
Concerns
The first, biggest mistake is to think about character traits.
Traits are not what you need, and never have been. Instead, you need concerns that create screen time.
The two are very similar, but thinking about "concerns" instead of "traits" should help to drive your planning. Concerns can be things the character is concerned about or things the universe is concerned about, or both.
For example, Liara has a lot of very dull, stereotypical traits: she's cute, inexperienced, has a crush on you, likes Benezia, Spocky, a pureblood Asari, is clumsy, etc.
Converting these traits over into 'concerns' instantly helps us give her screen time related to them.
The concern version of that list might be: doesn't realize she's cute, very nervous about her inexperience, nervous about her crush, respects Benezia, wants to use logic to help, is both proud of and ashamed of being pureblood Asari, gets stuck in a lot of awkward physical situations.
By restating her traits in this way, we can quickly see a lot of scenes suggesting themselves. You can inject 'very nervous about her inexperience' into almost any scene she's in, turning her from a background character into a foreground character - giving her screen time. Any scene. You could be fighting monsters, and you could find some way to use it. "I've... I've never seen mufflebats in person before! They didn't seem quite so... vicious... in the holotapes!"
In more focused scenes, you'd probably want to use multiple concerns simultaneously - for example, she can be nervous about her crush on you and her inexperience at the same time. Or you can use contrasting concerns - she respects Benezia, but Benezia no longer respects anyone. She wants to use logic, but she has a crush on you. Etc.
Core Concerns
Notice I didn't mention Liara's core character trait: she's a nerd.
Core concerns are concerns like any other, but they're unique because they exist specifically to drive the story forward, to draw the player into the universe.
Liara's core concern is her obsession with the ancients. This is a many-pronged concern which allows her to help the player understand the ancient psychic visions, drive the player to explore new ruins, and just generally try to get the player enthusiastic about the plot by being enthusiastic about the plot.
Unlike more personal concerns, core concerns might be too hard to really generate or embed in scenes on the fly. They're too deeply tied to the story or the universe. It's probably best to simply assign them rather than generate them.
For example, if you randomly generate some royalty for your fantasy game, you can give them the core concern to pull the player into the world. King or queen, good or evil, old or young, they give the player an excuse to go various places and give the player an introductory letter to important locals. They drive the player's experience regardless of their other concerns.
Screen Time Types
Once you have concerns figured out, you need to convert them into screen time. Keep in mind that screen time requires that a character have the attention of the player. Being in a crowd shot doesn't count, nor does just randomly standing around in a room without having any interactability.
In-party commentary is probably the most subtle and reliable approach. The character simply has something to say over the course of the player's normal adventuring, without interrupting the player's normal adventuring. For example, they might comment on the place, or an enemy, or banter with another party member. These can be injected seamlessly or they can be queued up by interaction spots - for example, a nice view, or a burned-down house.
Radio commentary is a more aggressive version: the character has something to say about something, regardless of whether they're in the party or not. This is typically reserved for core concern stuff - Liara will chime in to tell you that the obelisk has been moved even if she's not in your party. Particularly good radio commentary might involve having the out-of-party NPCs doing their own, parallel thing, then radioing to report their own conclusions to their similarly-paced adventure.
Third-party commentary is when the character isn't necessarily around, but is being discussed anyway. It could be other NPCs talking about them, or a wanted poster of them, or an interview of them, or a note they left, or even just finding a relic and saying "hey, I bet Liara would like this."
Downtime commentary is a powerful and relatively new technique: between adventures, there's a base of operations, and the NPCs are scattered around in it. You can chat with any number of them before moving on with the story. This is a powerful approach because it allows you to remove most of the rest of the world's context: the chatting can progress the same way regardless of which sector of space you're in, regardless of which planet you just visited, regardless of who's in the party, regardless of who the player likes.
Fuzzy focus scenes are scenes where an NPC is obviously tangentially involved, but it's not really about them. For example, whenever you meet another Asari in ME1, it will remind you of Liara, since she was the representative of her race at the time. Or when you step in to help a doctor, Liara might step forward with good advice and back-pats, perhaps even have some scene-specific sub-branch such as manufacturing extra medicine. The focus is still on helping a doctor, but Liara is getting some screen time.
Focused scenes are when the NPC is the focus. Downtime commentary is the most common place to trigger these. It's not necessarily them solo, but they're the focus. For example, Liara might chat with you about your newfound psychic memories, or about her crush, or about the nature of the Asari... or maybe she has a scene where she and Tali are laughing at a technical joke nobody else understands, or she's helping Dr. Chakwas with some basic medical duties. As always, these scenes are built out of the concerns of the characters.
Arcs are when a series of interconnected events happen which focus on the character. Typically these are contiguous. Liara's introduction is an obvious example - most introductions are arcs. You spend some time chasing her around a facility while learning what's going on, and then you team up with her to finish the facility off. This extremely typical example is something that can be generated (or at least customized) for nearly any character, but make sure their concerns show.
Rogue Arcs are when an NPC switches sides, usually temporarily. For example, a hero might become a villain for a short while, or a villain could join the hero's side. Or maybe someone just takes some personal time and things get out of control. Because of the impact of this, the focus is usually on the rogue character. It has no other special features, though, and can be treated as an ordinary arc in every other regard.
Schedule Elements... well, a lot of generative games aren't so big on having a central plot arc, and instead focus on cyclic challenges. A character should have a distinct schedule during these cycles, making it possible to run into them in specific high-context ways. Also, they may choose to change their schedule to react to player activities. The two things to keep in mind are that their schedule should reflect their concerns, and participating in their schedule with them should result in progression, not just repetition.
Anyway, those are my thoughts:
When generating random characters, you should put a lot of effort into generating how they get in front of the player's eyeballs. Just giving them traits won't make the player care about them.
Your thoughts?
Showing posts with label generative. Show all posts
Showing posts with label generative. Show all posts
Wednesday, December 13, 2017
Tuesday, April 18, 2017
Wondrous Random
One of the problems with generating content for games is that it always feels prosaic and dull.
So generative games are seeded with wondrous details. The generative content is used as endless filler.
Let's talk about wonder.
It's certainly possible to generate wondrous things. Here's a twitter bot that generates endlessly wondrous planets.
But these aren't suitable to put in video games. The biggest issue is the lack of interaction: a video game's strength is interactivity, right?
Let's consider sci fi, since I'm a sci fi nerd. So let's talk about a few wondrous moments, whether they're interactive, and whether these moments could be generative.
When I considered wondrous moments, I realized they are all either introducing us or bidding us farewell. They are transitions. They are exclamation points. They are a hello or a goodbye.
For example, a rocket launch is amazing. It's wondrous to launch a rocket.
But if we show every rocket launch in a game, the player will get truly bored no matter how pretty it is. See Mass Effect: Andromeda for details.
Instead, we would focus on the rocket launches that take place during notable transitions. When we are saying goodbye to a beloved planet and hello to the stars, that's when we put in a loving shot of the rocket launch. Even though the player has undoubtedly seen a million rocket launches in their life, this moment is wondrous because it comes at the right moment. Just when we're saying goodbye, just when we're saying hello.
Obviously, there are also things that are rarer. Ancient obelisks. Forgotten planets. Derelict space ships. Strange aliens. The sight of your ship being split in half while you're inside it.
These also have the most impact if they happen when the player is saying hello or goodbye. Timed poorly, these amazing things will feel as mundane as having to shut off your alarm and get up for work.
As an example of this, in Mass Effect you spend a lot of time discovering new planets. It's incredibly boring. Discovering new planets is boring! ... because it's part of your daily tedium.
On the other hand, in Stellaris you inevitably discover another alien star nation. This feels surprisingly powerful, because the game leads up to it with popups about how there's no intelligent life even though you're searching for it. Things are just starting to slow down for your star nation, you're ready for a change, and then BAM - a new civilization calls. And then another and another!
There's not much fanfare in terms of selling the illusion. A few lines of text before, one extra line of text afterwards. But because it happens at the right time it feels thrilling. Say hello to a new era!
Well, half the time the pacing is off. It's not a perfect game. But when it works, it works - even without the majesty of long edits and low camera angles.
Later on, discovering a new species feels dull and pedestrian. You're already in that era, and there's no transition happening, so it's dull and pedestrian.
So... let's discuss some techniques we can use to make this stuff shine.
Understanding the Phases of your Game
Rather than discussing how to generate wondrous things, the critical thing is when to generate them. By guiding the player through distinct chunks of game, you create moments where wondrous things fit, and even mediocre wonders will play well in those moments.
The difficulty is in making the chunks feel sharp and clear. For example, in Mass Effect you might go visit the Citadel and spend three hours doing side quests. This is a phase. But there's no "punch" to the beginning or ending of the phase. Mass Effect does play a little video of you pulling out of space dock, but it's perfunctory. It has to be, because the staging isn't heavy enough for the player to put up with more.
How can we build up these phase as things that feel real and heavy?
There are two factors here: the construction of the phase and the transition moment.
Constructing the Phase
The biggest things that add weight are events and characters tied to the specific phase, with a focus on them being left behind when the phase changes.
For example, if it's a visit to The Citadel, you can have the player solve various problems... but have the characters wait on the way to the docks to wave goodbye and say thank you. This doesn't interfere with the player - the player can just run right past - but it does make the player realize they're leaving a place that they've affected.
There are plenty of other, heavier ways. For example, the player knowing they'll never return makes those goodbyes more intense. The player knowing the place is about to sink into a fiery magma pit also punches things up.
Adding play on the exit is also valid: in order to get off-world, the players have to fight through the local thugs and decouple the dock lock-down locks. When considering where to put these kinds of fights, the answer is "before the wondrous thing" - so if our wondrous thing is the launch, then we want the fight to happen before launch, not in space.
If you're creating a linear game, this can all be added in manually. If we're talking about generating content, it's clear we have to generate these heavy elements. The wondrous launch isn't the thing we have to generate: we have to generate the thugs and the teary children waving goodbye and the battered old robots throwing flowers.
We have to generate the context. The meaning.
This is something people talk about a lot, but I think they generally discuss how to create long chains of content. Our focus is different: we don't need complex, evolving narratives. We need short, punchy narratives that fit within this phase of the game and have a clear "goodbye" state.
You Say Goodbye, I Say Hello
Transition moments can be on the "goodbye" side or the "hello" side, and there can be scenes between those sides.
For example, when we leave The Citadel we can linger on our ship going through the relay and let the weight of our passing slowly roll through us. Orrrrr we can show an exciting shot of us approaching a new planet, slamming aside the purple clouds as we burn down on a re-entry.
But we can't show both.
I mean, we do show both. But only one will count as wondrous. The other will count as just a long shot.
Which one do we focus on? Well, which phase is heavier? Is the phase part of a longer chain of similar phases?
For example, leaving The Citadel is usually not a huge deal, because it's a hub world and you visit it a lot. In general, goodbyes are going to be weak from places you're revisiting... unless it's the last time you'll ever visit them. The last goodbye from a hub world is extremely strong.
Similarly, if you are leaving a world exploration phase and immediately entering another world exploration phase, the goodbye is going to be weak and you'll want to play up the new elements with a strong hello.
In theory.
Either way, it's probably best to pad some time between the goodbye and the hello. In a video game, this usually consists of world map navigation, although that's less than ideal. Useful non-phase activities such as party chatter, inventory management, and so on are probably better.
Repeated Majesties
Whether you're generating them or seeding carefully-created content, you're going to have some kind of amazing thing in your universe. You'd like it to not get boring.
An example of this is the relays in Mass Effect. Ancient technology that lets the folks travel great distances without much effort! Amazing!
But in Mass Effect they quickly become so mundane you just want to skip any scene involving them.
Why? Because they are mundane. They are part of the ordinary play of the game. They are not at a start point or an end point. They do not say hello or goodbye. They just happen over the course of your day-to-day affairs.
That's fine, to an extent. Not every encounter with them has to feel magical. But we want the player to be aware that they're playing with something potent every day. So we should try to tie our transitions to them whenever we can. Rather than showing a rocket launch, we would show a relay launch.
They become a "staple wonder", used whenever we need a wonder but don't have any specific wonder in mind.
The issue is that you only have so much space for these. For example, our ship is, itself, a staple wonder. Loving shots of our ship are also a major repeated theme. But is there room for both the ship and the relay? It'd dilute the shots if you played up both the ship and the relay in the same scene: wonders need to be punchy.
There are plenty of times when the ship can be used and the relay can't... but are there any times when the relay can be used but the ship can't?
These are the questions I want writers and devs to ask themselves when they're designing their universe. Not "are relays cool/plot-important", but "when we show cool stuff with relays, are we getting in the way of showing other, more important cool stuff?"
Please note, generative elements can work here just fine. For example, the "deep monsters" in Dwarf Fortress could easily be re-used in different games rather than regenerated from scratch each time - until you defeat this one, you won't get a different one.
Epic Generation
OK, OK, what about actually generating epic, wondrous stuff?
Well, there's a few categories of epic stuff, and presumably they'd be generated with different systems.
For recurring touchstones such as "your awesome ship" or "the bloodthirst armies of Throckwoodle", those are likely to be specified by the dev, then slotted in as appropriate. As discussed, "generating" those is more like generating a reason for you to use them.
The idea of generating some amazing scenario is also appealing. How do you generate an amazing scenario?
Well, that's a book on its own, but in general you have to remember to make the "hello" connect to the play. The deeper the connection, the better.
In general: the hello needs to tell the player why they're here.
For example, let's say you roll the dice and come up with a pirate base on a mist-covered moon. The wonder is the mist-covered moon - it feels still and epic. But the players aren't here for a mist-covered moon. They're here to tangle with the pirates.
How do you set that up? Well, you can show a shot of the pirate base within the mist, or pirates on motorcycles in the mist, or whatever. You can have an event where the pirates burst out of the mist to capture or ground the players. There's a lot of options: a battered merchant ship half-lost in fog, for example.
These are not too hard to generate, because you can largely just use category matches. The fact that it's a foggy moon is not important to the algorithm: it's just considered "MASK category GRAVITY FIELD category", and so it would have the same set of options as if you were on a smokey volcanic planet, an acidic Venus, a snowy ice moon, even an artificial-gravity planetoid covered in silver clouds.
Besides making the hello introduce the play, it's also valuable to have the play reference the hello. For example, the pirates can explain that they set up base here because the mists are an excellent cover, or they can have tactics derived from the mists, or they can have problems and keep getting lost because of the mist, or maybe they have mutant winged wolves that the mist has created... again, these aspects don't have to make too much sense, as long as they're not actively nonsensical.
The other kind of wondrous event I tend to want to create are the action-packed transition scenes where things turn. For example, your ship takes direct laser fire from the megacannon and is ripped in half with you aboard, now you're staring over a spiraling debris field struggling to get to the megacannon before you run out of air. Or there's a chase in the jungle as speeder bikes race for safety. Or you have to trick the zorgblat to smash down the walls of the alien zoo so you can escape...
These moments are dangerously close to talking about "generative plots", so we'll leave them mostly in the background for now except for one important fact:
These are transition scenes.
This is a moment when you say goodbye to where you were and hello to someplace new.
And that's considerably more important than whether they are simulated correctly or whatever.
...
Anyway, them's my thoughts. Tell me what you think.
So generative games are seeded with wondrous details. The generative content is used as endless filler.
Let's talk about wonder.
It's certainly possible to generate wondrous things. Here's a twitter bot that generates endlessly wondrous planets.
But these aren't suitable to put in video games. The biggest issue is the lack of interaction: a video game's strength is interactivity, right?
Let's consider sci fi, since I'm a sci fi nerd. So let's talk about a few wondrous moments, whether they're interactive, and whether these moments could be generative.
When I considered wondrous moments, I realized they are all either introducing us or bidding us farewell. They are transitions. They are exclamation points. They are a hello or a goodbye.
For example, a rocket launch is amazing. It's wondrous to launch a rocket.
But if we show every rocket launch in a game, the player will get truly bored no matter how pretty it is. See Mass Effect: Andromeda for details.
Instead, we would focus on the rocket launches that take place during notable transitions. When we are saying goodbye to a beloved planet and hello to the stars, that's when we put in a loving shot of the rocket launch. Even though the player has undoubtedly seen a million rocket launches in their life, this moment is wondrous because it comes at the right moment. Just when we're saying goodbye, just when we're saying hello.
Obviously, there are also things that are rarer. Ancient obelisks. Forgotten planets. Derelict space ships. Strange aliens. The sight of your ship being split in half while you're inside it.
These also have the most impact if they happen when the player is saying hello or goodbye. Timed poorly, these amazing things will feel as mundane as having to shut off your alarm and get up for work.
As an example of this, in Mass Effect you spend a lot of time discovering new planets. It's incredibly boring. Discovering new planets is boring! ... because it's part of your daily tedium.
On the other hand, in Stellaris you inevitably discover another alien star nation. This feels surprisingly powerful, because the game leads up to it with popups about how there's no intelligent life even though you're searching for it. Things are just starting to slow down for your star nation, you're ready for a change, and then BAM - a new civilization calls. And then another and another!
There's not much fanfare in terms of selling the illusion. A few lines of text before, one extra line of text afterwards. But because it happens at the right time it feels thrilling. Say hello to a new era!
Well, half the time the pacing is off. It's not a perfect game. But when it works, it works - even without the majesty of long edits and low camera angles.
Later on, discovering a new species feels dull and pedestrian. You're already in that era, and there's no transition happening, so it's dull and pedestrian.
So... let's discuss some techniques we can use to make this stuff shine.
Understanding the Phases of your Game
Rather than discussing how to generate wondrous things, the critical thing is when to generate them. By guiding the player through distinct chunks of game, you create moments where wondrous things fit, and even mediocre wonders will play well in those moments.
The difficulty is in making the chunks feel sharp and clear. For example, in Mass Effect you might go visit the Citadel and spend three hours doing side quests. This is a phase. But there's no "punch" to the beginning or ending of the phase. Mass Effect does play a little video of you pulling out of space dock, but it's perfunctory. It has to be, because the staging isn't heavy enough for the player to put up with more.
How can we build up these phase as things that feel real and heavy?
There are two factors here: the construction of the phase and the transition moment.
Constructing the Phase
The biggest things that add weight are events and characters tied to the specific phase, with a focus on them being left behind when the phase changes.
For example, if it's a visit to The Citadel, you can have the player solve various problems... but have the characters wait on the way to the docks to wave goodbye and say thank you. This doesn't interfere with the player - the player can just run right past - but it does make the player realize they're leaving a place that they've affected.
There are plenty of other, heavier ways. For example, the player knowing they'll never return makes those goodbyes more intense. The player knowing the place is about to sink into a fiery magma pit also punches things up.
Adding play on the exit is also valid: in order to get off-world, the players have to fight through the local thugs and decouple the dock lock-down locks. When considering where to put these kinds of fights, the answer is "before the wondrous thing" - so if our wondrous thing is the launch, then we want the fight to happen before launch, not in space.
If you're creating a linear game, this can all be added in manually. If we're talking about generating content, it's clear we have to generate these heavy elements. The wondrous launch isn't the thing we have to generate: we have to generate the thugs and the teary children waving goodbye and the battered old robots throwing flowers.
We have to generate the context. The meaning.
This is something people talk about a lot, but I think they generally discuss how to create long chains of content. Our focus is different: we don't need complex, evolving narratives. We need short, punchy narratives that fit within this phase of the game and have a clear "goodbye" state.
You Say Goodbye, I Say Hello
Transition moments can be on the "goodbye" side or the "hello" side, and there can be scenes between those sides.
For example, when we leave The Citadel we can linger on our ship going through the relay and let the weight of our passing slowly roll through us. Orrrrr we can show an exciting shot of us approaching a new planet, slamming aside the purple clouds as we burn down on a re-entry.
But we can't show both.
I mean, we do show both. But only one will count as wondrous. The other will count as just a long shot.
Which one do we focus on? Well, which phase is heavier? Is the phase part of a longer chain of similar phases?
For example, leaving The Citadel is usually not a huge deal, because it's a hub world and you visit it a lot. In general, goodbyes are going to be weak from places you're revisiting... unless it's the last time you'll ever visit them. The last goodbye from a hub world is extremely strong.
Similarly, if you are leaving a world exploration phase and immediately entering another world exploration phase, the goodbye is going to be weak and you'll want to play up the new elements with a strong hello.
In theory.
Either way, it's probably best to pad some time between the goodbye and the hello. In a video game, this usually consists of world map navigation, although that's less than ideal. Useful non-phase activities such as party chatter, inventory management, and so on are probably better.
Repeated Majesties
Whether you're generating them or seeding carefully-created content, you're going to have some kind of amazing thing in your universe. You'd like it to not get boring.
An example of this is the relays in Mass Effect. Ancient technology that lets the folks travel great distances without much effort! Amazing!
But in Mass Effect they quickly become so mundane you just want to skip any scene involving them.
Why? Because they are mundane. They are part of the ordinary play of the game. They are not at a start point or an end point. They do not say hello or goodbye. They just happen over the course of your day-to-day affairs.
That's fine, to an extent. Not every encounter with them has to feel magical. But we want the player to be aware that they're playing with something potent every day. So we should try to tie our transitions to them whenever we can. Rather than showing a rocket launch, we would show a relay launch.
They become a "staple wonder", used whenever we need a wonder but don't have any specific wonder in mind.
The issue is that you only have so much space for these. For example, our ship is, itself, a staple wonder. Loving shots of our ship are also a major repeated theme. But is there room for both the ship and the relay? It'd dilute the shots if you played up both the ship and the relay in the same scene: wonders need to be punchy.
There are plenty of times when the ship can be used and the relay can't... but are there any times when the relay can be used but the ship can't?
These are the questions I want writers and devs to ask themselves when they're designing their universe. Not "are relays cool/plot-important", but "when we show cool stuff with relays, are we getting in the way of showing other, more important cool stuff?"
Please note, generative elements can work here just fine. For example, the "deep monsters" in Dwarf Fortress could easily be re-used in different games rather than regenerated from scratch each time - until you defeat this one, you won't get a different one.
Epic Generation
OK, OK, what about actually generating epic, wondrous stuff?
Well, there's a few categories of epic stuff, and presumably they'd be generated with different systems.
For recurring touchstones such as "your awesome ship" or "the bloodthirst armies of Throckwoodle", those are likely to be specified by the dev, then slotted in as appropriate. As discussed, "generating" those is more like generating a reason for you to use them.
The idea of generating some amazing scenario is also appealing. How do you generate an amazing scenario?
Well, that's a book on its own, but in general you have to remember to make the "hello" connect to the play. The deeper the connection, the better.
In general: the hello needs to tell the player why they're here.
For example, let's say you roll the dice and come up with a pirate base on a mist-covered moon. The wonder is the mist-covered moon - it feels still and epic. But the players aren't here for a mist-covered moon. They're here to tangle with the pirates.
How do you set that up? Well, you can show a shot of the pirate base within the mist, or pirates on motorcycles in the mist, or whatever. You can have an event where the pirates burst out of the mist to capture or ground the players. There's a lot of options: a battered merchant ship half-lost in fog, for example.
These are not too hard to generate, because you can largely just use category matches. The fact that it's a foggy moon is not important to the algorithm: it's just considered "MASK category GRAVITY FIELD category", and so it would have the same set of options as if you were on a smokey volcanic planet, an acidic Venus, a snowy ice moon, even an artificial-gravity planetoid covered in silver clouds.
Besides making the hello introduce the play, it's also valuable to have the play reference the hello. For example, the pirates can explain that they set up base here because the mists are an excellent cover, or they can have tactics derived from the mists, or they can have problems and keep getting lost because of the mist, or maybe they have mutant winged wolves that the mist has created... again, these aspects don't have to make too much sense, as long as they're not actively nonsensical.
The other kind of wondrous event I tend to want to create are the action-packed transition scenes where things turn. For example, your ship takes direct laser fire from the megacannon and is ripped in half with you aboard, now you're staring over a spiraling debris field struggling to get to the megacannon before you run out of air. Or there's a chase in the jungle as speeder bikes race for safety. Or you have to trick the zorgblat to smash down the walls of the alien zoo so you can escape...
These moments are dangerously close to talking about "generative plots", so we'll leave them mostly in the background for now except for one important fact:
These are transition scenes.
This is a moment when you say goodbye to where you were and hello to someplace new.
And that's considerably more important than whether they are simulated correctly or whatever.
...
Anyway, them's my thoughts. Tell me what you think.
Monday, June 20, 2016
Nonlinear RPGs
Linear RPGs and open-world RPGs are not the same.
Linear RPGs allow the player to chew on things for as long as they like, then poke the sleepy plot into delivering the next big chunk of content. This has a lot of pros and cons.
From the dev's perspective, the pros are powerful. Since the content is gated and carefully scripted, the dev knows exactly who the player is playing, exactly who is in their party, exactly how strong they are, exactly where the plot is, exactly what they've seen and haven't seen. No matter how long the player spends on the Shining Plains, they can't buy anything better than a cutlass and a fireball spell.
In addition, the player has a very crisp trigger. They know how to poke the plot into action: fight the boss, cross the monster bridge, say "I'm ready" to the queen. This action is always very obvious and voluntary, and the player will trigger it when they are ready to experience the next content chunk.
These two things combined allow the devs to make sweeping content chunks. When you cross the monster bridge or fight the boss, things change. There's cutscenes. You're fighting your way out of a dungeon. One of your party members leaves, another one arrives. The world is blown up and there's no way back to where you started...
It can be precise and moving, because you know exactly what the player is doing and who they have with them. It can be big and bombastic because the player explicitly volunteered to go through it.
Open-world RPGs don't have these advantages, because the majority of the world is already available from the start. A player moving from point A to point C isn't really "volunteering" to experience a big plot event at point B. Hell, you don't even know who they are or who's in their party, not when you're creating the content.
Because of this, open-world RPGs typically have hundreds of tiny threads of content instead of large content drops. They also adapt the combat challenges by level-scaling.
Both of these leave the experience bland and featureless in comparison to a linear RPG with its more nuanced challenge curve and bombastic, personalized plot events.
Linear RPGs have downsides, too. The big, obvious one is that their appeal is limited. If you don't like the shoes you're stuck in or the way the plot is going, well, that's too bad. If you want to start over, you'll have to go back through the same shit again, there's no fast way to move through those chapters aside from being more efficient with grinding.
There have been open-world CRPGs since before "CRPG" was a term, but they only came into their own when computers became strong enough to convincingly render the world and its responses to you. This became a more reliable method of drawing the player in than the limited appeal of a carefully-written linear storyline.
Big, splashy, personalized stories were left on the cutting room floor... but I think it's a mistake to assume they're gone for good. Not only is there power in the stories they tell, there's power in the fundamental pacing of a linear RPG. The way the content unfolds is really strong.
What if we could come up with a new RPG subgenre that keeps that power but adopts the freedoms of an open-world approach?
I call it "nonlinear" RPGs.
Imagine if we were going to write Mass Effect as a nonlinear RPG instead of a linear one. The characters and stories would feel the same, but they would silently adapt to the player's choices. Not just "paragon vs renegade": wildly veering so that even the basic setups could be avoided or inverted. Maybe you play a smooth talker with a good record, and you convince the council to take immediate action against the Reapers and the traitorous Spectre. Maybe you play Han Solo, and just buy a crappy ship on your own and fly off to have carefree space adventures.
If it was an open-world game, these would be viable. You have that level of variability in the recent Fallouts, for example. But Fallout doesn't have the heavy "WHAM chew chew chew WHAM" feel of a linear RPG - it's more like wading through vanilla pudding.
In order to make stories adapt to your choices, you have to write variations for every choice the player can make. If you have one big story (like a linear RPG), the cost spirals out of control very quickly. So open-world RPGs use lots of tiny, independent stories. It gives the player feedback and tells them the game accepts the way they're playing their character, but because they're small and have so little effect on the game world, you can write their variants cheaply.
Fortunately, linear RPGs don't need that responsiveness nearly as much. The linear RPG already knows how you're playing your character: they provided it.
But... that's where we need to go to find the kernel of what comes next.
If we want a linear RPG to let the player play a wide variety of characters in a wide variety of ways, we need to have the game respond to those variations.
A linear RPG's "gateways" are always crystal clear. A boss. A bridge. A queen's speech. The player trips them whenever they decide they want to, and the game moves forward.
It's easy to create random events. It's even easy to chain them and thread them so you have repeating villains or escalating challenges. It's easy to make random maps and random subquests. (There, I just cut twenty pages from this essay.)
But what isn't easy is to make the experiences adapt to the player's choices and hit hard without being annoying.
Killing off a character or blowing up a place or putting you in a long dungeon sequence is really, really annoying if it isn't done well. It's not about build-up or epicness: it's about suitability.
In a linear RPG, the characters and places and factions all exist to tell a story. Each one represents a major arc or a piece of an arc in the fundamental pattern of the game.
In Mass Effect, Tali's character represents the attempt to take back your future from the mistakes of your parents. Garrus represents the failings of The System to deal with things, and the lure to work outside it. Wrex represents the struggle to provide a future for people that actively seem to not want one. And Liara represents blue nerd ladies that want to have sex with you.
OK, not every character is equally interesting, but they all have arcs that thread through the games and give you a gateway into the beating heart of the story line. The planets, too, represent tiny pieces of those arcs, allowing the arcs to exist in the game world concretely, instead of as a talking head. Factions like the Spectres and the Council also push the plot arcs along in a powerful, immersive way and create a multi-planet threat to hook things together.
And this is our method.
We aren't generating storylines. We are generating random content, sure, but it's anchored into the characters, factions, and scripted plot events that are the best our universe has to offer. Our random content offers a foundation, a stage for those core ideas to dance on.
One of the issues of open-world games is that the player can choose to be anyone, and it's very hard for the game to figure out what the player's self-image is. Thus the frolicking, daisy-picking assassins in Elder Scrolls games. The game tries to guess which plot arcs will be interesting to you by placing them in places those kinds of characters are likely to go.
But our games have a party, and our party members embody specific plot arcs.
If I'm interested in how the system fails us and what happens when we work outside it, I take Garrus. If I'm interested in the fate of the ancients, I take Liara. If I'm interested in struggling to build a future for people that don't want your help, I take Wrex. Not as a conscious choice, but because I am drawn to their characters right from the start.
Of course, the party structure of existing Mass Effect games wouldn't work, since you basically have everyone all the time and nobody ever leaves or comes back.
It's easy enough to replace that structure with one where the player only has a crew of three or four, and they frequently leave to go on some arc-related personal mission you can't help with. (Of course, you'll meet up with them later when the next piece of the arc comes around...)
This means our arcs have to be written with a bit of flexibility. While the core arc has a specific chain of events (for example, Mordin's plot involves rescuing a research victim, helping her, then distributing a fix), it should also contain a number of background events suitable for A) seeing Mordin repeatedly and getting to know him even if you don't trigger his join event, B) filling out random content with evocative situations (his commenting on the evil bug monsters, for example), and C) Mordin's background work after he's joined and then left and then is kicking around waiting to join again.
With these elements in place, the player would "naturally" be attracted to the local NPCs that seem the most interesting. Which will, of course, be arc characters suitable for adding to the party. Once the party is filled up (with maybe one spare), the others are too busy with their personal situation to join your team right now.
Don't choose to take Liara? Well, Liara will also show up in other space stations or on other planets, chatting about how she's chasing down a new lead on an old ruin. She may even have a small sidequest for you. And, if any of your party members leave for a while, you'll suddenly find she's pretty easy to recruit!
Now that your party is known, the next time you trigger a major content burp (fly to a contested star system, argue with the council, defeat a boss, etc) it'll be laced with the next arc events for your party of characters.
Not tiny drips and drabs, either: the next content batch is a big, bombastic event. A whole new set of planets, characters leaving and arriving, crashing your ship and fighting through a jungle...
This is also easy to mod. You can introduce additional characters with their own arcs pretty easily. Although the character arcs don't really overlap, they do exist in the same space: Mordin's arc introduces a mad science lab where genetic monsters are running amok, but it's inside a planet dedicated to Tali's next big arc element, where she's investigating the whole planet for suitability as a home world. Other elements are also laced in. Some are minor arc elements, some are completely random, but all can be laced together using a simple keyword system and a bunch of NPCs or audio tapes referring to other places. Those can easily be generated randomly.
Right now, we think of RPGs as either a world to play in or as monolithic stories. Instead, we might think of them as a bunch of opportunistic stories that piggyback on characters, factions, and places to assemble their setpieces.
... anyway, I cut about fifteen pages out of this long-ass essay. Hopefully it's not too hard to read.
Linear RPGs allow the player to chew on things for as long as they like, then poke the sleepy plot into delivering the next big chunk of content. This has a lot of pros and cons.
From the dev's perspective, the pros are powerful. Since the content is gated and carefully scripted, the dev knows exactly who the player is playing, exactly who is in their party, exactly how strong they are, exactly where the plot is, exactly what they've seen and haven't seen. No matter how long the player spends on the Shining Plains, they can't buy anything better than a cutlass and a fireball spell.
In addition, the player has a very crisp trigger. They know how to poke the plot into action: fight the boss, cross the monster bridge, say "I'm ready" to the queen. This action is always very obvious and voluntary, and the player will trigger it when they are ready to experience the next content chunk.
These two things combined allow the devs to make sweeping content chunks. When you cross the monster bridge or fight the boss, things change. There's cutscenes. You're fighting your way out of a dungeon. One of your party members leaves, another one arrives. The world is blown up and there's no way back to where you started...
It can be precise and moving, because you know exactly what the player is doing and who they have with them. It can be big and bombastic because the player explicitly volunteered to go through it.
Open-world RPGs don't have these advantages, because the majority of the world is already available from the start. A player moving from point A to point C isn't really "volunteering" to experience a big plot event at point B. Hell, you don't even know who they are or who's in their party, not when you're creating the content.
Because of this, open-world RPGs typically have hundreds of tiny threads of content instead of large content drops. They also adapt the combat challenges by level-scaling.
Both of these leave the experience bland and featureless in comparison to a linear RPG with its more nuanced challenge curve and bombastic, personalized plot events.
Linear RPGs have downsides, too. The big, obvious one is that their appeal is limited. If you don't like the shoes you're stuck in or the way the plot is going, well, that's too bad. If you want to start over, you'll have to go back through the same shit again, there's no fast way to move through those chapters aside from being more efficient with grinding.
There have been open-world CRPGs since before "CRPG" was a term, but they only came into their own when computers became strong enough to convincingly render the world and its responses to you. This became a more reliable method of drawing the player in than the limited appeal of a carefully-written linear storyline.
Big, splashy, personalized stories were left on the cutting room floor... but I think it's a mistake to assume they're gone for good. Not only is there power in the stories they tell, there's power in the fundamental pacing of a linear RPG. The way the content unfolds is really strong.
What if we could come up with a new RPG subgenre that keeps that power but adopts the freedoms of an open-world approach?
I call it "nonlinear" RPGs.
Imagine if we were going to write Mass Effect as a nonlinear RPG instead of a linear one. The characters and stories would feel the same, but they would silently adapt to the player's choices. Not just "paragon vs renegade": wildly veering so that even the basic setups could be avoided or inverted. Maybe you play a smooth talker with a good record, and you convince the council to take immediate action against the Reapers and the traitorous Spectre. Maybe you play Han Solo, and just buy a crappy ship on your own and fly off to have carefree space adventures.
If it was an open-world game, these would be viable. You have that level of variability in the recent Fallouts, for example. But Fallout doesn't have the heavy "WHAM chew chew chew WHAM" feel of a linear RPG - it's more like wading through vanilla pudding.
In order to make stories adapt to your choices, you have to write variations for every choice the player can make. If you have one big story (like a linear RPG), the cost spirals out of control very quickly. So open-world RPGs use lots of tiny, independent stories. It gives the player feedback and tells them the game accepts the way they're playing their character, but because they're small and have so little effect on the game world, you can write their variants cheaply.
Fortunately, linear RPGs don't need that responsiveness nearly as much. The linear RPG already knows how you're playing your character: they provided it.
But... that's where we need to go to find the kernel of what comes next.
If we want a linear RPG to let the player play a wide variety of characters in a wide variety of ways, we need to have the game respond to those variations.
A linear RPG's "gateways" are always crystal clear. A boss. A bridge. A queen's speech. The player trips them whenever they decide they want to, and the game moves forward.
It's easy to create random events. It's even easy to chain them and thread them so you have repeating villains or escalating challenges. It's easy to make random maps and random subquests. (There, I just cut twenty pages from this essay.)
But what isn't easy is to make the experiences adapt to the player's choices and hit hard without being annoying.
Killing off a character or blowing up a place or putting you in a long dungeon sequence is really, really annoying if it isn't done well. It's not about build-up or epicness: it's about suitability.
In a linear RPG, the characters and places and factions all exist to tell a story. Each one represents a major arc or a piece of an arc in the fundamental pattern of the game.
In Mass Effect, Tali's character represents the attempt to take back your future from the mistakes of your parents. Garrus represents the failings of The System to deal with things, and the lure to work outside it. Wrex represents the struggle to provide a future for people that actively seem to not want one. And Liara represents blue nerd ladies that want to have sex with you.
OK, not every character is equally interesting, but they all have arcs that thread through the games and give you a gateway into the beating heart of the story line. The planets, too, represent tiny pieces of those arcs, allowing the arcs to exist in the game world concretely, instead of as a talking head. Factions like the Spectres and the Council also push the plot arcs along in a powerful, immersive way and create a multi-planet threat to hook things together.
And this is our method.
We aren't generating storylines. We are generating random content, sure, but it's anchored into the characters, factions, and scripted plot events that are the best our universe has to offer. Our random content offers a foundation, a stage for those core ideas to dance on.
One of the issues of open-world games is that the player can choose to be anyone, and it's very hard for the game to figure out what the player's self-image is. Thus the frolicking, daisy-picking assassins in Elder Scrolls games. The game tries to guess which plot arcs will be interesting to you by placing them in places those kinds of characters are likely to go.
But our games have a party, and our party members embody specific plot arcs.
If I'm interested in how the system fails us and what happens when we work outside it, I take Garrus. If I'm interested in the fate of the ancients, I take Liara. If I'm interested in struggling to build a future for people that don't want your help, I take Wrex. Not as a conscious choice, but because I am drawn to their characters right from the start.
Of course, the party structure of existing Mass Effect games wouldn't work, since you basically have everyone all the time and nobody ever leaves or comes back.
It's easy enough to replace that structure with one where the player only has a crew of three or four, and they frequently leave to go on some arc-related personal mission you can't help with. (Of course, you'll meet up with them later when the next piece of the arc comes around...)
This means our arcs have to be written with a bit of flexibility. While the core arc has a specific chain of events (for example, Mordin's plot involves rescuing a research victim, helping her, then distributing a fix), it should also contain a number of background events suitable for A) seeing Mordin repeatedly and getting to know him even if you don't trigger his join event, B) filling out random content with evocative situations (his commenting on the evil bug monsters, for example), and C) Mordin's background work after he's joined and then left and then is kicking around waiting to join again.
With these elements in place, the player would "naturally" be attracted to the local NPCs that seem the most interesting. Which will, of course, be arc characters suitable for adding to the party. Once the party is filled up (with maybe one spare), the others are too busy with their personal situation to join your team right now.
Don't choose to take Liara? Well, Liara will also show up in other space stations or on other planets, chatting about how she's chasing down a new lead on an old ruin. She may even have a small sidequest for you. And, if any of your party members leave for a while, you'll suddenly find she's pretty easy to recruit!
Now that your party is known, the next time you trigger a major content burp (fly to a contested star system, argue with the council, defeat a boss, etc) it'll be laced with the next arc events for your party of characters.
Not tiny drips and drabs, either: the next content batch is a big, bombastic event. A whole new set of planets, characters leaving and arriving, crashing your ship and fighting through a jungle...
This is also easy to mod. You can introduce additional characters with their own arcs pretty easily. Although the character arcs don't really overlap, they do exist in the same space: Mordin's arc introduces a mad science lab where genetic monsters are running amok, but it's inside a planet dedicated to Tali's next big arc element, where she's investigating the whole planet for suitability as a home world. Other elements are also laced in. Some are minor arc elements, some are completely random, but all can be laced together using a simple keyword system and a bunch of NPCs or audio tapes referring to other places. Those can easily be generated randomly.
Right now, we think of RPGs as either a world to play in or as monolithic stories. Instead, we might think of them as a bunch of opportunistic stories that piggyback on characters, factions, and places to assemble their setpieces.
... anyway, I cut about fifteen pages out of this long-ass essay. Hopefully it's not too hard to read.
Monday, July 20, 2015
Life in a Game
So, after Space Engineer's recent disastrous update, I switched back to Rimworld for a while.
Rimworld is coming along nicely. You can build complex bases, set up your citizens in complex ways. There's a lot of fun to be had, especially when you start laying on the mods. But there is a big weakness. I can't blame it on Rimworld: it's a weakness in all base-building games.
The problem with these games is that nobody lives in your bases.
OK, I know there's, like, 30 people living in the base according to the game. They wander around, have their little tasks. In Rimworld they even goof off or chat. Still, none of them actually feel alive. They don't form relationships. They don't have hobbies. They don't do things with each other, have friends, have enemies. They don't have lifestyles or emotions, at least none that are differentiated in any significant way from anyone else. They have a lot of stats, but who cares?
As the number of people in your team goes up, their individual stats matter less and less. Instead, how they contribute to the operation of the team is what matters. It doesn't matter whether person A is marginally better or worse at farming, it matters whether they can play the farming role, and whether they should be a focused farmer or someone who helps farm when the workload gets rough but has other jobs the rest of the time.
What's the alternative?
There's a reason the Sims was popular: it allowed players to feel like their little avatars were living a life. The tools used to do this were simple: a familiar scenario (working and cohabitating) with clearly defined roles, lifestyles, relationships, optional goals (having kids, ranking up, collecting meteors, etc), attention retention (everyone needs to be clicked on sometimes), and personality proxies (appearance, clothing sets, certain personality traits).
Let's talk about each of the techniques individually, and then let's talk about how to shape your game to allow for them.
Personality proxies are the most problematic, because they bring in the most from outside the game world. We'll have to talk about them in detail later, but the short version is that you have to be able to tell who is who. If you have more than four team members, having slightly different names and icons isn't going to cut it: you need a dense representation of who is who, along as many axes as possible. Not just physical appearance, but voice, animations, fashion, mannerisms, personal possessions, and room decoration.
Lifestyles are technically a personality proxie, but it's worth mentioning them as a distinct group because these interact with the world, or at least the timing of things. Lifestyles are specific habits, inhibitions, and judgments not shared by the rest of the group - for example, one person might obsessively collect statues, one person might be the only person on base that smokes weed, one person might only work at night, one person might dress in finery get offended if someone else looks shlubby.
Lifestyles are powerful because they are behavioral elements. However, these should not be chosen willy-nilly. When we talk about how to do personality proxies, we'll be bringing these up again.
Evocative scenario: A familiar scenario is a way to allow the player to hook into the game world. Almost everyone has struggled to work a day job, had roomies, eaten pizza, invited people over, etc. This familiar setting can have any characters inserted into it, since living with Spock and Captain Kirk in a tiny apartment is hilarious.
But, again, this brings in a lot from outside: "familiar" scenario assumes it is familiar. Similarly, while it allows the player to import characters they already have an attachment to, it isn't very good at differentiating random characters. Everyone has to live, eat, participate in daily life. You can put Spock into an apartment, but someone as interesting and evocative as Spock cannot arise from an apartment. There's no room for his characterization.
Because of that, if we're focusing on random characters, we need the exact opposite. Rather than a familiar scenario, we need an evocative, unfamiliar scenario that will allow characters to establish and continually re-establish a strong personality.
Clearly defined roles are important to allow people to distinguish themselves at the most fundamental level. The wider the disparity of roles, the wider the variation between the characters. In The Sims, you have the breadwinner, the housemaker, the children, the skeezy roomie, and so on. You also have all the details you drag in from your expectations: the annoying roomie, the tidy roomie, the control-freak roomie. It's two axes of roles: one aligned with the core gameplay (time/money), one aligned with personal interactions with shared resources.
If we're generating characters randomly, we need to have roles that offer us powerful differentiation. We slot the character into a role and suddenly they come alive. The green thumb luddite is facility manager? We suddenly have an explosion of expectations about how the facility will function and how they will interact with other characters even if none of that actually happens in the game.
The difficulty is getting a breadth of roles. You can't simply use social status, because a simple numeric rank isn't evocative enough. Instead, think of each role as "which core task do they do, when?"
In The Sims, you don't really have "breadwinner A, B, and C", you have one person that wastes their life working in an office, another one that does arts from home, and maybe a third that works part-time at night but still keeps their days largely free. These roles each interact with the core scenario in a different way, at a different place and time. In addition, the people that don't work aren't simply "not working". Each has a role within the function of the house and life in general. One is a child, one is raising children, one is studying for college, one is a housekeeper, one is a social climber, etc, etc.
It's not that the breadwinner has a higher social rank. It's that everyone has their own approach to some set of core tasks.
If we can somehow break the core tasks into two completely distinct groups, it gives everyone two roles, which is even better.
Optional goals are a powerful tool to pull the player into the game world. These are things which take quite a while to accomplish in full, but have numerous small steps you can take along the way. By choosing to dedicate characters to these goals, the player can set up their own story arc and create numerous opportunities for the other characters to get involved peripherally.
The Sims is full of these. You're always working towards something. Whether it's ranking up your day job, improving your skills, or raising your kid, there's always a task you've chosen to do and it's working towards a long-term goal you've chosen to aim for.
Optional goals are incredibly important for distinguishing randomized characters, because they give the characters a Want. When a character wants something, they come alive. In a randomly-generated team, every character having a Want would get confusing and muddled, which is why I think it's best to allow the player to assign these wants by aiming for specific end goals. Even if the character doesn't understand that they are aiming for a specific end goal, they will continue to perform the step-by-step actions towards that goal at the player's command, and therefore act as if they do understand and are aiming for the end goal.
Relationships are also valuable, but, again, they should be used to help the player differentiate the characters. Rather than randomly forming relationships, it is generally better to allow the player to choose which characters get along in which ways, because the player is forming a personal memory of these characters and relating them on purpose.
Not all relationships are simple vanilla romances. Ideally, a flexible relationship engine will allow the player to create the range of complex human relationships. The game doesn't have to understand exactly what a "rival" is or exactly how a "love triangle" works, but it should allow the player to drive these defined relationships around while creating a pretty reliable framework to hang them on.
A fun option is to create optional complications in exchange for some kind of bonus. Rather than forcing person A to fall in love with person B, you can give the player the option of allowing it in exchange for a level boost to those characters. Let the player choose whether to let that interfere with their carefully-laid plans or not.
Attention Retention is a trick used to keep characters in the player's memory. Once you have more than about four characters, some of them will necessarily become background characters. To prevent them from fading out of the player's mind and become cogs in the game's machinery, you need to draw the player's attention back to them once in a while.
There are a lot of ways to do this, but my favorite is to add a "token" to each player every time period. When a player activates a character for some kind of social interaction, the tokens can be used to level up. Therefore, background characters will sometimes jump into the foreground and level up dramatically, which is a fun way to do it.
...
Now. Let's talk about the first and most important way to make generated characters interesting: personality proxies and lifestyles.
This needs special attention for a lot of reasons, but let's start with the basics.
When we build a character in a game with defined characters, we design the characters to reflect their personalities. Every aspect of their appearance, voice, mannerisms, fashion, animations, possessions, and even room decorations reflect their personality.
However, random characters do not usually have that setup. That's because if you try it, you'll end up with incredibly offensive and limited stereotypes. Instead, most devs use personality traits that aren't related to your physical appearance or fashion choices. It's less limited, but it's also much harder to distinguish your characters. Moreover, the "colorblind" approach is not a whole lot better, as it assumes the universal culture is your own.
The thing to consider is that most games with defined characters have those characters resonate with their life situation. That is, they are who they are because of their own culture. For example, Tali is a really bad stereotype, but she constantly interacts with and resonates with her situation. You are asked to understand why she is who she is, rather than just treating her as a given. Even the blue bisexuals that want to bang you have a lot of culture and society and general baggage that tries to make them more interesting than their stereotype.
Most of the time, rather than having each species stand in for a kind of human, we've started to have each species stand in for a kind of lifestyle or situation. It would have been easy to make the Krogan a literal stand-in for native Americans, and the Qunari as stand-ins for Russians. Instead, they went the other way and carefully made them not stand-ins. Mostly.
It's not a flawless approach, but it's generally pretty good. The idea is to create artificial situations, artificial cultures and societies. Each one represents some core concern in your universe's fiction.
An easy example is Dragon Age, which chose to make its elves a destitute amalgam of every oppressed minority they could think up. The elves don't represent a specific human culture, but they do resonate with the idea of oppression. Dragon Age has a lot to say about oppression and the nature of power, so having a tentpole species represent one corner of that idea was a pretty good idea. We can argue about how it fell short, but it is fundamentally a pretty good idea.
Rimworld doesn't have any deep fiction to it, but the game mechanics suggest specific human concerns. People within a few hundred miles of each other can have radically different technologies and resource levels, meaning that disparity is tremendous. You have the technology to build a fully self-sufficient base in just a few months, except for the waves of attackers that come to steal your things. So disparity is tremendous and violence is common. Life is cheap, technology is cheap, everything is cheap.
It would be relatively easy to come up with cultures that anchor these concepts. Your crew could easily come from those cultures, which would allow them to have a lot of baseline opinions and an easy-to-understand personality. Moreover, you could have each culture be visually distinct.
Not as in "these guys are brown, those guys are pink". Differentiation should be chosen more carefully. If everyone is human, differentiate mostly on things any human could choose to do: fashion, accent, behavior, tattoos, hair dye/cut, equipment, room clutter, etc. The idea is to give the player strong audiovisual clues as to the situation and personality of the characters without implying anything horrible on accident.
Rimworld would have a particularly difficult time of it, though, because the characters are so tiny and indistinct. I would probably add larger portraits to help with that, but another option is to allow the characters to alter their surroundings. For example, a character might have a dominant color scheme, and everything they own (including the things they wear) is automatically recolored to it. They might leave specific kinds of clutter in the places they hang out. They could even have flavored footsteps - different timbre to represent how they move. There are a lot of ways to make the characters more distinct, and you should try them all.
Of course, not all of them should be about distinguishing which fake culture the person is from. A lot of them should be related to that person's personality, instead.
Now, about lifestyles.
Lifestyles are an extension of this idea, but are active. They are habits, inhibitions, and judgments. These allow a character to interact with other characters and with the operation of the group in general.
Personality proxies as discussed above are largely passive, and are intended mostly to help players remember who is who. But lifestyles push. This is when the characters start to come alive a bit: by interacting with things and people in specific ways, you can get a resonance.
Someone's personality is largely defined by how it resonates with their situation. A lot of that will happen in the player's head or in the lore of the universe - "people from faction A have been oppressed for centuries by-" done, we know the basis for their behavior. But sometimes we want to see that resonance come into existence in the game world proper.
This is extra powerful in a base-building game, because you can arrange the base to cause different kinds of situations depending on the lifestyles of the people within it. If someone insists on always wearing the best finery, a dusty, overheated base will be a nightmare for them.
The critical thing about lifestyles to remember is that it is for the player's benefit, not the characters'. Every lifestyle exists to resonate with something else the player controls, whether it's another character or the base itself. Because of that, lifestyles should only resonate with what the character can control, and they should resonate on-camera.
For example, in Rimworld there is a trait that makes a character annoying, and anyone that talks with them gets annoyed. However, there is really no way for the player to control who socializes with who, so it takes a lot of effort to mitigate that lifestyle. If there were more tools for controlling socialization, it would be a more interesting trait.
Ideally, each lifestyle should interact with something the player can control. The more nuanced and constructive that control is, the better. A dusty, hot base can be mitigated with air conditioning, filters, and a dedicated janitor, so it's a pretty good trait... if you allow the player to do those things. But each of those things comes with another side effect, and that's the heart of this.
You ask the player to consider the characters, to work the characters into their core concerns. To choose how far to go for each character. It's a promising approach.
Anyway, those are my thoughts.
Rimworld is coming along nicely. You can build complex bases, set up your citizens in complex ways. There's a lot of fun to be had, especially when you start laying on the mods. But there is a big weakness. I can't blame it on Rimworld: it's a weakness in all base-building games.
The problem with these games is that nobody lives in your bases.
OK, I know there's, like, 30 people living in the base according to the game. They wander around, have their little tasks. In Rimworld they even goof off or chat. Still, none of them actually feel alive. They don't form relationships. They don't have hobbies. They don't do things with each other, have friends, have enemies. They don't have lifestyles or emotions, at least none that are differentiated in any significant way from anyone else. They have a lot of stats, but who cares?
As the number of people in your team goes up, their individual stats matter less and less. Instead, how they contribute to the operation of the team is what matters. It doesn't matter whether person A is marginally better or worse at farming, it matters whether they can play the farming role, and whether they should be a focused farmer or someone who helps farm when the workload gets rough but has other jobs the rest of the time.
What's the alternative?
There's a reason the Sims was popular: it allowed players to feel like their little avatars were living a life. The tools used to do this were simple: a familiar scenario (working and cohabitating) with clearly defined roles, lifestyles, relationships, optional goals (having kids, ranking up, collecting meteors, etc), attention retention (everyone needs to be clicked on sometimes), and personality proxies (appearance, clothing sets, certain personality traits).
Let's talk about each of the techniques individually, and then let's talk about how to shape your game to allow for them.
Personality proxies are the most problematic, because they bring in the most from outside the game world. We'll have to talk about them in detail later, but the short version is that you have to be able to tell who is who. If you have more than four team members, having slightly different names and icons isn't going to cut it: you need a dense representation of who is who, along as many axes as possible. Not just physical appearance, but voice, animations, fashion, mannerisms, personal possessions, and room decoration.
Lifestyles are technically a personality proxie, but it's worth mentioning them as a distinct group because these interact with the world, or at least the timing of things. Lifestyles are specific habits, inhibitions, and judgments not shared by the rest of the group - for example, one person might obsessively collect statues, one person might be the only person on base that smokes weed, one person might only work at night, one person might dress in finery get offended if someone else looks shlubby.
Lifestyles are powerful because they are behavioral elements. However, these should not be chosen willy-nilly. When we talk about how to do personality proxies, we'll be bringing these up again.
Evocative scenario: A familiar scenario is a way to allow the player to hook into the game world. Almost everyone has struggled to work a day job, had roomies, eaten pizza, invited people over, etc. This familiar setting can have any characters inserted into it, since living with Spock and Captain Kirk in a tiny apartment is hilarious.
But, again, this brings in a lot from outside: "familiar" scenario assumes it is familiar. Similarly, while it allows the player to import characters they already have an attachment to, it isn't very good at differentiating random characters. Everyone has to live, eat, participate in daily life. You can put Spock into an apartment, but someone as interesting and evocative as Spock cannot arise from an apartment. There's no room for his characterization.
Because of that, if we're focusing on random characters, we need the exact opposite. Rather than a familiar scenario, we need an evocative, unfamiliar scenario that will allow characters to establish and continually re-establish a strong personality.
Clearly defined roles are important to allow people to distinguish themselves at the most fundamental level. The wider the disparity of roles, the wider the variation between the characters. In The Sims, you have the breadwinner, the housemaker, the children, the skeezy roomie, and so on. You also have all the details you drag in from your expectations: the annoying roomie, the tidy roomie, the control-freak roomie. It's two axes of roles: one aligned with the core gameplay (time/money), one aligned with personal interactions with shared resources.
If we're generating characters randomly, we need to have roles that offer us powerful differentiation. We slot the character into a role and suddenly they come alive. The green thumb luddite is facility manager? We suddenly have an explosion of expectations about how the facility will function and how they will interact with other characters even if none of that actually happens in the game.
The difficulty is getting a breadth of roles. You can't simply use social status, because a simple numeric rank isn't evocative enough. Instead, think of each role as "which core task do they do, when?"
In The Sims, you don't really have "breadwinner A, B, and C", you have one person that wastes their life working in an office, another one that does arts from home, and maybe a third that works part-time at night but still keeps their days largely free. These roles each interact with the core scenario in a different way, at a different place and time. In addition, the people that don't work aren't simply "not working". Each has a role within the function of the house and life in general. One is a child, one is raising children, one is studying for college, one is a housekeeper, one is a social climber, etc, etc.
It's not that the breadwinner has a higher social rank. It's that everyone has their own approach to some set of core tasks.
If we can somehow break the core tasks into two completely distinct groups, it gives everyone two roles, which is even better.
Optional goals are a powerful tool to pull the player into the game world. These are things which take quite a while to accomplish in full, but have numerous small steps you can take along the way. By choosing to dedicate characters to these goals, the player can set up their own story arc and create numerous opportunities for the other characters to get involved peripherally.
The Sims is full of these. You're always working towards something. Whether it's ranking up your day job, improving your skills, or raising your kid, there's always a task you've chosen to do and it's working towards a long-term goal you've chosen to aim for.
Optional goals are incredibly important for distinguishing randomized characters, because they give the characters a Want. When a character wants something, they come alive. In a randomly-generated team, every character having a Want would get confusing and muddled, which is why I think it's best to allow the player to assign these wants by aiming for specific end goals. Even if the character doesn't understand that they are aiming for a specific end goal, they will continue to perform the step-by-step actions towards that goal at the player's command, and therefore act as if they do understand and are aiming for the end goal.
Relationships are also valuable, but, again, they should be used to help the player differentiate the characters. Rather than randomly forming relationships, it is generally better to allow the player to choose which characters get along in which ways, because the player is forming a personal memory of these characters and relating them on purpose.
Not all relationships are simple vanilla romances. Ideally, a flexible relationship engine will allow the player to create the range of complex human relationships. The game doesn't have to understand exactly what a "rival" is or exactly how a "love triangle" works, but it should allow the player to drive these defined relationships around while creating a pretty reliable framework to hang them on.
A fun option is to create optional complications in exchange for some kind of bonus. Rather than forcing person A to fall in love with person B, you can give the player the option of allowing it in exchange for a level boost to those characters. Let the player choose whether to let that interfere with their carefully-laid plans or not.
Attention Retention is a trick used to keep characters in the player's memory. Once you have more than about four characters, some of them will necessarily become background characters. To prevent them from fading out of the player's mind and become cogs in the game's machinery, you need to draw the player's attention back to them once in a while.
There are a lot of ways to do this, but my favorite is to add a "token" to each player every time period. When a player activates a character for some kind of social interaction, the tokens can be used to level up. Therefore, background characters will sometimes jump into the foreground and level up dramatically, which is a fun way to do it.
...
Now. Let's talk about the first and most important way to make generated characters interesting: personality proxies and lifestyles.
This needs special attention for a lot of reasons, but let's start with the basics.
When we build a character in a game with defined characters, we design the characters to reflect their personalities. Every aspect of their appearance, voice, mannerisms, fashion, animations, possessions, and even room decorations reflect their personality.
However, random characters do not usually have that setup. That's because if you try it, you'll end up with incredibly offensive and limited stereotypes. Instead, most devs use personality traits that aren't related to your physical appearance or fashion choices. It's less limited, but it's also much harder to distinguish your characters. Moreover, the "colorblind" approach is not a whole lot better, as it assumes the universal culture is your own.
The thing to consider is that most games with defined characters have those characters resonate with their life situation. That is, they are who they are because of their own culture. For example, Tali is a really bad stereotype, but she constantly interacts with and resonates with her situation. You are asked to understand why she is who she is, rather than just treating her as a given. Even the blue bisexuals that want to bang you have a lot of culture and society and general baggage that tries to make them more interesting than their stereotype.
Most of the time, rather than having each species stand in for a kind of human, we've started to have each species stand in for a kind of lifestyle or situation. It would have been easy to make the Krogan a literal stand-in for native Americans, and the Qunari as stand-ins for Russians. Instead, they went the other way and carefully made them not stand-ins. Mostly.
It's not a flawless approach, but it's generally pretty good. The idea is to create artificial situations, artificial cultures and societies. Each one represents some core concern in your universe's fiction.
An easy example is Dragon Age, which chose to make its elves a destitute amalgam of every oppressed minority they could think up. The elves don't represent a specific human culture, but they do resonate with the idea of oppression. Dragon Age has a lot to say about oppression and the nature of power, so having a tentpole species represent one corner of that idea was a pretty good idea. We can argue about how it fell short, but it is fundamentally a pretty good idea.
Rimworld doesn't have any deep fiction to it, but the game mechanics suggest specific human concerns. People within a few hundred miles of each other can have radically different technologies and resource levels, meaning that disparity is tremendous. You have the technology to build a fully self-sufficient base in just a few months, except for the waves of attackers that come to steal your things. So disparity is tremendous and violence is common. Life is cheap, technology is cheap, everything is cheap.
It would be relatively easy to come up with cultures that anchor these concepts. Your crew could easily come from those cultures, which would allow them to have a lot of baseline opinions and an easy-to-understand personality. Moreover, you could have each culture be visually distinct.
Not as in "these guys are brown, those guys are pink". Differentiation should be chosen more carefully. If everyone is human, differentiate mostly on things any human could choose to do: fashion, accent, behavior, tattoos, hair dye/cut, equipment, room clutter, etc. The idea is to give the player strong audiovisual clues as to the situation and personality of the characters without implying anything horrible on accident.
Rimworld would have a particularly difficult time of it, though, because the characters are so tiny and indistinct. I would probably add larger portraits to help with that, but another option is to allow the characters to alter their surroundings. For example, a character might have a dominant color scheme, and everything they own (including the things they wear) is automatically recolored to it. They might leave specific kinds of clutter in the places they hang out. They could even have flavored footsteps - different timbre to represent how they move. There are a lot of ways to make the characters more distinct, and you should try them all.
Of course, not all of them should be about distinguishing which fake culture the person is from. A lot of them should be related to that person's personality, instead.
Now, about lifestyles.
Lifestyles are an extension of this idea, but are active. They are habits, inhibitions, and judgments. These allow a character to interact with other characters and with the operation of the group in general.
Personality proxies as discussed above are largely passive, and are intended mostly to help players remember who is who. But lifestyles push. This is when the characters start to come alive a bit: by interacting with things and people in specific ways, you can get a resonance.
Someone's personality is largely defined by how it resonates with their situation. A lot of that will happen in the player's head or in the lore of the universe - "people from faction A have been oppressed for centuries by-" done, we know the basis for their behavior. But sometimes we want to see that resonance come into existence in the game world proper.
This is extra powerful in a base-building game, because you can arrange the base to cause different kinds of situations depending on the lifestyles of the people within it. If someone insists on always wearing the best finery, a dusty, overheated base will be a nightmare for them.
The critical thing about lifestyles to remember is that it is for the player's benefit, not the characters'. Every lifestyle exists to resonate with something else the player controls, whether it's another character or the base itself. Because of that, lifestyles should only resonate with what the character can control, and they should resonate on-camera.
For example, in Rimworld there is a trait that makes a character annoying, and anyone that talks with them gets annoyed. However, there is really no way for the player to control who socializes with who, so it takes a lot of effort to mitigate that lifestyle. If there were more tools for controlling socialization, it would be a more interesting trait.
Ideally, each lifestyle should interact with something the player can control. The more nuanced and constructive that control is, the better. A dusty, hot base can be mitigated with air conditioning, filters, and a dedicated janitor, so it's a pretty good trait... if you allow the player to do those things. But each of those things comes with another side effect, and that's the heart of this.
You ask the player to consider the characters, to work the characters into their core concerns. To choose how far to go for each character. It's a promising approach.
Anyway, those are my thoughts.
Wednesday, February 18, 2015
Investigative & Expansive Exploration
There's a game design concept I haven't seen used much. It's a way of designing exploration/open-world games. It requires algorithmic content, but that's pretty common these days, so I think we'll see this concept become more and more common as well.
Let's discuss a game like Spore or No Man's Sky. The game is theoretically about exploring space and discovering wondrous things.
The problem with these games is that there really aren't very many wondrous things to find. It's mostly just an endless array of the same things with slightly different aesthetics.
But it can be made much more interesting using the "Investigate & Expand" design.
In this mode, when the player stumbles across something they find interesting, they have the option to explore it in more detail - investigate it.
For example, if you find a space village, you can go to their cities or talk to their people. This is a different scale of exploration, allowing the player to choose to get closer to something they might find interesting. Or not, if they don't find it interesting.
Some games certainly do this. They generally stop there. But you need a follow-up. You need a reason why investigating matters.
That's the second half: Investigate, then Expand.
Once you've investigated something, it integrates into local space and you can help it expand. For example, the space village will contact you whenever you visit a star near their space and give you an optional mission - "can you find a plant we can eat?" "We have an abandoned base there, can you set up a beacon on it?" "One of our ships is damaged near there, can you find it and rescue the crew?"
Completing optional missions expands the space village - a larger home base, a new colony in that star system, etc. Which, in turn, means more missions over a wider swath of space.
This is a one-two punch: investigate something interesting, then help it expand if you want.
The expansion phase is extremely powerful, because it gives you a new context for any barren hunk of rock you stumble across. People and things you've chosen to help have a vested interest, so you have a vested interest. Whether it's something simple like tagging resources or something more complex such as finding a crashed ship, your exploration now has a context. You are here to help - or to choose not to help.
Exploration is also powerful because you can have multiple missions from multiple people as expansions continue. "We have a crashed ship in the area", one says. The other says "we're in the area, could you carry us some supplies?" Depending on your engine, you could even make the missions intertwine - you can only complete one, or both are from the same cause, of whatever.
It's easy to start imagining advanced algorithms, but this can be done with very simple algorithms. The algorithms for the missions can be simple, that is: the algorithms for the space villages are significantly less simple.
Every space village would need to be unique enough that players would have an opinion on them, specifically. Moreover, every space village would need a presence with particular needs and practices, so that as missions are accomplished they could organically expand. Moreorover, you would need to allow for investigating again, after a time, and discovering those new growths and changes.
I don't think these are overwhelming technical issues, but let's talk about a short cut: an open-world fantasy game. Skyrimlike.
The various party members you accrue can be "investigated" by talking to them. More advanced investigation might involve unique level-up patterns and algorithmic reactions to situations in the world, but let's leave that for now.
The expansion phase is also relatively straightforward. Instead of gaining XP by killing monsters, characters gain XP if you complete sidequests for them. The things each character cares about and the kinds of missions they request are preprogrammed, but these are not scripted missions. Rather, they are a simple framework: you enter a city, the urban thief gives you a mission to steal from a specific too-rich noble. You enter some woods, the elf gives you a mission to find as many glowing lichens as you can. Enter a different city? A different noble. Enter the first city again? A different noble. Different forests? Different plants.
The reward for each? XP.
These missions could be made more interesting because the characters are actually with you. As you get close to the noble, or wander near some lichen, the character that gave you the mission can pipe up with advice or commentary. Perhaps they gain a stat bonus while you are "on" their mission. It can all be quite generic: no advanced dialog engine is required.
You can then directly tie their level to how much they trust you, such that their next dialog option becomes available with each level.
This system requires no generative world content. Helping the thief doesn't rearrange the politics of the city. Helping the elf doesn't establish a new elf stronghold. It's very simple, very shallow, very easy.
It's the same thing. Investigate and expand.
I think it's a good design concept, especially if you have a lot of chaotic content. For example, if you allow players to create/share NPCs for your fantasy open-world game, you can rate each NPC by how high a level the players usually help them reach. The higher the hit rate, the more appealing/interesting the character is likely to be: probably a good choice to put in a new player's world. Less popular/new NPCs can be put in the worlds of more experienced players.
The same is true of alien civilizations. Same thing.
Well, those are my thoughts on the matter.
Let's discuss a game like Spore or No Man's Sky. The game is theoretically about exploring space and discovering wondrous things.
The problem with these games is that there really aren't very many wondrous things to find. It's mostly just an endless array of the same things with slightly different aesthetics.
But it can be made much more interesting using the "Investigate & Expand" design.
In this mode, when the player stumbles across something they find interesting, they have the option to explore it in more detail - investigate it.
For example, if you find a space village, you can go to their cities or talk to their people. This is a different scale of exploration, allowing the player to choose to get closer to something they might find interesting. Or not, if they don't find it interesting.
Some games certainly do this. They generally stop there. But you need a follow-up. You need a reason why investigating matters.
That's the second half: Investigate, then Expand.
Once you've investigated something, it integrates into local space and you can help it expand. For example, the space village will contact you whenever you visit a star near their space and give you an optional mission - "can you find a plant we can eat?" "We have an abandoned base there, can you set up a beacon on it?" "One of our ships is damaged near there, can you find it and rescue the crew?"
Completing optional missions expands the space village - a larger home base, a new colony in that star system, etc. Which, in turn, means more missions over a wider swath of space.
This is a one-two punch: investigate something interesting, then help it expand if you want.
The expansion phase is extremely powerful, because it gives you a new context for any barren hunk of rock you stumble across. People and things you've chosen to help have a vested interest, so you have a vested interest. Whether it's something simple like tagging resources or something more complex such as finding a crashed ship, your exploration now has a context. You are here to help - or to choose not to help.
Exploration is also powerful because you can have multiple missions from multiple people as expansions continue. "We have a crashed ship in the area", one says. The other says "we're in the area, could you carry us some supplies?" Depending on your engine, you could even make the missions intertwine - you can only complete one, or both are from the same cause, of whatever.
It's easy to start imagining advanced algorithms, but this can be done with very simple algorithms. The algorithms for the missions can be simple, that is: the algorithms for the space villages are significantly less simple.
Every space village would need to be unique enough that players would have an opinion on them, specifically. Moreover, every space village would need a presence with particular needs and practices, so that as missions are accomplished they could organically expand. Moreorover, you would need to allow for investigating again, after a time, and discovering those new growths and changes.
I don't think these are overwhelming technical issues, but let's talk about a short cut: an open-world fantasy game. Skyrimlike.
The various party members you accrue can be "investigated" by talking to them. More advanced investigation might involve unique level-up patterns and algorithmic reactions to situations in the world, but let's leave that for now.
The expansion phase is also relatively straightforward. Instead of gaining XP by killing monsters, characters gain XP if you complete sidequests for them. The things each character cares about and the kinds of missions they request are preprogrammed, but these are not scripted missions. Rather, they are a simple framework: you enter a city, the urban thief gives you a mission to steal from a specific too-rich noble. You enter some woods, the elf gives you a mission to find as many glowing lichens as you can. Enter a different city? A different noble. Enter the first city again? A different noble. Different forests? Different plants.
The reward for each? XP.
These missions could be made more interesting because the characters are actually with you. As you get close to the noble, or wander near some lichen, the character that gave you the mission can pipe up with advice or commentary. Perhaps they gain a stat bonus while you are "on" their mission. It can all be quite generic: no advanced dialog engine is required.
You can then directly tie their level to how much they trust you, such that their next dialog option becomes available with each level.
This system requires no generative world content. Helping the thief doesn't rearrange the politics of the city. Helping the elf doesn't establish a new elf stronghold. It's very simple, very shallow, very easy.
It's the same thing. Investigate and expand.
I think it's a good design concept, especially if you have a lot of chaotic content. For example, if you allow players to create/share NPCs for your fantasy open-world game, you can rate each NPC by how high a level the players usually help them reach. The higher the hit rate, the more appealing/interesting the character is likely to be: probably a good choice to put in a new player's world. Less popular/new NPCs can be put in the worlds of more experienced players.
The same is true of alien civilizations. Same thing.
Well, those are my thoughts on the matter.
Labels:
game design,
generative,
open world,
player-generated content
Wednesday, June 11, 2014
NPC Growth and Personality
Most open-world games give you the option to either ignore or hurt an NPC. Some, like Skyrim, give you more complex variations and gameplay within that spectrum. But very few games allow you to be constructive, to help random NPCs.
I came up with a way to do it. Originally, this was a way to make a science fiction setting work for an open-world game. The concept I'm about to describe started off as sci-fi Facebook. But it's easier to explain in a fantasy setting.
Fundamentally, it's a conversation engine overhaul. When you talk to an NPC, the things they say are stored forever in your memory. If you want, you can scroll back and see all the things they've said. You can also tag favorites, to keep from drowning in ancient conversations.
This means they have to say more than a few canned lines. And they do: each thing they say is a state reveal.
Behind the scenes, an engine is introduced to make NPCs more complete. When you create a house for an NPC, rather than specifying a wooden table covered in wooden plates, you would specify a spot for a "small table". The engine would fill in which small table goes there based on the NPC's affluence rating, location, personality, and/or culture. The stock game might just have a bad and a good small table, making the choice pretty easy. But subsequent mods could add in more tables, including some that only appeal to specific personalities or are regional specialties. The mod just registers the new tables into the item list and they are automatically in rotation.
This is also advantageous since it means any NPC can move into any home and it'll become theirs without any scripting required. If a weird foreign NPC moves in, they'll automatically buy or craft weird foreign furniture and clothing.
The NPCs obviously have some stats to drive this engine. They have affluence, relationships to other NPCs (who may be their caretakers/dependents), specific jobs, a personality, a mood, an optional home culture or second set of stats for a secret or seasonal lifestyle.
The player cannot simply see these stats. Instead, they are revealed through the conversation tidbits. Each conversation tidbit is about a specific in-world condition that reflects a specific NPC state.
For example, Anna might say "Have you seen my new horse? I love this horse!"
The in-world state here is "Anna bought a (valuable) horse". The NPC state behind it is "Anna has an affluence of 120".
The moment Anna says it, you can reply with various social niceties and try to become slightly better friends with Anna. But this chatter is just social lubricant. This is not why the system is powerful or useful.
The system is powerful and useful because "Anna bought a (valuable) horse" is concrete.
You can refer to that concrete statement and pull out the pieces of it by simple context. Pick it out of the list and bring it up in conversation with a party member. Point to it and say "do this". The party member knows you want them to buy a good horse.
But you could say "steal this", and the party member would know you want them to steal that specific horse. Say "steal one of these", and the part member knows you just want them to steal any decent horse they can find. Go up to Anna and say "I want this", and negotiate a price for her horse.
You can even manually redirect the context: "this lady..." or "this place..." and now you're talking about Anna and her stable, rather than the horse buying.
All of this works because the game not only keeps track of the state of things in-world, but also the state as it was when the statement is made. Anna has a horse, and she once said she bought that horse.
This knowledge might be valuable to you if you want to butter Alice up - giving her a nice saddle for her horse, or carrots to feed it, or a book on horse grooming. That value comes not from the statement itself, but from the stable world state of her having a horse. If her horse gets stolen, she might not be so happy to get a book on horse grooming, though.
The knowledge is also valuable as a kind of verb to talk to others with, allowing the player to rack up a huge number of in-world contexts to talk about without needing a natural-language parser or worrying about spelling. Moreover, mods will fluidly join ranks without any issue at all. Not only could Anna easily buy a dragonette instead of a horse, she also could easily talk about gablonging the zuzufrass. And now you can tell your followers to gablong things, or get you some damn zuzufrass already!
This system is highly extensible in every direction.
For example, the game can take regular snapshots of your adventures. Fight an orc? The snapshot camera saves pictures of each blow, and the context of each snapshot is saved along with it. Any time in the next hour or so, peruse your snapshots and save the ones you like. The rest stay on schedule for deletion. You can use this to put together war stories. You can also use it to talk to NPCs about these things - for example, if your wizard friendly-fired an ally, a picture was taken of it. Hold up the picture in your mind, and now you're talking about the friendly fire incident. Tell him not to do it, and his battle AI will become more reserved about that sort of thing.
You could take this MUCH further. For example, you could "imagine" things by playing through areas with god mode turned on. Use these memories to talk to your allies, plan out an attack, or explain some bizarre flight of fancy you had. Of course, you'll need to know a lot about an area before you can imagine your way through it...
You can build new locations and NPCs by simply using these snapshots. Examine a bowl. Now you can create that bowl in your creative mode area. Anna bought a horse? Substitute a local NPC for Anna. Now that person bought the horse (and is assigned the same 120 affluence). Substitute a dragon for the horse.
You can quickly create relationships, sidequests, and worries as long as you've talked to other NPCs with similar relationships, sidequests, and worries. Someone once said "wolves are constantly harassing our town"? Substitute in giant frog-lizards for the wolves, and you've got a piece of scenario for your custom town.
The only big problem I see is drowning in commentary. I think you'd need a categorized favorites section, for your most referred-to items. After all, you'll hear tens of thousands of lines of dialog, especially since you'll be more interested in conversing than ever before. You'll also need a way to simply refer to people, places, and items without context - IE, the ability to pick giant frog-lizards out of a list of enemies rather than having to find another conversation that mentioned them.
One of the things that may not be clear so far is that this is a constructive system.
It doesn't just let you refer to thing X more easily. It gives you a grip on the underlying social and economic engines that govern the NPCs lives.
Maybe you start to feel for a miner with a daughter, struggling hard every day to earn just enough to eat. There are a few ways to improve his state.
One way is to give him loot. This will temporarily raise his affluence level. But affluence will always trend towards the base affluence of their job, so you'd have to give him a lot, or come by and give him more fairly often.
Another way is to improve his skills. Training could be one of the basic actions you could take, and if you improved his skills (socially, economically, or miningerally) he would get promoted, increasing his affluence.
Another way is to improve the mine's base output, since a rising tide lifts all boats. You could do this by killing the annoying monsters inside. You could do this by repairing doors and rails and shafts. These are physical activities that do not require the use of the chatter front end.
But you could also use the chatter front end to improve the mine's output. You could do this by searching the mine for overlooked rich veins, saving the snapshot of you finding one, and then telling him about it. Alternately, maybe you learned a trick to more efficient mining from another miner. You can refer to that conversation and transfer that knowledge to the miners here.
You can also use the chatter front end to try and get him promoted by appealing to (or bribing) his boss. Or you could use the chatter front end to relay business opportunities from other people that provide mining supplies or require ore. Or you could convince random people to go and work at the mine, since newcomers will have less seniority and the miner can't help but get promoted.
Now, if I had said "I'm going to build a front end that will let you do all this stuff", you probably would have shook your head. It sounds like a lot. But since I started with how it works, hopefully you can see that those opportunities arise naturally. They literally require no extra work, as long as people can express their needs and opportunities.
Moreover, because the framework behind the NPCs is both simple and flexible, an NPC can also be pushed to radically change their position in the world. You could convince the miner to come with you, not via some kind of quest chain or scripted event, but because you are capable of saying "come with me" and the miner is capable of considering how viable that seems. It'd just be a matter of comparing affluence and danger in his current job vs affluence and danger in your offer, weighted by how much he respects you.
It'd also be pretty easy to let you become an economic juggernaut. If you flat-out bought the mining company, it'd require very little extra content to let you run it as you prefer.
The only sticky point is the scripted quests. Well, those are awkward in Skyrim, too. The hope is that most of the quests won't be scripted, but will arise naturally from the state of the NPCs in the game.
The miner is an example of that: just by encountering him or his child it is clear that he's in a not-so-great situation. The quest to fix things up naturally arises as the miner generates lines of dialog about his state, explaining who he works for, how much he loves his daughter, how concerned he is about their drafty shack, etc.
By setting up the town in a tense arrangement, things should line up to create a situation that feels similar to a set of town sidequests in any other game.
...
I hope everything I said was clear. What do you think?
I came up with a way to do it. Originally, this was a way to make a science fiction setting work for an open-world game. The concept I'm about to describe started off as sci-fi Facebook. But it's easier to explain in a fantasy setting.
Fundamentally, it's a conversation engine overhaul. When you talk to an NPC, the things they say are stored forever in your memory. If you want, you can scroll back and see all the things they've said. You can also tag favorites, to keep from drowning in ancient conversations.
This means they have to say more than a few canned lines. And they do: each thing they say is a state reveal.
Behind the scenes, an engine is introduced to make NPCs more complete. When you create a house for an NPC, rather than specifying a wooden table covered in wooden plates, you would specify a spot for a "small table". The engine would fill in which small table goes there based on the NPC's affluence rating, location, personality, and/or culture. The stock game might just have a bad and a good small table, making the choice pretty easy. But subsequent mods could add in more tables, including some that only appeal to specific personalities or are regional specialties. The mod just registers the new tables into the item list and they are automatically in rotation.
This is also advantageous since it means any NPC can move into any home and it'll become theirs without any scripting required. If a weird foreign NPC moves in, they'll automatically buy or craft weird foreign furniture and clothing.
The NPCs obviously have some stats to drive this engine. They have affluence, relationships to other NPCs (who may be their caretakers/dependents), specific jobs, a personality, a mood, an optional home culture or second set of stats for a secret or seasonal lifestyle.
The player cannot simply see these stats. Instead, they are revealed through the conversation tidbits. Each conversation tidbit is about a specific in-world condition that reflects a specific NPC state.
For example, Anna might say "Have you seen my new horse? I love this horse!"
The in-world state here is "Anna bought a (valuable) horse". The NPC state behind it is "Anna has an affluence of 120".
The moment Anna says it, you can reply with various social niceties and try to become slightly better friends with Anna. But this chatter is just social lubricant. This is not why the system is powerful or useful.
The system is powerful and useful because "Anna bought a (valuable) horse" is concrete.
You can refer to that concrete statement and pull out the pieces of it by simple context. Pick it out of the list and bring it up in conversation with a party member. Point to it and say "do this". The party member knows you want them to buy a good horse.
But you could say "steal this", and the party member would know you want them to steal that specific horse. Say "steal one of these", and the part member knows you just want them to steal any decent horse they can find. Go up to Anna and say "I want this", and negotiate a price for her horse.
You can even manually redirect the context: "this lady..." or "this place..." and now you're talking about Anna and her stable, rather than the horse buying.
All of this works because the game not only keeps track of the state of things in-world, but also the state as it was when the statement is made. Anna has a horse, and she once said she bought that horse.
This knowledge might be valuable to you if you want to butter Alice up - giving her a nice saddle for her horse, or carrots to feed it, or a book on horse grooming. That value comes not from the statement itself, but from the stable world state of her having a horse. If her horse gets stolen, she might not be so happy to get a book on horse grooming, though.
The knowledge is also valuable as a kind of verb to talk to others with, allowing the player to rack up a huge number of in-world contexts to talk about without needing a natural-language parser or worrying about spelling. Moreover, mods will fluidly join ranks without any issue at all. Not only could Anna easily buy a dragonette instead of a horse, she also could easily talk about gablonging the zuzufrass. And now you can tell your followers to gablong things, or get you some damn zuzufrass already!
This system is highly extensible in every direction.
For example, the game can take regular snapshots of your adventures. Fight an orc? The snapshot camera saves pictures of each blow, and the context of each snapshot is saved along with it. Any time in the next hour or so, peruse your snapshots and save the ones you like. The rest stay on schedule for deletion. You can use this to put together war stories. You can also use it to talk to NPCs about these things - for example, if your wizard friendly-fired an ally, a picture was taken of it. Hold up the picture in your mind, and now you're talking about the friendly fire incident. Tell him not to do it, and his battle AI will become more reserved about that sort of thing.
You could take this MUCH further. For example, you could "imagine" things by playing through areas with god mode turned on. Use these memories to talk to your allies, plan out an attack, or explain some bizarre flight of fancy you had. Of course, you'll need to know a lot about an area before you can imagine your way through it...
You can build new locations and NPCs by simply using these snapshots. Examine a bowl. Now you can create that bowl in your creative mode area. Anna bought a horse? Substitute a local NPC for Anna. Now that person bought the horse (and is assigned the same 120 affluence). Substitute a dragon for the horse.
You can quickly create relationships, sidequests, and worries as long as you've talked to other NPCs with similar relationships, sidequests, and worries. Someone once said "wolves are constantly harassing our town"? Substitute in giant frog-lizards for the wolves, and you've got a piece of scenario for your custom town.
The only big problem I see is drowning in commentary. I think you'd need a categorized favorites section, for your most referred-to items. After all, you'll hear tens of thousands of lines of dialog, especially since you'll be more interested in conversing than ever before. You'll also need a way to simply refer to people, places, and items without context - IE, the ability to pick giant frog-lizards out of a list of enemies rather than having to find another conversation that mentioned them.
One of the things that may not be clear so far is that this is a constructive system.
It doesn't just let you refer to thing X more easily. It gives you a grip on the underlying social and economic engines that govern the NPCs lives.
Maybe you start to feel for a miner with a daughter, struggling hard every day to earn just enough to eat. There are a few ways to improve his state.
One way is to give him loot. This will temporarily raise his affluence level. But affluence will always trend towards the base affluence of their job, so you'd have to give him a lot, or come by and give him more fairly often.
Another way is to improve his skills. Training could be one of the basic actions you could take, and if you improved his skills (socially, economically, or miningerally) he would get promoted, increasing his affluence.
Another way is to improve the mine's base output, since a rising tide lifts all boats. You could do this by killing the annoying monsters inside. You could do this by repairing doors and rails and shafts. These are physical activities that do not require the use of the chatter front end.
But you could also use the chatter front end to improve the mine's output. You could do this by searching the mine for overlooked rich veins, saving the snapshot of you finding one, and then telling him about it. Alternately, maybe you learned a trick to more efficient mining from another miner. You can refer to that conversation and transfer that knowledge to the miners here.
You can also use the chatter front end to try and get him promoted by appealing to (or bribing) his boss. Or you could use the chatter front end to relay business opportunities from other people that provide mining supplies or require ore. Or you could convince random people to go and work at the mine, since newcomers will have less seniority and the miner can't help but get promoted.
Now, if I had said "I'm going to build a front end that will let you do all this stuff", you probably would have shook your head. It sounds like a lot. But since I started with how it works, hopefully you can see that those opportunities arise naturally. They literally require no extra work, as long as people can express their needs and opportunities.
Moreover, because the framework behind the NPCs is both simple and flexible, an NPC can also be pushed to radically change their position in the world. You could convince the miner to come with you, not via some kind of quest chain or scripted event, but because you are capable of saying "come with me" and the miner is capable of considering how viable that seems. It'd just be a matter of comparing affluence and danger in his current job vs affluence and danger in your offer, weighted by how much he respects you.
It'd also be pretty easy to let you become an economic juggernaut. If you flat-out bought the mining company, it'd require very little extra content to let you run it as you prefer.
The only sticky point is the scripted quests. Well, those are awkward in Skyrim, too. The hope is that most of the quests won't be scripted, but will arise naturally from the state of the NPCs in the game.
The miner is an example of that: just by encountering him or his child it is clear that he's in a not-so-great situation. The quest to fix things up naturally arises as the miner generates lines of dialog about his state, explaining who he works for, how much he loves his daughter, how concerned he is about their drafty shack, etc.
By setting up the town in a tense arrangement, things should line up to create a situation that feels similar to a set of town sidequests in any other game.
...
I hope everything I said was clear. What do you think?
Labels:
game design,
generative,
npc,
player-generated content
Thursday, April 17, 2014
Interstellar Archaeology
My friend ran a KickStarter about space and time being insanely vast. Most scifi compresses both space and time, but he wanted to show it in the proper scale. Me too! It inspired me, and I spent a lot of time thinking about it. And I decided that my contribution to this theme would be interstellar archaeology.
No matter how many millions of years your society has, it's just a tiny blip. You will never meet another living alien species. Even if you live for a million years on a million suns, you won't meet them. Space is too big, time is too vast.
But you can meet them. As long as you don't mind them being dead.
So this is a game about archaeology, about discovering ancient, lapsed civilizations and digitally recreating them to live anew in a huge simulation. You aren't part of a civilization yourself: humans have "ascended" and you're just kicking around exploring the galaxy for a few million more years until you get bored of it. And you've decided to search the universe for dead civilizations and bring them back to life in your personal computer, manage your own universe that is chock full of alien species and civilizations. Maybe trade info with other ex-humans that are still kicking around.
The mechanics of finding and studying ruins is not what I want to talk about. Instead, I want to talk about how to seed them. An algorithm for creating dead civilizations.
Now, one way to do this is to simulate the civilization and come up with a big stack of places they went and things they did. However, this has the serious downside of being dull as paste. We would like the players to actually be interested in what happened, and that means humanizing it. Here's what I've come up with:
If you search a given place for archaeological clues, you have a chance of finding a random clue from a random time period. Say, you discover a 100,000 year old derelict space ship caught in orbit around a moon.
There are two keys to what this ship "means", archaeologically speaking.
The first key is that the ship uses "compatible" clues. So if you are aware of a colony on a nearby planet from 2 million years ago, perhaps the ship is related to that. If you are aware of a colony from 110,000 years ago 20 light years away, maybe the ship is related to that. But the timing involved is important: if the ship is related to the 2 million year old colony, it certainly couldn't have come from it. Instead, it must have been searching for it, well aware of its age and likely demise.
That brings us to the second key: the archaeological find is not categorized by where it is from or what it belongs to, but instead by mission. This gives players a strong hook to get interested. Usually, where they are from will arise pretty obviously from their mission. Moreover, as the mission emerges, archaeological seeds are laid for the player to discover elsewhere.
For example, there is a million-year-old colony nearby. Is the ship involved with it somehow? There is a 110,000-year-old colony 200 light years away. Is the ship involved with that somehow?
We don't simply determine where the ship is "from" or who built it. No, we care about the mission. Is the ship related to the million-year-old colony? If so, what was its mission? To reach the colony, almost certainly. Why would they have wanted to reach the colony?
Well, not to put too fine a point on it, but we don't know why. The player doesn't know either. All they know is that the ship had that colony in the last surviving star chart.
There's not a whole lot of research the player can do aboard the derelict, because it is truly ancient and basically just a jumble of floating rust particles. All the player can really do to follow the lead is to head for that colony. At least until some new information tells them what to look for in this ship.
Maybe this player doesn't even know there is a colony there, just this star chart. Either way, when she searches for events ~100,000 years ago, she finds an archaeological event that was seeded by the discovery of the ship. What is it, exactly? Well, like the original discovery of the ship, it's largely random. She discovers that (rolls dice) a seed vault was stolen.
A seed vault from an ancient civilization was stolen?
There's a lot of ways she can go from this. One is to read into the million-year-old colony more, since she's obviously going to discover it exists given that its seed vault was stolen. However, she can also keep concentrating on the seed vault.
It automatically works its way into the mission parameters of the ship that stole it. They were going to the ancient colony... for seeds... and they got them. What? Why?
We need to come up with a driving response, so the algorithm looks up all possible explanations in the dictionary and decides there was a genetic plague on the 110,000-year-old colony, and they needed 'pure' ancient DNA samples to fight it. This, in turn, plants several more archaeological seeds. One on the 110,000-year-old colony - evidence of genetic collapse. One on the ship: evidence of the seed vault.
These missions can keep expanding, but a key point is that this isn't a one-player game. This player isn't the only one working with this set of facts.
Another player lands on the 110,000-year-old colony and searches for clues related to it. Since he's in the right place and searching in the right era, he discovers evidence of the genetic plague. He doesn't know quite what it is, though: a massive ecological collapse off some kind. The chain itself knows that a ship was launched with a specific mission because of this catastrophe, so it spawns an event for the new player to discover: the construction of a fleet of ships to try and find pure DNA. This seed of a space exodus is planted with the discovery of the ecological collapse: it generates only when needed.
The new player can discover this event by continuing to search in the right place and time. Rather than discovering the location of the originally-discovered ship, this player instead finds star charts pointing to dozens of planets. Each of these planets is then allocated a "phantom" of the originally-discovered quest line. If the player goes to search one of those locations, it will randomly determine which elements to clone from the original quest line. It might have a million-year-old colony. It might have an event 100,000 years ago where someone stole seed banks (or attempted to, if there was no colony spawned). It might have a ship lying derelict nearby.
Even if the original player gets sidetracked and never finished fleshing out what happened to the originally discovered ship, their progress lives on in the phantom missions descended from that work. And, as people stumble into pieces of the missions, they will usually be able to track the missions back to the homeworld. Many people will become familiar with the way that colony was destroyed by the plague, and their desperate final missions to save themselves. As they explore that time and space, they will discover more and more details about who these people were, what they were like, and what happened afterwards and before. These facts will be easier and easier for subsequent players to discover and, in turn, creating digital recreations of these people and this colony becomes easier and easier.
So the basic progression is like this:
1) Discover something. It will relate to existing discoveries via a mission template, and will create new clues to partially fill in that template.
2) Discover clues spawned as part of a mission template. This will spawn more clues filling out the mission template or spawn pre- and post-mission events. The more interesting/sensical clues will be discovered first, creating a sort of filter to weed out the worst randomness.
3) Research pre- and post-mission events to create echoes of the partially-filled-out mission template. This will allow for events/civilizations to become big and spread between players.
4) Connect clues/events to clues/events from other chains that happened in the same place and time. This will allow civilizations to become dense and have coherent culture/items/event chains.
In the end, the civilization is not formed by a series of algorithms determining how they expanded and what tech they had. Instead, it is determined by a random events being connected and amplified. The hard part is creating the unique content elements such as alien race design, ship appearance, and so on. The second most hard part is writing up a set of adaptive mission templates.
Anyway, that's my idea.
No matter how many millions of years your society has, it's just a tiny blip. You will never meet another living alien species. Even if you live for a million years on a million suns, you won't meet them. Space is too big, time is too vast.
But you can meet them. As long as you don't mind them being dead.
So this is a game about archaeology, about discovering ancient, lapsed civilizations and digitally recreating them to live anew in a huge simulation. You aren't part of a civilization yourself: humans have "ascended" and you're just kicking around exploring the galaxy for a few million more years until you get bored of it. And you've decided to search the universe for dead civilizations and bring them back to life in your personal computer, manage your own universe that is chock full of alien species and civilizations. Maybe trade info with other ex-humans that are still kicking around.
The mechanics of finding and studying ruins is not what I want to talk about. Instead, I want to talk about how to seed them. An algorithm for creating dead civilizations.
Now, one way to do this is to simulate the civilization and come up with a big stack of places they went and things they did. However, this has the serious downside of being dull as paste. We would like the players to actually be interested in what happened, and that means humanizing it. Here's what I've come up with:
If you search a given place for archaeological clues, you have a chance of finding a random clue from a random time period. Say, you discover a 100,000 year old derelict space ship caught in orbit around a moon.
There are two keys to what this ship "means", archaeologically speaking.
The first key is that the ship uses "compatible" clues. So if you are aware of a colony on a nearby planet from 2 million years ago, perhaps the ship is related to that. If you are aware of a colony from 110,000 years ago 20 light years away, maybe the ship is related to that. But the timing involved is important: if the ship is related to the 2 million year old colony, it certainly couldn't have come from it. Instead, it must have been searching for it, well aware of its age and likely demise.
That brings us to the second key: the archaeological find is not categorized by where it is from or what it belongs to, but instead by mission. This gives players a strong hook to get interested. Usually, where they are from will arise pretty obviously from their mission. Moreover, as the mission emerges, archaeological seeds are laid for the player to discover elsewhere.
For example, there is a million-year-old colony nearby. Is the ship involved with it somehow? There is a 110,000-year-old colony 200 light years away. Is the ship involved with that somehow?
We don't simply determine where the ship is "from" or who built it. No, we care about the mission. Is the ship related to the million-year-old colony? If so, what was its mission? To reach the colony, almost certainly. Why would they have wanted to reach the colony?
Well, not to put too fine a point on it, but we don't know why. The player doesn't know either. All they know is that the ship had that colony in the last surviving star chart.
There's not a whole lot of research the player can do aboard the derelict, because it is truly ancient and basically just a jumble of floating rust particles. All the player can really do to follow the lead is to head for that colony. At least until some new information tells them what to look for in this ship.
Maybe this player doesn't even know there is a colony there, just this star chart. Either way, when she searches for events ~100,000 years ago, she finds an archaeological event that was seeded by the discovery of the ship. What is it, exactly? Well, like the original discovery of the ship, it's largely random. She discovers that (rolls dice) a seed vault was stolen.
A seed vault from an ancient civilization was stolen?
There's a lot of ways she can go from this. One is to read into the million-year-old colony more, since she's obviously going to discover it exists given that its seed vault was stolen. However, she can also keep concentrating on the seed vault.
It automatically works its way into the mission parameters of the ship that stole it. They were going to the ancient colony... for seeds... and they got them. What? Why?
We need to come up with a driving response, so the algorithm looks up all possible explanations in the dictionary and decides there was a genetic plague on the 110,000-year-old colony, and they needed 'pure' ancient DNA samples to fight it. This, in turn, plants several more archaeological seeds. One on the 110,000-year-old colony - evidence of genetic collapse. One on the ship: evidence of the seed vault.
These missions can keep expanding, but a key point is that this isn't a one-player game. This player isn't the only one working with this set of facts.
Another player lands on the 110,000-year-old colony and searches for clues related to it. Since he's in the right place and searching in the right era, he discovers evidence of the genetic plague. He doesn't know quite what it is, though: a massive ecological collapse off some kind. The chain itself knows that a ship was launched with a specific mission because of this catastrophe, so it spawns an event for the new player to discover: the construction of a fleet of ships to try and find pure DNA. This seed of a space exodus is planted with the discovery of the ecological collapse: it generates only when needed.
The new player can discover this event by continuing to search in the right place and time. Rather than discovering the location of the originally-discovered ship, this player instead finds star charts pointing to dozens of planets. Each of these planets is then allocated a "phantom" of the originally-discovered quest line. If the player goes to search one of those locations, it will randomly determine which elements to clone from the original quest line. It might have a million-year-old colony. It might have an event 100,000 years ago where someone stole seed banks (or attempted to, if there was no colony spawned). It might have a ship lying derelict nearby.
Even if the original player gets sidetracked and never finished fleshing out what happened to the originally discovered ship, their progress lives on in the phantom missions descended from that work. And, as people stumble into pieces of the missions, they will usually be able to track the missions back to the homeworld. Many people will become familiar with the way that colony was destroyed by the plague, and their desperate final missions to save themselves. As they explore that time and space, they will discover more and more details about who these people were, what they were like, and what happened afterwards and before. These facts will be easier and easier for subsequent players to discover and, in turn, creating digital recreations of these people and this colony becomes easier and easier.
So the basic progression is like this:
1) Discover something. It will relate to existing discoveries via a mission template, and will create new clues to partially fill in that template.
2) Discover clues spawned as part of a mission template. This will spawn more clues filling out the mission template or spawn pre- and post-mission events. The more interesting/sensical clues will be discovered first, creating a sort of filter to weed out the worst randomness.
3) Research pre- and post-mission events to create echoes of the partially-filled-out mission template. This will allow for events/civilizations to become big and spread between players.
4) Connect clues/events to clues/events from other chains that happened in the same place and time. This will allow civilizations to become dense and have coherent culture/items/event chains.
In the end, the civilization is not formed by a series of algorithms determining how they expanded and what tech they had. Instead, it is determined by a random events being connected and amplified. The hard part is creating the unique content elements such as alien race design, ship appearance, and so on. The second most hard part is writing up a set of adaptive mission templates.
Anyway, that's my idea.
Monday, March 31, 2014
Semiautomatic NPCs
In which I write a very long essay as if I know what I'm talking about.
We've gotten to the point where creating random NPCs is pretty easy. In turn, a lot of games have started to use random NPCs as primary NPCs or even player avatars, rather than just filler characters. However, when brought into the limelight these characters tend to fade a bit, so lets talk about some facets of creating and using NPCs.
The first things to consider is the role the NPC is intended to play. Originally, random NPCs were simply intended to give the world a bit more color and liveliness - not every enemy you shoot has the same face, for example. However, we've started seeing a lot of other roles.
Random NPCs in tactical RPGs are very common as party members, in which case the NPCs play the role of a bundle of stats and algorithmic growth. Unfortunately, scripted NPCs have a lot of extra oomph here, as they have personalities, character arcs, unique looks and abilities, and often unique relationships with other characters. In games like Final Fantasy Tactics, most players prefer to use scripted NPCs instead of random NPCs, and there is a certain amount of annoyance at the inarguably more complex and interesting character you get later on forcing you to kick a staple random NPC off your front line. Random NPCs can have personalities and relationships, but usually they are only in the player's head and pale in comparison to a scripted NPC with actual in-game storyline.
If you want random NPCs to fill that role well, then you need to include the hooks for the social half of these RPGs - the parts where we learn to care about the characters.
We're not talking about a powerful social AI or anything, just some basic hooks.
In practice, this is an absolutely awful idea if you want to care about the NPCs at all. A better option is to dramatically throttle access to NPCs. If the player ever has more than six or seven active NPCs, they are going to lose track. So regardless of what sort of game you're programming, if the NPCs need to matter then you'll need to make sure only a few of them matter.
The best way to do this is to have certain exceptional visual traits. You can have hundreds and hundreds of variable NPCs just floating around the cities or whatever, but it's the ones with exceptional traits that stand out and lure the player into including them onto the player team. While there can be a rich variety of them available, the player shouldn't actually be able to accept very many of them: every character counts.
It's not just a matter of losing track of who is who, but also a matter of the social dynamics that arise. In groups of 4-7, you can create compelling group interactions pretty easily. Lower than that and you need to make the interactions super nuanced, higher than that the individual interactions start to blur together into mush.
Of course, that many characters is rather low for any decent-length game, so you would probably use mechanisms to introduce churn. Plots that pull characters away, settling characters into specific towns for bonuses, characters getting thrown in jail, characters retiring... but don't flood the player with characters. You don't need nearly as many characters as most designers think - just a few!
But that kind of complexity is actually very pedestrian. It's useful - if you can do it you should - but to show it to the player is a huge mistake. For things like the exact percentage of red in their eye color, you obviously wouldn't go showing that to the player during gameplay... but, on the other hand, you do show them the exact strength rating, exact level, exact inventory...
This is stuff is obviously going to come up in the course of play, but it is just a distraction when initially scoping out a new NPC. That stuff has value only when the player has a grip on it - IE, only when the player is actively upgrading the character - IE only after the character has joined the player's team.
For things like stats, I think the best option is to randomize very chunkily. A new NPC doesn't have "strength 68", their stats are all represented in a multiple of 25 or 50, so the player can quickly understand their basic category and not worry so much about the precise number.
For things like techniques or spells, the same general idea applies. It was always annoying in Dragon's Dogma to try and find a healer pawn, because you have to read through all these techniques that the mage just happens to know looking for that one. Obviously those NPCs were not random, but if they had been it would have been smart to have a "healer" category. Any random NPC with that mage subtrait would have all the healing spells up to their level, even if a party member would normally have to buy them individually.
Their inventory also needs to be simpler to understand. I've been sticking to fantasy RPGs, and in those games the individual inventories tend to be pretty slim, focusing on the party-wide inventories. If you are in a fantasy RPG, a randomly generated NPC's inventory can be very basic default stuff, because the player is expected to quickly upgrade them using party resources. This removes the inventory as a thing that needs to be considered.
But there are a lot of situations where the inventory matters a lot more, depending on the game type. This is a bit theoretical because nearly all random NPCs are in action or RPG games at the moment, but imagine something like Animal Crossing. Except, instead of a stock town, you "adopt" random NPCs into your town. Not only is their appearance random, but also their clothes, home, inventory...
This could get quite complex to examine, so again I would simplify things. By assigning categories of interests and content, you can make it clear what sort of NPC you're talking about and insure they have a solid variety of that kind of thing. A character might be "gothy". Rather than coming with a particular "goth" costume and a particular "goth" house, they have a variety of goth costumes in their closet and a randomly created house containing goth decorations. You know what you're getting when you choose the goth even if you don't know the exact contents you'll get in the end.
Personalities are also a concern, although we'll talk about them later. Basically, the issue is that if your personalities have a lot of little fiddly stats that drive them, you'll want to summarize those stats in the same way as we've talked about above.
When you are manually writing a scripted NPC, you can add a lot of long-term characterization that can really help make the character feel real. However, random NPCs can't do that, at least not without pioneering some new kind of algorithm. Instead, you have to use shtick to give the character a maximum initial impact, to try and cement them into the head of the player enough that the player will fill in all the pseudorandom garbage that happens over the course of the game with personality.
Because of that, shticks have to leave a really strong impression. I don't recommend making atomic shticks, but instead combining two or three basic categories of subshtick into one, so you can get maximum variety. Each kind of subshtick needs to have both a visual and personality element that makes the character both look and feel unique.
For example, you might stumble across a character whose shtick seems to be "pirate". However, that's not quite true: pirate is a very obvious visual, but you instantly know a lot more about the character. For example, "Pirate queen/king", "brutal pirate", "noble pirate", "ghost pirate" - fragments of shtick that get glued together. Each one creates a specific visual and expected personality, as well as having certain statistical effects.
Depending on your needs, your shticks may be a bit more reserved. If you were making a game about high school, for example, "jock" would be a subshtick... but in a fantasy RPG, that'd be a pretty weak choice.
In addition to fitting into your setting, shticks need to be high-contrast. In order to make the characters jump out of the background noise, the shticks need to have a lot of punch. Basically, the people with shticks are exemplars of your setting, representing the highest order of some setting element. If the visual impact lies within or near the range that can be achieved by random variation, it's not a shtick, it's just a high stat. And that's a really dull thing to be your characterization.
So our pirate isn't just some grungy lady with an eye patch. She's got to go "full pirate". Some statistical forcing, yes: rings around the eyes, grubby, some bling. But most of the characteristics should be nearly unique, and certainly not found in the general population. Tricorner hat, peg leg, hook hand, parrot, eyepatch, red longcoat - pick 3.
If she's a "brutal" pirate, you get the brutal elements. That certainly involves some statistical forcing - and some of it may combine. We're going to get a lady with a lot of scars and dirt. However, brutal also comes with a custom set of animations and some body and face morphs that aren't normally available, so she'll look significantly more dangerous and hungry. After all, this "brutal" means "an epitome of this world's brutality."
If she's a "ghost" pirate, she'd obviously have some undead features - perhaps being partially see-through, or having a skull for a head. "Brutal" requires some thought as to how to make it stand out as unique, but "ghost" has obvious traits that you can just plug in.
This is a bit iffy, because by "personality" I actually mean "personality expressed in-game". Just labeling someone as shy or heroic or whatever is fine, but if it never comes up in gameplay it's totally irrelevant. If you have a "shy" personality element, then you'll need a way for them to be recognizably shy during gameplay.
If your game is just endless combat and buying new weapons, you're not going to be able to use that "shy" trait because there's nothing social to be shy about. So you can't reasonably have a "shy" trait in that kind of game, and would instead stick to traits that show during fighting and leveling and buying gear, such as "bloodthirsty" or "careful".
Normally, if I want random NPCs to feel real, I rely heavily on them feeling real to each other. Personalities can be defined in contrast to the world, or to an enemy, but in most cases personalities shine most when interacting with the people nearby.
So I usually try to implement some kind of camaraderie system where the characters chatter with each other. A pool of supplies and responses can be used to make it seem convincing, such as a shy person getting flustered in response to another person's chatter. This reveals both character's personality traits.
However, this chatter is not the same as a relationship.
If you want relationships, I recommend that you allow the player to create them, since the player knows how their personal lives are developing better than you do. Other than that, the chatter is largely stateless. It just exists to express the personalities of the characters and shake up the player's internal representations a little bit to keep it from getting stale.
First, I don't think it's that important. The characters should have a fairly rich internal life in the player's head, so enforcing some kind of arc on them would be awkward. If you do that, you should choose the most basic arcs and make it really obvious which characters are going to go through which arcs.
Instead, I like to think of this as an opportunity to introduce much-needed churn and emotional plot points.
So a character doesn't necessarily have an arc, but once the party has been settled into its configuration for a while, they should randomly pull the outside world into view.
For example, after wandering with us for a while, our pirate queen character would suddenly be approached by her old crew, or find a batch of pirates in the next town, or realize there are wanted posters of her all over town and the sheriff is hunting her.
There are three keys to these plot "arcs".
1) They should be very simple and have only a few resolution states. One of those states should be that the character is retired for a fair while. This probably means they all need to be preprogrammed, at least in terms of their rough structure and progression. Many shticks can share the same set of quests.
2) They should have between one and three new, unique NPCs involved. If there's a bounty on her, it's not just that there are endless hordes of faceless bounty hunters. You also have a sheriff that is an interesting character, an interesting bounty hunter, and an interesting side character who might also have a bounty on their head, or look so much like the pirate queen that they are being attacked in turn. Obviously, these slots have to be programmed into the event ahead of time, and there would be restrictions on the sorts of shtick they could have.
3) There should be real threat to someone outside your party. It's not just that bounty hunters are after your pirate queen: there are others at risk. Every unique NPC should be at risk in some way, even if the risk is just that they will lose their job. Categories of basic NPCs can also be threatened. For example, every woman that has red hair like hers. Or other bounty targets that haven't really done much wrong. Or perhaps the sheriff has bet his job on this bounty. In the end, some people will be hurt no matter which resolution you aim for.
Churn is really important in these games, or you'll settle on one party and stay with it forever. Plot arcs introduce churn, but they are hardly the only method of doing so.
Another method is "easy plots", where you have to leave characters behind to deal with a particular situation while you move on ahead. These can be suuuuper-vague, and in general should give you the choice of two party members to leave behind, and you can choose either one or both. The rate at which this needs to happen varies - it certainly doesn't need to happen in every new dungeon. These characters can come back later, perhaps a few levels higher, after the situation has been resolved.
Another method is to make dropping characters a major mechanic, like in Valkyrie Profile. By settling characters into specific locations you can prepare for the endgame or whatever. You can even make this temporary, so the characters can return later.
Anyway, those are my extreeeeeemely long thoughts on random NPC generation.
Well, that's not true. There's actually another essay this long that I want to write on the nature of interior, exterior, and pan-character growth and challenge, but I'll spare you that.
FOR NOW.
We've gotten to the point where creating random NPCs is pretty easy. In turn, a lot of games have started to use random NPCs as primary NPCs or even player avatars, rather than just filler characters. However, when brought into the limelight these characters tend to fade a bit, so lets talk about some facets of creating and using NPCs.
The first things to consider is the role the NPC is intended to play. Originally, random NPCs were simply intended to give the world a bit more color and liveliness - not every enemy you shoot has the same face, for example. However, we've started seeing a lot of other roles.
Random NPCs in tactical RPGs are very common as party members, in which case the NPCs play the role of a bundle of stats and algorithmic growth. Unfortunately, scripted NPCs have a lot of extra oomph here, as they have personalities, character arcs, unique looks and abilities, and often unique relationships with other characters. In games like Final Fantasy Tactics, most players prefer to use scripted NPCs instead of random NPCs, and there is a certain amount of annoyance at the inarguably more complex and interesting character you get later on forcing you to kick a staple random NPC off your front line. Random NPCs can have personalities and relationships, but usually they are only in the player's head and pale in comparison to a scripted NPC with actual in-game storyline.
If you want random NPCs to fill that role well, then you need to include the hooks for the social half of these RPGs - the parts where we learn to care about the characters.
We're not talking about a powerful social AI or anything, just some basic hooks.
Reduction
First, let's think about cutting away rather than adding. A big problem with random NPCs (and massively singleplayer content generation, if you're using that instead) is that you have so many options. So there's an impulse to just throw more and more of it into the game. An unlimited number of random NPCs.In practice, this is an absolutely awful idea if you want to care about the NPCs at all. A better option is to dramatically throttle access to NPCs. If the player ever has more than six or seven active NPCs, they are going to lose track. So regardless of what sort of game you're programming, if the NPCs need to matter then you'll need to make sure only a few of them matter.
The best way to do this is to have certain exceptional visual traits. You can have hundreds and hundreds of variable NPCs just floating around the cities or whatever, but it's the ones with exceptional traits that stand out and lure the player into including them onto the player team. While there can be a rich variety of them available, the player shouldn't actually be able to accept very many of them: every character counts.
It's not just a matter of losing track of who is who, but also a matter of the social dynamics that arise. In groups of 4-7, you can create compelling group interactions pretty easily. Lower than that and you need to make the interactions super nuanced, higher than that the individual interactions start to blur together into mush.
Of course, that many characters is rather low for any decent-length game, so you would probably use mechanisms to introduce churn. Plots that pull characters away, settling characters into specific towns for bonuses, characters getting thrown in jail, characters retiring... but don't flood the player with characters. You don't need nearly as many characters as most designers think - just a few!
Reducing Complexity
A lot of random NPC generators have very organic, diverse options. For example, in an Elder Scrolls game you can randomize every little detail of their body, stats, skills, powers, inventory... All of that stuff can be tweaked very precisely.But that kind of complexity is actually very pedestrian. It's useful - if you can do it you should - but to show it to the player is a huge mistake. For things like the exact percentage of red in their eye color, you obviously wouldn't go showing that to the player during gameplay... but, on the other hand, you do show them the exact strength rating, exact level, exact inventory...
This is stuff is obviously going to come up in the course of play, but it is just a distraction when initially scoping out a new NPC. That stuff has value only when the player has a grip on it - IE, only when the player is actively upgrading the character - IE only after the character has joined the player's team.
For things like stats, I think the best option is to randomize very chunkily. A new NPC doesn't have "strength 68", their stats are all represented in a multiple of 25 or 50, so the player can quickly understand their basic category and not worry so much about the precise number.
For things like techniques or spells, the same general idea applies. It was always annoying in Dragon's Dogma to try and find a healer pawn, because you have to read through all these techniques that the mage just happens to know looking for that one. Obviously those NPCs were not random, but if they had been it would have been smart to have a "healer" category. Any random NPC with that mage subtrait would have all the healing spells up to their level, even if a party member would normally have to buy them individually.
Their inventory also needs to be simpler to understand. I've been sticking to fantasy RPGs, and in those games the individual inventories tend to be pretty slim, focusing on the party-wide inventories. If you are in a fantasy RPG, a randomly generated NPC's inventory can be very basic default stuff, because the player is expected to quickly upgrade them using party resources. This removes the inventory as a thing that needs to be considered.
But there are a lot of situations where the inventory matters a lot more, depending on the game type. This is a bit theoretical because nearly all random NPCs are in action or RPG games at the moment, but imagine something like Animal Crossing. Except, instead of a stock town, you "adopt" random NPCs into your town. Not only is their appearance random, but also their clothes, home, inventory...
This could get quite complex to examine, so again I would simplify things. By assigning categories of interests and content, you can make it clear what sort of NPC you're talking about and insure they have a solid variety of that kind of thing. A character might be "gothy". Rather than coming with a particular "goth" costume and a particular "goth" house, they have a variety of goth costumes in their closet and a randomly created house containing goth decorations. You know what you're getting when you choose the goth even if you don't know the exact contents you'll get in the end.
Personalities are also a concern, although we'll talk about them later. Basically, the issue is that if your personalities have a lot of little fiddly stats that drive them, you'll want to summarize those stats in the same way as we've talked about above.
Shtick
More important than the statistical variation of the random NPCs is their shtick. In fact, if you have to choose between adding more variation or more shtick options, always go with shtick! Even if everyone has the same face or animation, the shtick will make them feel unique.When you are manually writing a scripted NPC, you can add a lot of long-term characterization that can really help make the character feel real. However, random NPCs can't do that, at least not without pioneering some new kind of algorithm. Instead, you have to use shtick to give the character a maximum initial impact, to try and cement them into the head of the player enough that the player will fill in all the pseudorandom garbage that happens over the course of the game with personality.
Because of that, shticks have to leave a really strong impression. I don't recommend making atomic shticks, but instead combining two or three basic categories of subshtick into one, so you can get maximum variety. Each kind of subshtick needs to have both a visual and personality element that makes the character both look and feel unique.
For example, you might stumble across a character whose shtick seems to be "pirate". However, that's not quite true: pirate is a very obvious visual, but you instantly know a lot more about the character. For example, "Pirate queen/king", "brutal pirate", "noble pirate", "ghost pirate" - fragments of shtick that get glued together. Each one creates a specific visual and expected personality, as well as having certain statistical effects.
Depending on your needs, your shticks may be a bit more reserved. If you were making a game about high school, for example, "jock" would be a subshtick... but in a fantasy RPG, that'd be a pretty weak choice.
In addition to fitting into your setting, shticks need to be high-contrast. In order to make the characters jump out of the background noise, the shticks need to have a lot of punch. Basically, the people with shticks are exemplars of your setting, representing the highest order of some setting element. If the visual impact lies within or near the range that can be achieved by random variation, it's not a shtick, it's just a high stat. And that's a really dull thing to be your characterization.
So our pirate isn't just some grungy lady with an eye patch. She's got to go "full pirate". Some statistical forcing, yes: rings around the eyes, grubby, some bling. But most of the characteristics should be nearly unique, and certainly not found in the general population. Tricorner hat, peg leg, hook hand, parrot, eyepatch, red longcoat - pick 3.
If she's a "brutal" pirate, you get the brutal elements. That certainly involves some statistical forcing - and some of it may combine. We're going to get a lady with a lot of scars and dirt. However, brutal also comes with a custom set of animations and some body and face morphs that aren't normally available, so she'll look significantly more dangerous and hungry. After all, this "brutal" means "an epitome of this world's brutality."
If she's a "ghost" pirate, she'd obviously have some undead features - perhaps being partially see-through, or having a skull for a head. "Brutal" requires some thought as to how to make it stand out as unique, but "ghost" has obvious traits that you can just plug in.
Personality and Relationships
While the shtick serves to create an impression of the character in the mind of the player, it's also important to keep reinforcing that image over the course of the game. This is why you do need some concept of a personality.This is a bit iffy, because by "personality" I actually mean "personality expressed in-game". Just labeling someone as shy or heroic or whatever is fine, but if it never comes up in gameplay it's totally irrelevant. If you have a "shy" personality element, then you'll need a way for them to be recognizably shy during gameplay.
If your game is just endless combat and buying new weapons, you're not going to be able to use that "shy" trait because there's nothing social to be shy about. So you can't reasonably have a "shy" trait in that kind of game, and would instead stick to traits that show during fighting and leveling and buying gear, such as "bloodthirsty" or "careful".
Normally, if I want random NPCs to feel real, I rely heavily on them feeling real to each other. Personalities can be defined in contrast to the world, or to an enemy, but in most cases personalities shine most when interacting with the people nearby.
So I usually try to implement some kind of camaraderie system where the characters chatter with each other. A pool of supplies and responses can be used to make it seem convincing, such as a shy person getting flustered in response to another person's chatter. This reveals both character's personality traits.
However, this chatter is not the same as a relationship.
If you want relationships, I recommend that you allow the player to create them, since the player knows how their personal lives are developing better than you do. Other than that, the chatter is largely stateless. It just exists to express the personalities of the characters and shake up the player's internal representations a little bit to keep it from getting stale.
Plot Arcs And Churn
Probably the biggest concern for a lot of people is the idea of a plot or character arc. Written NPCs grow and change over the course of a game! Random ones really don't.First, I don't think it's that important. The characters should have a fairly rich internal life in the player's head, so enforcing some kind of arc on them would be awkward. If you do that, you should choose the most basic arcs and make it really obvious which characters are going to go through which arcs.
Instead, I like to think of this as an opportunity to introduce much-needed churn and emotional plot points.
So a character doesn't necessarily have an arc, but once the party has been settled into its configuration for a while, they should randomly pull the outside world into view.
For example, after wandering with us for a while, our pirate queen character would suddenly be approached by her old crew, or find a batch of pirates in the next town, or realize there are wanted posters of her all over town and the sheriff is hunting her.
There are three keys to these plot "arcs".
1) They should be very simple and have only a few resolution states. One of those states should be that the character is retired for a fair while. This probably means they all need to be preprogrammed, at least in terms of their rough structure and progression. Many shticks can share the same set of quests.
2) They should have between one and three new, unique NPCs involved. If there's a bounty on her, it's not just that there are endless hordes of faceless bounty hunters. You also have a sheriff that is an interesting character, an interesting bounty hunter, and an interesting side character who might also have a bounty on their head, or look so much like the pirate queen that they are being attacked in turn. Obviously, these slots have to be programmed into the event ahead of time, and there would be restrictions on the sorts of shtick they could have.
3) There should be real threat to someone outside your party. It's not just that bounty hunters are after your pirate queen: there are others at risk. Every unique NPC should be at risk in some way, even if the risk is just that they will lose their job. Categories of basic NPCs can also be threatened. For example, every woman that has red hair like hers. Or other bounty targets that haven't really done much wrong. Or perhaps the sheriff has bet his job on this bounty. In the end, some people will be hurt no matter which resolution you aim for.
Churn is really important in these games, or you'll settle on one party and stay with it forever. Plot arcs introduce churn, but they are hardly the only method of doing so.
Another method is "easy plots", where you have to leave characters behind to deal with a particular situation while you move on ahead. These can be suuuuper-vague, and in general should give you the choice of two party members to leave behind, and you can choose either one or both. The rate at which this needs to happen varies - it certainly doesn't need to happen in every new dungeon. These characters can come back later, perhaps a few levels higher, after the situation has been resolved.
Another method is to make dropping characters a major mechanic, like in Valkyrie Profile. By settling characters into specific locations you can prepare for the endgame or whatever. You can even make this temporary, so the characters can return later.
Anyway, those are my extreeeeeemely long thoughts on random NPC generation.
Well, that's not true. There's actually another essay this long that I want to write on the nature of interior, exterior, and pan-character growth and challenge, but I'll spare you that.
FOR NOW.
Wednesday, December 18, 2013
Player-Generated (Worlds)
The core problem with letting the users control how a generative world generates is how to make those generated worlds have meaning.
In most generated-world games, the world generation is a complicated weaving of content and algorithm that results in a carefully balanced, paced, and gated mess. Trying to change how the world generates will screw up the house of cards. Not just in the sense of things becoming too easy, but also in the sense of things becoming unplayable. Not only would you probably screw up the progression such that you couldn't advance, but you'd probably screw up things like whether the world is even navigable or survivable.
The default algorithm and content for generating the world comes up with millions of variants, but they all interact with the basic gameplay in a way which gives everything meaning. When you see a vein of iron above ground level, you get excited at the prospect of an easy score. When you hear PSSsssst you jump in terror because you know what's coming. When you go into a cave, it's been carefully sculpted such that most of it can be traversed on foot without extensive modification... but sometimes you'll stumble into a ravine which stuns you. That, too, has been carefully sculpted to contrast with the caves, which contrast with the mineshafts, which contrast with the mountain caverns, which contrast with the hills, which contrast with the desert...
Even in games which focus on beauty or relaxation, the worlds are generated with that kind of situation in mind.
What I'm trying to say is that allowing a player to short-circuit that design and substitute in their own preferences won't make the game better: it'll make the game worse. The balance will collapse. Even though you could surprise yourself by creating a world that is very different, the gameplay wouldn't back it up, except by rare accident. Worse, the act of screwing up the gameplay balance in a few of your worlds probably damages how accepting you are of the original gameplay balance.
Now, if you want to look at player-generated content, start by looking at things smaller than worlds. There are plenty of games where the player can build a wide variety of things... just not worlds. For example, in Minecraft you can build vast castles. In Kerbal you can build space ships. Even in more modestly customizable games such as the Elder Scrolls series, you can still build a very unique character.
The key in all these situations is that the gameplay revolves around building content to fit the context.
You don't just build pretty ships in Kerbal. You build them to go on specific missions in a specific universe. You don't just build castles in Minecraft: you build them to show specific people or to perform a specific function. In something like the Elder Scrolls games, your custom character is a mix of aesthetic options and stats, which fit into two different contexts (cultural and gameplay).
If you go into Kerbal and never launch any missions, designing the ships means nothing. If you go into Minecraft and just walk around without building, the layout of the world means almost nothing. If you remove combat from an RPG, your careful character design will feel flat. These things can still be entertaining from time to time, but it's not enough to support the game. The context has been removed or blunted.
It's the same with world generation. Normally worlds are generated in the context of the game rules to the point where there is one generation algorithm and it is a beast. Allowing the player to change that destroys the context of the game rules, and in turn makes the generated worlds almost meaningless.
There are plenty of ways for people to generate worlds and maps as they like, but unless they are placed in a specific context and given a specific application, there's not a whole lot of interest in those worlds. They're just pretty pictures.
What we need to do is think "why would a player create a world" rather than "how". "How" is easy. There are tons of ways, and even the bad ones work great. But "why" is harder. Why would the player need their own custom world?
1) One option is to tweak the challenge offered by the game. Allowing the players to alter the parameters of a game's challenge can be very entertaining if you build the game with that in mind. For example, a different amount of gravity, or lots of lava on the surface. Obviously, a world creation algorithm that's too tightly fit to the original challenges won't be able to support this kind of variation, but if you aim to allow this from the beginning, it should be possible. It also works well with multiplayer challenges.
2) The player may want to create something beautiful, interesting, or amazing, perhaps to share it with others. This is the "handicraft" world, which is interesting within any one of the game's contexts - gameplay, aesthetics, whatever. This is not about balance, but about astonishment. Therefore, allowing the players a lot of options in terms of theme control, arbitrary "stretchign", recursiveness, and so on can lead to some really interesting results.
3) The world is the gameplay. Rather than walking through the world (character as gameplay), the world is the gameplay. For example, you're trying to raise pet monsters, so you create a world and they grow across its surface according to the environment and mutations and so on. This method can be a lot of fun, but it limits the variety you can achieve because the world has to support the gameplay.
Well, I keep saying "world", but in fact this applies to literally any content. In The Sims, the players build houses as gameplay, and the sims live within them. The sims themselves are a combination of 1 and 2 depending on how much you care about the actual gameplay. I always cheat in that game because the gameplay is annoying, so for me they are only #2.
The real question is how deeply you can layer it. For example, in The Sims you can create your own clothes, facilities, and even meshes if you feel dedicated. And even if you don't, you can download them as mods and add them into your game. In Kerbal, literally half the game is mods. Can you let your player-created content merge with other kinds of player-created content on different levels?
Maybe that's where the "world" part comes in. Maybe the whole point is that the "world" is yet another category we can create content for, in, and with. Maybe the whole point of "creating" a "world" is simply that you are choosing which massive quantities of content you want to mix together today. Unfortunately, you'll need the foundations - the massive quantities of content to mix - first.
Anyway, the thought you should have when considering player-generated worlds is not "how", but "why". Once you know "why", the method will be pretty obvious.
In most generated-world games, the world generation is a complicated weaving of content and algorithm that results in a carefully balanced, paced, and gated mess. Trying to change how the world generates will screw up the house of cards. Not just in the sense of things becoming too easy, but also in the sense of things becoming unplayable. Not only would you probably screw up the progression such that you couldn't advance, but you'd probably screw up things like whether the world is even navigable or survivable.
The default algorithm and content for generating the world comes up with millions of variants, but they all interact with the basic gameplay in a way which gives everything meaning. When you see a vein of iron above ground level, you get excited at the prospect of an easy score. When you hear PSSsssst you jump in terror because you know what's coming. When you go into a cave, it's been carefully sculpted such that most of it can be traversed on foot without extensive modification... but sometimes you'll stumble into a ravine which stuns you. That, too, has been carefully sculpted to contrast with the caves, which contrast with the mineshafts, which contrast with the mountain caverns, which contrast with the hills, which contrast with the desert...
Even in games which focus on beauty or relaxation, the worlds are generated with that kind of situation in mind.
What I'm trying to say is that allowing a player to short-circuit that design and substitute in their own preferences won't make the game better: it'll make the game worse. The balance will collapse. Even though you could surprise yourself by creating a world that is very different, the gameplay wouldn't back it up, except by rare accident. Worse, the act of screwing up the gameplay balance in a few of your worlds probably damages how accepting you are of the original gameplay balance.
Now, if you want to look at player-generated content, start by looking at things smaller than worlds. There are plenty of games where the player can build a wide variety of things... just not worlds. For example, in Minecraft you can build vast castles. In Kerbal you can build space ships. Even in more modestly customizable games such as the Elder Scrolls series, you can still build a very unique character.
The key in all these situations is that the gameplay revolves around building content to fit the context.
You don't just build pretty ships in Kerbal. You build them to go on specific missions in a specific universe. You don't just build castles in Minecraft: you build them to show specific people or to perform a specific function. In something like the Elder Scrolls games, your custom character is a mix of aesthetic options and stats, which fit into two different contexts (cultural and gameplay).
If you go into Kerbal and never launch any missions, designing the ships means nothing. If you go into Minecraft and just walk around without building, the layout of the world means almost nothing. If you remove combat from an RPG, your careful character design will feel flat. These things can still be entertaining from time to time, but it's not enough to support the game. The context has been removed or blunted.
It's the same with world generation. Normally worlds are generated in the context of the game rules to the point where there is one generation algorithm and it is a beast. Allowing the player to change that destroys the context of the game rules, and in turn makes the generated worlds almost meaningless.
There are plenty of ways for people to generate worlds and maps as they like, but unless they are placed in a specific context and given a specific application, there's not a whole lot of interest in those worlds. They're just pretty pictures.
What we need to do is think "why would a player create a world" rather than "how". "How" is easy. There are tons of ways, and even the bad ones work great. But "why" is harder. Why would the player need their own custom world?
1) One option is to tweak the challenge offered by the game. Allowing the players to alter the parameters of a game's challenge can be very entertaining if you build the game with that in mind. For example, a different amount of gravity, or lots of lava on the surface. Obviously, a world creation algorithm that's too tightly fit to the original challenges won't be able to support this kind of variation, but if you aim to allow this from the beginning, it should be possible. It also works well with multiplayer challenges.
2) The player may want to create something beautiful, interesting, or amazing, perhaps to share it with others. This is the "handicraft" world, which is interesting within any one of the game's contexts - gameplay, aesthetics, whatever. This is not about balance, but about astonishment. Therefore, allowing the players a lot of options in terms of theme control, arbitrary "stretchign", recursiveness, and so on can lead to some really interesting results.
3) The world is the gameplay. Rather than walking through the world (character as gameplay), the world is the gameplay. For example, you're trying to raise pet monsters, so you create a world and they grow across its surface according to the environment and mutations and so on. This method can be a lot of fun, but it limits the variety you can achieve because the world has to support the gameplay.
Well, I keep saying "world", but in fact this applies to literally any content. In The Sims, the players build houses as gameplay, and the sims live within them. The sims themselves are a combination of 1 and 2 depending on how much you care about the actual gameplay. I always cheat in that game because the gameplay is annoying, so for me they are only #2.
The real question is how deeply you can layer it. For example, in The Sims you can create your own clothes, facilities, and even meshes if you feel dedicated. And even if you don't, you can download them as mods and add them into your game. In Kerbal, literally half the game is mods. Can you let your player-created content merge with other kinds of player-created content on different levels?
Maybe that's where the "world" part comes in. Maybe the whole point is that the "world" is yet another category we can create content for, in, and with. Maybe the whole point of "creating" a "world" is simply that you are choosing which massive quantities of content you want to mix together today. Unfortunately, you'll need the foundations - the massive quantities of content to mix - first.
Anyway, the thought you should have when considering player-generated worlds is not "how", but "why". Once you know "why", the method will be pretty obvious.
Subscribe to:
Posts (Atom)