Period: December 27, 2025 Total Commits: 8
Daily Dev Update: Sim-Pure Castles, Hoppers Tweaks, and Fairer Captures
Hey, here’s what we’ve been working on today. Focus was on special-mode clarity, PvP economy fairness, and a big chunk of engine cleanup to keep matches smooth and bots predictable. Nothing flashy, just steady improvements.
What’s New
-
Castle captures now refund 50% of tower spend
- When your castle gets captured, you receive a refund equal to 50% of the tower’s base cost plus its upgrades. This softens snowballing and keeps mid-game comebacks on the table without erasing the impact of a capture.
- Practical effect: you can pivot faster after a loss instead of sitting on dry economy.
[screenshot: castle capture animation and health bar update at 932c14b]
-
Protect the King economy buff
- Income increased from 2 → 5. This speeds up early-game options and reduces low-APM downtime without blowing up late-game scaling.
-
Unlock menus are smarter by default
- If a map turns on the unlock menu but doesn’t list towers or minions, we automatically treat that as “all units available.” This avoids empty rosters and makes map authoring less tedious.
What Got Fixed
-
Level-up selection cap respects the unlock menu
- The “max selections” check only applies when the unlock menu is actually enabled. No more unexpected locks when it’s off.
-
Walls no longer do fake math
- Non-attacking towers (like walls) skip attack speed calculations. This removes some misleading stat implications and trims a little sim overhead.
-
No more double castle flash
- Removed a redundant flash trigger so capture/destruction flashes are driven cleanly by the renderer.
-
Cleaner Hoppers placement flow
- With spawn validation relaxed for Hoppers, server and client now agree more often on what “valid placement” means in this mode.
-
AI practice spawns line up correctly
- Fixed quadrant offsets and single-board side selection for bot matches. Practice games should feel less random and more consistent.
Under the Hood
-
Simulation/rendering split for headless battle mode
- All Rendering is now separate from simulation in the codebase, so that we can have headless clients that play the game without needing any stubs.
- CastleManager is now pure simulation (health, damage, ownership). All visuals moved into a dedicated CastleRenderer, and the main Renderer listens for events to play capture/destruction/flash animations. This makes the sim easier to test and reduces weird side-effects.
-
Everything goes instanced for minions and VFX
- Non-instanced paths were removed. Minion and VFX entities are sim-only; Instanced renderers handle the visuals. Less CPU/GPU thrash in big waves, simpler code paths.
-
Temp entities moved out of the core sim
- Temp towers and minion placements (the optimistic “ghosts” you see while placing) now live in a dedicated manager. Path validation takes those temp positions as input, which makes previews more accurate and keeps the core sim clean.
If you’ve been running Hoppers or Protect the King, this update will be noticeable—faster openings, smoother placements, and fairer recovery after a castle falls. If you’re into practice play, the bot alignment fixes and Battle Lab docs should help.
As always, if something feels off (especially economy swings around captures), let us know what you’re seeing.