Good progress today migrating my old dungeon generation code into the new codebase. It’s at the “phase 0.3” goal – here’s what’s in:
- Dungeons are dynamically generated and can be any size. ~100×100 seems to be good so far; not too big, not too small
- Dungeon generation is working properly with ascending/descending between levels. Mobs and items also persist
- Dungeon, room, and corridor generation is all implemented with abstractions and easy to expand later
- Per an earlier post, LevelThemes are in and are used by the dungeon generation code
Here’s what’s not in and slated for a future phase:
- Vaults. Special pre-defined rooms that are placed in the dungeon. These give a much-needed “not-randomly-generated” feel to the levels, and are one of DCSS’s best features IMHO. These are implemented in my old codebase, and just need to be brought over. I do still need support for > 1 Vault in a level though…
- MiniDungeons. Similar to DCSS’s mini dungeons (orc caves, etc). These should be easy to define now (in the xlsx) – I just need to hook them into the actual dungeon generation. I’ll probably implement them as independent levels, but I haven’t thought through yet what that means to the level persistence code (should be easy to do, just need to do it).
- Cell adornments. Little additions go a long way; a crack in a tilefloor here, a burned out torch on a wall there… I had these implemented in the old codebase and need to bring them over to here.
Here’s what generation looks like using the ‘normal’ corridor generation routine:
A bit bland; I’ll need to play with the generation parameters to get rooms packed in a bit more. The image above does show the abstracted room generation; for the rooms you see there it picked the ‘RoundRoomGenerator.’ Out of place in a ‘dungeon’ setting, but perhaps not in a cave setting or similar.
Here’s what generation looks like using the ‘DCSS wacky corridors’ generation approach that I outlined in an earlier post (here: http://7yrl.com/2009/04/14/day-5c-dcsss-insane-ly-cool-corridors/):
A bit more interesting albeit less logical. Just like DCSS :).