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:


A bit more interesting albeit less logical.  Just like DCSS :).