Period: October 30, 2025 Total Commits: 20
Daily Dev Update: Smarter Bots, Cleaner Battles - October 30, 2025
Hey, here’s what we’ve been working on today. The big themes are better bot coordination, cleaner visuals and audio between matches, and some quality-of-life passes on controls and camera behavior.
What’s New
Floating damage numbers (with meaning)
We added floating damage numbers above minions. They’re color-coded by resistance and scaled so truly big hits stand out while normal hits stay subtle.
- Color meaning:
- White: neutral (-5% to +5% resistance)
- Red: resistant (> +5%)
- Green: vulnerable (< -5%)
- Size scales exponentially from small hits to huge crits:
- 5–50 damage ≈ 0.25–0.26 scale
- 100 damage ≈ 0.28
- 500 damage ≈ 0.47
- 1000 damage ≈ 0.74
- 2000–2500 damage up to 1.2
- Higher damage renders on top for clarity
- Only shows on the current board and respects particle quality settings
[screenshot: floating damage numbers on an enemy wave at fc8a805] [screenshot: huge crit number popping over a miniboss at 86c06cc]
Faster selection with Q/E that matches the UI
- Q/E now cycles through minions/towers in the same order as the bottom bar (sorted by cost, cheapest first).
- When you cycle, the view auto-switches to the right board so the selected unit is actually on screen.
[screenshot: cycling minions with auto board switch at 93fa473]
Camera that fits the map
Campaign maps aren’t all the same size anymore, so the camera adjusts automatically to fit the full map with a bit of margin. No more being zoomed too far in on larger layouts.
[screenshot: full campaign map framed with dynamic zoom at b014764]
What Got Fixed
Bot coordination and fairness
- Bots now make tower/minion balance decisions based on team totals, not just their own stuff. This cuts down on teammates working at cross purposes.
- Fixed bots trying to upgrade towers they don’t own. Ownership checks now match how decisions are made, so they won’t snipe a teammate’s fresh build.
- Resolved a placement race where multiple bots could place on the same tile. Temporary validation data is now namespaced, so live placements aren’t overridden during checks.
- AutoSpawn upgrades now trigger when spawn slots are full, and they target the correct board side. Upgrades should flow reliably again.
- Multiplayer/bot spawn actions now deserialize correctly, so you’ll actually see teammates’ spawn changes applied in your match.
Combat clarity and balance
- Prevented “overkill” from synced tower fire. We track pending damage per minion each tick and only fire if the shot is still needed. This reduces wasted DPS, especially noticeable on resistant targets and high-damage towers.
Clean restarts (no ghosts, no surprise music)
We had a handful of lingering artifacts between games. These are cleaned up now:
- Projectile effects, trails, and caches are cleared when you leave a game
- Projectile pools reset to prevent leftover shots or odd interpolation
- Music manager no longer flickers through tracks after stopping
- Sound manager stops all active sources on exit and won’t restart victory music later
- Minimap renderer no longer plays VFX detonation sounds
- Damage numbers are cleared instantly when switching boards
Input and UI polish
- Fixed selection/placement on tall campaign maps by using real grid bounds instead of 29x15 assumptions.
- Main menu and lobby have proper top margins so they don’t tuck under the header.
- Q/E ordering matches the bottom bar and auto-switches boards (covered above).
Under the Hood
Clearer action naming
We renamed a confusing field throughout the codebase: what used to be “target team” for spawns now consistently refers to the “board side.” That’s the side where a spawn is placed, which is different from who the minion fights. Internally everything uses the clearer term now, and multiplayer translation layers keep older messages working.
Level editor → client “Test Map” flow
For development builds, the editor can send maps directly to the client window; in production, it uses local storage. There’s a priority system, timeouts, and clean event teardown to avoid stale listeners. This doesn’t change gameplay, but it helps us iterate on maps faster.
Small cleanups
- Removed noisy logs
- Cached textures for damage numbers for performance
- Minor tuning on damage number scaling and board-switch behavior
Thanks for the bug reports and clips—those were helpful for tracking the bot and cleanup issues. If you notice oddities with damage numbers or tower firing logic, drop a note with a timestamp and what you were building.