Battle Engine Update

This past Saturday, I rolled out a quiet but highly impactful update to the Forge42Engine, the battle engine that runs Tharendell.

One of the biggest pieces of feedback I had been hearing was around battle responsiveness. Previously, when a fight was executed, players had to wait for the entire simulation to complete before receiving the results. In larger encounters, this could take up to a minute.

That bottleneck is now gone.

Live Narration is Here

Narration now streams in real time as each round completes.

Instead of waiting for a full payload, players now experience the battle as it unfolds — round by round. This dramatically improves perceived performance and makes encounters feel far more dynamic.

Under the Hood: Major Engine Refactor

While preparing to implement spell casting, I identified a growing architectural issue: the battle executor had become a catch-all service responsible for too many concerns, combat resolution, movement, narration, rewards, and more.

Rather than layering spell casting into that complexity, I paused and refactored the engine.

Over the past two days, I:

  • Extracted core logic into 7 dedicated services
  • Reduced the battle executor into a true orchestration layer
  • Preserved full behavioral parity across automated battle runs
  • Improved maintainability and testability across the system

This refactor is foundational. It allows new features — especially spell casting — to integrate cleanly without increasing technical debt.

What’s Next

Spell casting is now approximately 85% complete and will be the next major feature release.

Once that is finished, I’ll begin testing a mini campaign scenario, a controlled environment to evaluate how close DM42 is to functioning as a fully autonomous Dungeon Master.

More updates soon.

— Babble Baz