Period: December 16, 2025 Total Commits: 26
Hey, here’s what we worked on today. The focus was eight-player FFA polish, cleaning up UI clarity, and tightening up performance. A lot of this is about making big matches readable and fair without adding noise.
What’s New
-
Eight-team scoreboard
- Tab now shows up to 8 teams in two columns with distinct team colors and clear income headers.
- Easier to scan who’s ahead at a glance.
[screenshot: updated Tab scoreboard with 8 teams at 845a88a]
-
FFA spawn randomization option
- For multi-team maps, lobbies can choose Fixed or Random spawn positions.
- Random uses the lobby seed so everyone sees the same shuffle.
- The camera now centers on your castle at match start to help you orient quickly.
[screenshot: FFA start with randomized castle positions at db5bb99]
-
Team elimination system
- In 3+ team games, eliminated teams are tracked and shown as a short on-screen notice.
- Eliminated players can’t place or upgrade; bots stop acting immediately.
- Bottom bar clarifies your state if you’re out.
-
Clearer speed and aura info
- InfoPanel now shows speed bonuses from heroic charge and nearby speed auras.
- Boosted values highlight in green; it also accounts for slows and stuns.
[screenshot: InfoPanel showing speed aura and heroic charge bonuses at a710c1f]
What Got Fixed
-
Fair FFA combat buffs
- Minion health buffs after a castle falls now apply to all surviving teams (not just two-team logic). In short: if Team C dies, everyone except C gets the +10% buff.
-
InfoPanel correctness
- Speed display now reflects the multiplier actually applied when a minion spawned (no more retroactive skill bonus).
- Bounty display uses the minion’s live level-scaled bounty, not the base config.
-
Better bot behavior in edge cases
- Eliminated bots stop immediately; the elimination check happens before any decisions.
- Spiral maze building fixed to preserve 1-tile corridors and avoid invalid placements.
- Free-for-all goldflow initialization now runs for all teams, so bot placement logic gets complete board data.
-
UI/UX cleanup
- Enemy tower range indicators now show correctly in single-board mode.
- Transparent parts of the bottom bar no longer eat clicks; right-click context menus are disabled on HUD.
- Waiting on other players? Unit buttons clearly gray out to show they’re locked.
- Back navigation no longer loops you between lobby and an active game.
[screenshot: enemy tower range indicator visible in single-board mode at 85a463f]
-
Gameplay feel
- Castle hits shake more and a bit longer (intensity 0.6, duration 400ms) so it’s easier to notice your base is under fire.
-
Placement rules
- Path-only towers (like spikes, wind) won’t place on grass if a map actually has roads. This closes some confusing edge cases.
-
Replays and resync
- The resync loading screen now waits for both map data and history replay, so you don’t see the game start before it’s ready.
- Replay data sticks around longer: game state and action history now persist for 30 days.
Under the Hood
-
Rendering performance on large maps
- Water, doodads, and explicit grass tiles now use instanced meshes instead of individual meshes.
- On 50x50 maps, draw calls dropped from roughly 875 to about 4, which removed 30–40 FPS dips on our test scenes.
- Depth ordering tightened up: towers, castles, doodads, and health bars layer consistently, with health bars always on top.
-
Smoother camera and input
- Switched to Three.js setAnimationLoop for better vsync timing.
- Snapped camera pixels to reduce sprite shimmer.
- Input update order adjusted to remove a 1-frame delay when panning.
-
Bots and tooling
- All bots now use a spiral mazing pattern for predictable, expandable mazes.
- Added an internal mazing test view to iterate on tower placement logic faster (helps us catch adjacency and obstacle issues before they hit matches).
-
Systems sanity
- Gold flow visualization now serializes all teams in FFA, not just A/B, and accounts for water tiles to avoid silly paths.
- Test Arena unlocking no longer gets reset by a state update.
Thanks for the bug reports and replays—those pointed us straight at the FFA issues and a few UI mismatches. If you notice anything off with multi-team visibility or placement rules, send a screenshot and steps to repro. It helps a lot.