As it has been mentioned before, in UnDungeon, the global map, its topography, available local levels and routes among them are generated procedurally. However, in order to provide players with levels that are nice and engaging to explore them again and again, the procedural generation is not enough.
UnDungeon utilizes a combined system which includes all positive aspects of program level generation and custom level design. We create a lot of world segments manually: each segment (a macro-tile) is unique and can be combined with other parts of the world. To create a local level, the algorithm gathers up to 10 randomly chosen macro-tiles. As a result, each new level looks just the same as a customly generated one.
When the level geometry is ready, the level generator analyzes a macro-tile based level and fills it with enemies, NPC, random encounters, resources, quest objects, etc. Then, all this content is spread through levels increasing the diversity of occurring situations and the overall replayability.