So you want to generate an infinite world. Or maybe you don’t need an infinite world, but you’d rather not generate the whole thing at once. If you restrict yourself to using only deterministic algorithms, and mostly only top-down generation, you can get by with just referencing the seed value against the x,y,z coordinates and translating it to the contents of a particular grid cell.

But  what if your terrain generator really needs a smoothing step? Or your voronoi-cell-based village placement needs to be able to handle future off-stage villages? Or your erosion sim and your trade route sims need to be run before you know where to generate the roads between the villages?

Well, here’s one way to solve that problem: layered generators.

Minecraft actually uses a system a little similar to this, with a top-down generator for the broad strokes and a little more processing for the individual terrain cells as they are created, smoothing out caves and the like.