Weekly Update – November 21, 2025

Refined Map Loops

After the initial rooms and corridors are created, the map generator adds a few corridors to create loops in the map. It does this by constructing a graph of the rooms and, for a random number of iterations, creating corridors between two rooms that are physically close to each other but far apart on the graph. This tends to produce a new room graph where almost all rooms are in the same group. This is a problem because 1) map layouts are too similar and 2) group content such as a bandit hideout is too large (it’s not fun fighting through 30 rooms of bandits). To fix this, loops are now created from rooms that are closer together in the graph. Also, the minimum and maximum number of iterations is configurable by level theme, allowing some levels to be more or less looped than others.

Miscellaneous Map Generation Improvements

  • Refined small/medium/large room distributions.
  • Slightly lowered the map size. I’ve lost count of how many times I’ve done this.
  • Fixed a bug that caused large rooms to generate too often.
  • Content selection optimizations. Added more caching and early disqualification. This is still by far the most expensive step in map generation. It’s fairly quick (<1 second) in production mode, but >10 seconds in debug mode because of all the logging.

Completely Random Dungeon Map Type

Previously, room type selection was constrained by the group the room was in, e.g., spider lairs could only contain rooms with spiders. I created a new map generation configuration that selects from the entire list of room types. This produces maps that are more like typical roguelikes. I wanted to see how these maps felt compared to the themed maps. I had more fun playing these maps because every room was different. This confirms that the themed maps need more variety.

Random map generation

Take Preferred Items Only

When playing a level that includes many enemies with equipment, the player’s inventory fills up with the same weapons and armor. I’m experimenting with different solutions to this problem. One potential solution is a button that only loots “preferred” items, i.e. equipment that is better than what the player already has. This enables the player to quickly loot an enemy without polluting their inventory. I implemented the feature but haven’t tried it out yet.

Take Preferred Items Only button

Bug Fixes

The most interesting bug was being able to pull puddles and doors. I fixed it, but it gave me an idea for a potential future player class that can move any object at will. Maybe…

Next week, I’m dabbling with enemy AI because enemies are dumb. I plan on making simple changes only and not get carried away.


Posted

in

by