Procedural generation is presented as a way to produce infinite content. It produces infinite variation, which is a different thing, and confusing them has produced several disappointing games.
What it is
Creating content through algorithm rather than by hand, generally seeded so the same input produces the same output.
Which means a game can store a seed rather than a world, and regenerate identically on demand.
That property is why generated worlds can be shared by exchanging a short code.
Where it works well
Terrain, where natural-looking variation is genuinely what is wanted and no specific arrangement is required.
Noise functions producing landscapes have been standard for decades and produce convincing results.
Loot and item variation, where combinatorial generation from components produces meaningful differences in play.
Level layout in games built around repeated play, where variation is the point and each run being different is what sustains interest.
Texture and material generation, where variation avoids visible repetition across large surfaces.
Where it fails
Narrative, where meaning depends on intentional structure that algorithms do not produce.
Generated quest structures assembled from templates become recognisable within hours, and recognition destroys the effect entirely.
Set pieces and memorable moments, which depend on being specifically composed.
Anything where the player will encounter the same generator output enough times to see the pattern, which is faster than designers expect.
The recognisability problem
The central limitation.
A generator has a space of possible outputs, and a player who plays enough maps that space.
Once mapped, everything produced feels like a variation rather than a discovery, which is exactly the opposite of the intended effect.
Which means the effective content is not infinite but bounded by how long it takes to perceive the underlying rules.
Larger generation spaces delay this rather than preventing it.
Constrained generation
The approach that has produced the better results.
Rather than generating freely, generate within authored constraints — hand-built rooms assembled procedurally, generated terrain with placed landmarks, generated encounters using designed components.
Which combines the volume of generation with the intentionality of authorship, and it is how most successful implementations actually work.
Games described as procedurally generated are frequently doing this rather than generating from nothing.
The verification problem
Generated content cannot be individually tested.
Which means the generator must be guaranteed to produce valid output — reachable areas, completable objectives, no impossible configurations.
Proving that is genuinely hard, and generated games ship with unreachable objectives and impassable layouts more often than authored ones.
Automated validation of generated output, running the generator many times and checking properties, is the standard mitigation.
Difficulty balance
A generated encounter may be trivially easy or effectively impossible, since it was not tuned.
Which requires the generator to reason about difficulty, and difficulty is not straightforwardly computable from the components.
Games handle this with budgets — assembling encounters within a cost limit — which approximates balance without guaranteeing it.
The honest framing
Procedural generation is a tool for producing volume and variation cheaply.
It is not a substitute for design, and games that used it as one have consistently felt hollow regardless of how large they were.
The successful applications treat it as one technique among several rather than as the premise.
Wave function collapse
A technique that gained wide adoption for a specific class of problem.
It generates output consistent with local constraints derived from an example, propagating those constraints until a full solution is found.
Which produces results that look authored, because the constraints come from authored material.
It is well suited to tile-based level layout and texture generation, and it can fail to find a solution, requiring backtracking or restart.
Seeded runs and community
A social property that emerges from deterministic generation.
Players sharing seeds allows direct comparison of performance on identical content, which enables competition and discussion that would otherwise be impossible.
Speedrunning communities have built substantial activity around this, with categories defined by seed and by generation constraints.
Which is a genuine benefit of the technique that has nothing to do with content volume.
The authored fallback
Several games generate content and replace it with authored versions in the places that matter most.
Which is invisible to the player and is the pragmatic answer to the meaning problem.
Performance considerations
Generation happens either ahead of time or during play, and the choice has real consequences.
Generating at load produces a pause and allows expensive algorithms.
Generating during play must fit within a frame budget, which constrains what is possible and requires spreading work across frames.
Which is why infinite worlds generated as the player moves use comparatively simple algorithms, and why worlds generated once at start can be more elaborate.
Reproducibility across versions
A seed produces the same output only while the generator is unchanged.
Which means an update altering generation invalidates every shared seed, and worlds already created may become inconsistent with newly generated regions.
Versioning generators, so old worlds continue using the old algorithm, is the standard solution and it accumulates maintenance burden indefinitely.