How do you procedurally generate a world that can be small, medium, or large, and guarantee it's always fun? This was a huge problem for us on Curious Expedition.
Just scattering a random number of locations was a failure. So our next thought was to create regions to stop locations from clumping up. It created a new problem: some regions ended up with all the resting spots, while others had none. The world was still super unbalanced.
The breakthrough was counter-intuitive. Instead of focusing on the bigger picture, we zoomed in and designed just one perfect self-contained region. It followed a simple guaranteed rule:
- 1 Resting Spot
- 1 Shrine (The Game Objective)
- 1 Utility Location
- 1 Loot Location (only spawned with 25% chance since they were bonus)
Once we had solved that, creating small or big worlds got trivial:
- A small level is 2x2 regions
- A medium level is 2x3 regions
- A large level is 3x3 regions
No matter to what size we scaled up, the system didn't break. In Curious Expedition: Rivals we went as far as creating levels with 100x100 regions, without any extra tuning overhead.
Spelunky is another examples which builds its levels from perfectly playable, hand-crafted room chunks. We used a similar approach again in our game Mother Machine. Divide and conquer. To build a robust large-scale procedural system, focus on a small-scale self-contained building block.
This is post 3 in my series on the "95% problem" in procedural design.
What's a complex design problem you solved only after you completely reframed it?