I made good progress this week despite a heavy work schedule and continued involvement in another side project (not game-related).
- Hearing system. Actors now respond to sounds they can hear in the dungeon. Every game event was assigned a volume value between 0 and 20. A configurable multiplier translates volumes to the number of tiles traveled (I’m currently using a multiplier of 2).
- Switched from mutual kill to priority kill combat. Last year I sped up the game by animating actions as soon as the actor selected an action. An unintended byproduct of this change was that it became possible for an enemy to hit the player in the same turn that the player killed the enemy. While this is a valid approach which, I believe, is employed by some roguelikes, I didn’t think it was fair. To fix this, I had to separate the attack outcome (whether the attack was a hit or a miss, how much damage was done, and the effects triggered) from the animation. This required determining the outcomes in advance and caching them as opposed to calculating them on the fly.
- Adjustments
- Multiple spiders and bats can now occupy the same cell. This makes combat with these enemies more interesting.
- Increased health potion drop rate.
- Increased the rarity of magic items.
- Stalagmite rooms now contain a single mushroom on rare occasions.
- Replaced the Ring of Invisibility with a Ring of Accuracy. The former was overpowered.
- Slightly lowered item drop rate for debris.
- Reduced the frequency of stalagmite rooms and stalagmites in those rooms. I think the latter issue was due to temporarily increasing the stalagmite density for testing and forgetting to change the density back to its original value. I added light, medium, and heavy density stalagmite rooms. Stalagmite rooms were the only choice for junctions (rooms with three or more connected rooms), so I added more choices.
- Bug fixes
- Clicking harmful potions sometimes triggers a drink action instead of a throw action.
- The descend action doesn’t work when standing on the cell with stairs down.
- Animated Bones health bar replays receiving damage after animating in response to being attacked.
- Error when pressing the number key for an empty hotbar slot.
- Status effects weren’t transferring when an actor changed to a different type.
My last update on the demo progress stated that bug fixing, the only remaining task, was 96% complete. That percentage was based on the recent number of bugs in the backlog, how often I was encountering bugs while playing, and a fuzzy recollection of how many bugs have been fixed since starting the task. These inputs are collectively too imprecise to properly measure progress. In my experience, when this happens, I find it useful to further break down the work. So, here’s what’s left:
- Lighting bugs/refinement and deciding whether to use grid-based lighting. Legend uses a dynamic lighting Unity asset that provides the necessary features but is difficult to work with, has poor documentation, and consumes more resources than any other system. I need to decide whether to stick with the asset or go back to the original grid-based lighting system.
- Thrown potion bugs. I never defined the behavior for some potions when thrown.
- Save/load and level transition bugs.
- One more optimization pass.
- 5 miscellaneous minor bugs.
- Beat the demo. I have yet to do this!
I think this work can be completed in 2-4 weeks depending on how much free time I have.

