So generation is finally largely complete. There will undoubtedly be further changes to it to mesh with new art assets, thicker walls, and adding logic for new place types and all that. But fundamentally it’s done. You can see a sample of the results here:
Red/grey mist indicates higher difficulty. Volcanos/Castles/Towers are dungeons.
The logic behind placing dungeons (essentially boss encounter areas) was fairly simple and basically involves sets of contiguous zones being generated from the existing world data. The first set is special and is generated from the town and spreads about randomly, creating a safe haven with a certain number of zones for low level players. Additional sets are generated off of the first set or other sets and traverse through the map looking for passageways that introduce as few openings as possible, since a zone set will generate two dungeons to fill up entrances at most. If a zone set is completely blocked in by other sets, it simply generates its dungeon randomly somewhere within it- ideally blocking a zone or two (a process that still needs some tweaking when you’re only working with 4 zones total most of the time).
So I feel pretty good about this because it means there probably won’t be any more major systems that will need massive additions to them, other than an improved effects/animation system. But I also feel really bad because looking back at it, this entire zone system thing was not necessary for the node system and I just wasted over 2 months of work on it. It offers several advantages in terms of being able to visually display a single area containing many things, sure, but that is not such a vital feature as to dump all this time into it (especially when it’s going to increase the load on the art department). I’d say this whole working-without-the-entire-design thing has worked out pretty well considering the dangers inherent, but this entire generation chapter shows me getting a little too relaxed with it- I should have decided upon the design before coding an entirely new generation system for a problem that was going to change radically from the design shift. It’s a valuable lesson that will not be forgotten.