Period: October 4, 2025 Total Commits: 17
Daily Dev Update: Leaner Battles, Smarter Bots - October 4, 2025
Hey, here’s what we’ve been working on. Today’s build tightens up match flow, clarifies a few UI moments, and lands substantial performance improvements. We also fixed a couple of sneaky aura and bot issues that were undercutting strategies.
What’s New
Lobby balance and match flow
- Auto team assignment: Joining a lobby now places you on the smaller team by default. If teams are even, you land on Team A. You can still switch after joining. This keeps queues snappy and games starting balanced.
Level-ups that match your playstyle
- Unified level-up modal combining towers and minions in one grid.
- Selection rules: 3 total units at level 1, then 1 additional unit per level after that.
- Playstyle-aware filtering:
- Generalist: everything normal
- Offensive: minions highlighted, towers de-emphasized
- Defensive: defensive towers highlighted
- Support: support towers highlighted
- Visual clarity: Circular minion cards vs square tower cards; de-emphasized units are darkened but still selectable. Wider layout for readability.
[screenshot: redesigned level-up modal with playstyle filters at 78841bc]
Team-wide economy
- Income is now shared per team instead of per-player.
- Numbers: Base income starts at 2.0/s per team; individual minion income values halved to compensate.
- HUD shows “Income: +X.XX/s” under Team A/B. Three-player teams display on a single row for readability.
- Spawn placement is stricter: no overlapping assignments; failed placements get refunded.
Clearer minion spawn placement
- Green/Yellow/Red indicators show whether a spawn spot is valid, too expensive, or invalid. Uses the same ghosting system as towers for consistency.
- Only shows when a minion is selected and you’re viewing the opponent’s board.
[screenshot: minion spawn placement indicators (green/yellow/red) at 2d0bf1a]
A tighter battlefield
- Grid reduced from 32x17 to 29x15 tiles. Spawn area from 7x17 to 5x15.
- Castle positions nudged to fit the new size; same lanes, less dead space.
- Updated backgrounds and pathfinding to match. This should speed up decision-making and lessen clutter late game.
[screenshot: updated battlefield grid and castles at bb3a9a5]
What Got Fixed
Auras apply when they should
- Aura upgrades now apply immediately. Previously you had to place something new to force an update. Now upgrading an aura-bearing tower recalculates nearby bonuses right away.
Bots actually use new toys
- Fixed state tracking so unlocked units are consistent across clients and sim.
- Bot logic now updates its internal selections on level-up, so they’ll place and spawn newly unlocked units instead of sticking to level 1 options.
Combat and cleanup
- Speed Booster aura range corrected (1.7 → 2.0).
- Projectile rendering no longer drops frames when bullets die; they render cleanly for the final frame and then get cleaned up.
- Flamethrower and VFX cleanup improved to avoid lingering effects.
- A few minor UI/TypeScript issues cleared out.
[screenshot: aura glow and tower synergy in combat at 1a69f15]
Under the Hood
Big GPU win for aura visuals
- Aura glow pulsing moved to the GPU via shaders, with updates throttled from 60fps to 10Hz without losing smoothness. No more per-frame scale tweaks on the CPU.
- Net effect: significantly lower GPU cost in late-game boards with lots of auras.
Big CPU win for the simulation
- Batched spatial queries: Towers now share one pass through the spatial hash for targeting instead of doing it one-by-one.
- Projectile pooling: Reuses bullets instead of constantly allocating. Much steadier memory and fewer GC spikes.
- Extra trims: throttled target checks for idle towers, faster array loops, and a handy “has targets nearby” accessor.
- Combined impact: notable CPU reductions in high-entity scenarios; should feel smoother with many towers and projectiles.
Cleaner architecture, fewer leaks
- Input handling moved into a dedicated class. Renderer sheds ~400 lines of glue code.
- Aura glow management lives with aura entities now, not the renderer.
- Mesh/material caching and registry cleanup tightened to avoid leaks and garbage churn.
Deployment and ops
- Deployment scripts and Make targets added for consistent rollouts.
- New cloud environment with proper SSL, WebSocket-friendly LB, and saner security defaults. Lower cost, simpler scaling.
That’s the snapshot for today. If you notice team income edge cases, aura oddities, or bot weirdness, keep the reports coming—they’ve been directly helping us track down the tricky stuff.