Remix.run Logo
meowface 7 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.

kettlecorn 6 hours ago | parent | next [-]

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.

nkrisc 2 hours ago | parent | prev | next [-]

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.

rcxdude 7 hours ago | parent | prev | next [-]

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.

feoren 6 hours ago | parent [-]

> 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.

schnevets 4 hours ago | parent | next [-]

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)

rcxdude 6 hours ago | parent | prev [-]

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.

mostly_harmless 6 hours ago | parent | prev | next [-]

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"

nemomarx 7 hours ago | parent | prev | next [-]

You want to look at dwarf fortress talks for that, I think?

OkayPhysicist 7 hours ago | parent [-]

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.

WhatIsDukkha 6 hours ago | parent | next [-]

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.

nemomarx 6 hours ago | parent | prev [-]

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.

setr 3 hours ago | parent | prev [-]

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.

agentultra 2 hours ago | parent [-]

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.

setr 2 hours ago | parent [-]

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.