Comment by meowface
20 hours ago
One thing this article lacks is any tips on how to still do procedural generation while partly mitigating the oatmeal issue. In other words, define a more sophisticated generation procedure that can add character and identity.
It probably won't be as good as an artful human designer hand-crafting a world, but it can be better than something overly random and blandly uniform in distribution.
I've thought about it a bunch over the years and my advice is to follow a few principles: procedural elements should almost always impact how the player plays, procedural elements should cross-interact with each other as much as possible, and procedural elements should be understandable to the player.
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.
Very good points.
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.)
The Tumblr post[0] by Kate Compton makes a good example of how to build a generator with meaningful outcomes. You start by writing down good examples you want your generator to have and bad examples you want to avoid. That will both be a kind of filtering test and a structure to build from.
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...
Procedural generation is not gameplay. Procedural generation makes your already fun game more interesting via more variety.
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.
> It turns a fun 1-hour game into a much longer fun game.
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:
Then eventually you would be able to make your way to planets with plot on them, at which the loop changes to:
After only a few runs through that loop, it's on to:
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.
The advice I've heard is 1) have as many different dimensions of variation as you can manage, and try to have them matter, 2) resist the urge to impart correlations into the generation, since this just reduces variety, and 3) allow your parameters to become extreme occasionally, so that some parts of your generation are notably different, and special because they're rare.
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.
> 2) resist the urge to impart correlations into the generation
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.
Yes, and it's a problem procedural space games have in particular. Because the planets usually don't interact at all in any meaningful way - what's on one planet (or indeed in one zone on a planet) has no impact outside it. Maybe you can get random quests on planet A to find some landmark on planet B, but it doesn't feel like that was because anything on planet A had anything to do with what was on planet B. For all its improvements over the years (and they are many, and OK in their own way) this is a thing which has not changed in No Man's Sky.
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.
Agreed. Elsewhere in this conversation people mention simple games that procgen well: Spelunky, Terraria, Dwarf Fortress, Dungeon Crawl Stone Soup
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)
I mean, almost no games have that many meaningful dimensions in the first place. It's more likely that the correlations you add just reduce the potential for interesting combinations to arise in the first place.
Spelunky and Terraria do a good job with Procgen.
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"
You want to look at dwarf fortress talks for that, I think?
IMO, Dwarf Fortress benefits greatly from the player seeing relatively few samples of the world gen, and the geography actually mattering to gameplay.
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.
If your proceduralism doesn't generate easy to hard solvable problems (ie from geometry constraints etc), its not really adding to the gameplay, only the visual experience.
I'm thinking of the generated history and legends too - NMS only seems to gesture at this with wrecks of ships but I don't think it actually gives each planet a history.
Roguelikes are the ultimate in procgen technology, and should be the basis of any design. (DF is the ultimate simulation but uses procgen as a tool to achieve it; a different vein than NMS trying to explore the procgen and its direct outcomes itself)
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.
You can work around 12. with constraint satisfaction solvers.
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.
The problem is setups like in slay the spire, if we imagine there was no path selection, you can run into scenarios that are functionally unwinnable (I recall someone finding a seed in StS that was literally unwinnable, but ignoring that). Eg Act1 elites that counter your build, but too early for you to consistently have secondary options/workarounds.
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.