You can create different metrics and numbers to guide the generator, but every number loses meaning once you decouple it from human feedback in games.
[0]: https://galaxykate0.tumblr.com/post/139774965871/so-you-want...
As an example in No Man's Sky the player immediately starts with a jetpack. It makes it so the terrain is approached the same way every time: you just jetpack over it. Very rarely something is tall enough to require you to walk around.
Legend of Zelda: Breath of the Wild is a positive counter example. You have stamina so you're constantly thinking about the height of cliff faces, you can glide so you're thinking about height points and straight lines through the world, cliff faces cannot be climbed in rain so you think about the weather, slopes can be slid down on a shield, etc. There are a bunch of systems that may you think about the topology of the terrain, so even just varying the height map becomes interesting.
Similarly in No Man's Sky there are different resources but they work the same way on each planet and the player interacts with them pretty much the same way everywhere.
When I say elements should be "understandable" what I mean is that a trap, which Dwarf Fortress falls into, is to add a vast simulation which the player feels they can never really grasp. Simulations should not be a black box because then they begin to feel like a random number generator.
The aim shouldn't be to make an "infinite" game but to make a very interesting system for the player to slowly understand and master. The developer shouldn't just add stuff, but they should think about the long journey (and eventual mastery) a player might take as they spend significant time with the systems.
Weird question: do you have any tips on how one might apply these principles to a semi-stochastic synth plugin for musicians?
(I have several ideas, but I'd be curious to hear yours, independently.)
If you don’t already have a fun game, then pro gen won’t make it any more fun than it already is. It turns a fun 1-hour game into a much longer fun game.
If every single Minecraft player loaded into only a single Minecraft world, it would still be as fun as it is. Would No Man’s Sky really be that much different if it just shipped with a handful of pre-defined planets? It might have less replay value but the gameplay wouldn’t be any different.
Good proc gen changes things in your game such that the player is given interesting reasons to make different choices each time they play.
First procgen game I ever played was Starflight 2. (Pre-Internet era, so I couldn't get hold of Starflight 1. SF 2 spoils you, hard, on the major spoiler in SF 1, so if you're playing them from GOG or other sources then you should definitely play 1 before 2).
My ten-year-old mind was boggled. Hundreds of star systems, each one with several planets (usually), and you could land on each one? And explore the whole planet (in a very limited top-down 2D view, because this was the 1980's), harvesting minerals, and the map was quite a bit larger than what would fit on one screen? And it all fit onto one 720K floppy disk?!??!?
Now, of course, I know how they did it. But there was an actual game there. There were half-a-dozen alien races you could interact with (talk or shoot, as required), and there was an actual story. With a twist at the end that 40-year-old me would see coming, but 10-year-old me was shocked and amazed by. (And the twist in SF 2 wasn't even as good as the one in SF 1). And you progressed that story by following the gameplay loop:
- Fly around looking for planets with valuable minerals
- Land, scoop up what you can carry, fly home to sell them
- Gradually increase your ship's capabilities
Then eventually you would be able to make your way to planets with plot on them, at which the loop changes to: - Collect plot-important artifacts, fly home to get them researched
- Research tells you "go talk to these aliens".
- Do a fetch quest so they like you, then talk to them.
- They tell you where to go to kick off the next plot point.
After only a few runs through that loop, it's on to: - Find out where the Big Bad's home base is
- Find out where the MacGuffin is that lets you access that location
- Take MacGuffin to right place, fight Big Bad, save the day.
Crucially, once you had gone to talk to those plot-important aliens, you probably had enough resources that you didn't need to do much mining anymore. You might land when you spotted a target of opportunity — "Oh look, scanners say big pile of platinum just sitting there on a nearby planet, let's make a small detour" — but that was just to keep the bank account topped off. You could afford enough fuel to fly all the way across the map and back, so you could focus on the story.And they timed it well: the core harvest-resources-and-upgrade-the-ship loop didn't have time to get boring before you were off to collect plot coupons. And there weren't too many plot coupons before it was time to find the MacGuffin, use it to beat the Big Bad, and save the day.
Star Control 2 did it really, really well, with better graphics since it was released a few years later. BTW, if you haven't played SC 2, search for "The Ur-Quan Masters" to download and play a totally free, legitimate, open-source version of the game, with full original assets since the copyright reverted back to the original creators who released it into the public domain for the UQM project to port to modern machines. I wish that had happened to all the old classics, but Star Control 2 is truly a good game. Definitely seek out The Ur-Quan Masters.
But before you do that, I would strongly recommend to play Starflight 1 and Starflight 2, to get a feel for the origins of the procgen-with-good-story genre that Star Control 2 did so very well.
P.S. Edited the "core gameplay loop" paragraph to better make it clear there were two or three loops, and you progressed forward through them, rarely having to go backwards.
1) is the really hard part, I think: it's a challenge to come up with enough meaningful variations that also work from a gameplay point of view.
I think the opposite. The more dimensions you have, the more "invalid space" there should be. Otherwise you end up with giant dinosaurs with tiny feet and fairy wings. You end up with a yellow kitchen with a barrel full of arrows next to a blue dungeon with a giant dresser. You end up with nothing making sense, and everything feeling random in the same way. Trying to spot the differences between 100100111101011110110001001011101 and 1101101110111010000100111001011101 is exactly the "bowl of oatmeal" problem. The vast majority of possible combinations of values should be invalid and impossible, otherwise the choices actually don't matter.
This I think is a core challenge with procedural generation. You can have procgen countries with procgen cities with procgen citizens, but if none of those citizens have an aunt in another city - who you can actually visit, in a new world from the same seed, and learn that she has a nephew in the first city - then it feels empty, fake.
Hierarchial procgen is easy. But you need cross-interactions like that to make it feel alive, and that's hard.
These are games painting with a 16 color palette while the technology exists for any shade in RGB. The more variations, the less likely things will be coherent (let alone brilliant)
Spelunky uses handcrafted chunks that are connected together like a puzzle. Each generation feels interesting because each chunk is interesting and they are just strung together into a unique maze.
Terraria does a similar thing, where all the things that matter are hand-crafted. Bosses, items, layer details, progression. The map and cave system is generated but the caves tend to string together hand-crafted experiences and hand-crafted monsters. Many areas are generated, but in a unique style for variety. And there was still a fixed progression in the background (ore and boss progression). I think its in a big contrast to a similar game like Starbound, where all the weapons and creatures and maps were procgen at first, and it felt very '10000 bowls of oatmeal'. Terraria vs Starbound is the most like-for-like comparison I've seen for "procgen done right vs wrong"
The actual geography doesn't vary that wildly most of the time ( if you've seen one lightly forested river valley, you've seen them all), but players generate a relatively low number of worlds, and in each world probably only see a handful of sites, where dwarf-scale world gen actually matters. Unlike NMS, though, the details of world gen matter to gameplay a lot. Trade caravans and invading armies can't traverse mountain ranges and ocean, so a mountainous peninsula can be extremely isolated. At the site level, you'll probably want to design your fortress to take advantage of local geography to help fortify your fortress and provide resources, so terrain and features like rivers, volcanoes, etc. placement matters a lot.
In contrast, No Man's Sky world gen feels pretty tangent to the actual gameplay. The game does a good enough job incentivizing you to explore lots of planets, but in terms of the survival/base-building aspects, there's a pretty short list of resources that matter to deciding where to setup, and geography hardly matters in terms of how you build.
1. Any imaginary world needs to be internally consistent to be interesting. Procgen does not void this rule; randomization needs to be gated to that internal consistency.
2. A world can be composed of multiple environments, and each environment can a different definition of internal consistency. Dungeon Crawl Stone Soup does this very openly and to fairly good effect, but pretty much any decent procgen game will inevitably end up with the same choice, because it's what enables you to play with various procgen systems/rules while still having a coherent overall game.
3. Generalizing 2, procgen systems generally do not start from nothing; You embed reasonably well-defined bases (races, weapon forms, etc) and then apply randomization on top of those bases to form the final element. Meaningful fundamental variation in those bases leads to guaranteed meaningful variation in the end result.
4. Games are fundamentally interactive systems. Generating a thousand variations without actually changing interaction is equivalent to generating exactly one variation. A blue orc vs a red orc is a not real variant, unless you make it so by attaching effects / statuses / capabilities. The color distinction is then a signal into the more abstracted changes that have occurred. This is where NMS falls over -- the images have changed, but the interaction has not.
5. A corollary to point 4, changing numbers without changing interaction is equivalent to doing nothing. If a meaningful damage threshold is functionally every 10 points of damage, then generating numbers 0-9, 11-19, etc is equivalent to generating just the numbers 0 and 10. This is where borderlands falls over -- a million variations in guns, but the vast majority of those variations are just numeric differences that don't change anything in practice.
6. If the procgen applies to equipment/builds, you pretty much need permadeath as a driver for exploring a procgen game and its systems, because you need players to explore for a local optima. Exploring the space for a global optima in a procgen game inevitably devolves into a gambling simulator, because players optimize out the fun, and the optimal play is to the kill unit XYZ repeatedly for the 0.5% drop. Games like Terraria fall into this trap (though Terraria resolves it mostly by making unit XYZ be trivially summon-able bosses)
7. Procgen can never guarantee interesting results; You inevitably need a system of vaults/artifacts -- hardcoded quality items -- to guarantee periodic interesting locations/items. Ideally more notable than average generation, but less than strictly optimal so as to not overpower the other systems -- an issue I've had with games like Diablo 3, where finding an item-set was vastly more powerful than anything else that I acquired for the next 5+ hours, eliminating the entire looting system (and even character skill system, since it forced my build too)
8. Decent Procgen is inevitably rule-based, with possibly multiple chained-rules each doing their own rolls, to ensure coherency. Ideally the rule-chain is roughly discoverable from the end results (by virtue of following internally consistent and apparent rules) -- an end-result that cannot be explained is indistinguishable from pure-random, and pure-random in incoherent. See any Tabletop RPG generation tables.
9. Hell, just start any procgen design from tabletop RPG tables.
10. The number of variations that can be produced is meaningless. This is only for marketing.
11. A procedural system that generates exactly once is fairly pointless. Permadeath.
12. A procedural system is inherently unfair, because you cannot guarantee difficulty, proper placement, unit composition, etc without removing the procedural systems outright. Embrace the unfairness, and design around it. Permadeath.
13. A procedural system is inherently unfair; you need to give some guaranteed items with guaranteed results to navigate an uncertain world (e.g. escape tools).
14. It's always good to enable some control by the player over the procedural generation. Choice of environments, chances at additional loot, etc. You want the player to engage with procgen rules, because they're interesting (and if they're not, what are you doing?), and the easiest way is to give them tools to manipulate it to their advantage. Also permadeath.
After generating the level structure, emplace an entrance and exit such that they are maximally apart. And emplace a strong monster in one of the rooms around the exit. And emplace a health potion in one room before the strong monster. And emplace treasure in the exit room.
That sort of stuff and be specialized and coded towards your particular games structures fairly easily.
Scale is much harder though. In something like NMS it’d be intensive doing such a constraint solver on the whole galaxy. Might work in chunks or regions though.
Obviously people have high consistent wins in StS1/2 so it’s not like they’re guaranteed unwinnable, but for the average human (mostly just boils down to “path to do act1 elites until after you probably have a counter to all of them)
Your options are:
1. All scenarios are easy enough that you can get away with just about anything sensible
2. You don’t have any counter mechanics, which is basically the same as 1, and is difficult to do anything interesting with
3. You announce up-front what you’re going to deal with, so the onus is now on the player to find a solution in the meantime
4. You give the player a NOPE utility
In a roguelike, I think 4 is the better design, but 3 is also reasonable. 1 & 2 just makes things less interesting.