Posted March 13, 2025 by Mado
This week's update is a smaller one for two reasons. First, I needed some time to fix some longstanding technical bugs and mechanics that weren't implemented correctly. Second, I have started on the tooling for the dungeon part of the game, but which takes some time.
You can read about the bugfixes in the changelog, but in general they shouldn't be noticeable except that the game will be more stable. So instead let me introduce the new dungeon tooling system.
Dungeons consist of Rooms, and the way these Rooms are laid out in the Dungeon has been cleaned up in Ero Dungeons already. However, the Rooms themselves were always made in the Godot engine itself. The issue with this is that modifying them is a mess. You may remember the myriad of issues in Ero Dungeons where a Room was inaccessible from a direction or a wall was misplaced or collisions were wrong. That all stems from the fact that the Rooms didn't have all the validation and safeties that other aspects of the game have. Additionally, it meant that the Rooms weren't moddable at all. To make it worse, the tile layout and the content (such as curios) was handled completely separately.
For example, this is what a Room (the Stronghold) looks like in Ero Dungeons. Notice that there's a lot of tilemap stuff going on to handle the different connections it can have with neighbouring rooms. This Room broke in 4 or so versions.
The basic tilemap of Rooms was a weird mix between scripts decided by the dungeon (such as make a circle in the middle with radius 3 to 5) and then sometimes in-engine overrides from the Rooms themselves. This caused many bugs where the content of Rooms didn't fit the actual tilemap, but only sometimes.
In the rework, I can now just draw the tiles myself, including when a tile should only show up if a certain connection with a neighbouring room exists. This allows rooms to be more versatile, and saves me a bunch of time.
Rooms can exist in different biomes, giving different floor and wall tiles, so when tiling I can either use the generic tiles (which then gets replaced by biome tiles) or use very specific ones. Something that also wasn't possible in Ero Dungeons.
The content of a Room are called Actors. These are Curios, Enemies, or anything else that isn't a tile in a Room. Until now, these Actors were hand crafted in the Godot engine and had custom code. They were a mess since they didn't have to be streamlined. Now, they have been reworked to use the general scripting tools of the game, meaning they can do whatever a move/item/curio/console can do.
The visuals of these Actors also use scripts, allowing fine grained control. For example, in Ero Dungeons, a WoodenChest curio couldn't delete the wooden chest in one outcome, keep it closed in another, and open it in a third. Now, that's possible.
Another reason for the high amount of Room related bugs is that testing them was difficult. I needed to load up a dungeon, hope that the room spawned and then hope that it had the desired connections. To remedy this, I can now see an instant preview of the Room and even enter a small test dungeon to see the Room in action.
To achieve parity with the current system, I only need to add the EnemyGroups. Of course, I want more than simple parity, or else there wouldn't be a reason for making this change, so will make sure there are some new Curios and other special Rooms for next week's version.
Minor:
Bugfixes:
Hotfix 1 additionally also fixes the following bugs:
If you want access to the preview with these changes (and a debug console), support me here: