Period: September 2, 2025 Total Commits: 10
Daily Dev Update: Smarter Bots, Clearer Starts, and a Greener Battlefield
Hey, here’s what we’ve been working on today. The big themes: bots now make smarter economy choices, match starts are clearer and fairer, the battlefield got a visual pass, and we added on-chain usernames so lobbies feel more human. Also fixed a handful of stability and polish issues.
What’s New
On-chain usernames and bot names
- Usernames are now stored on-chain and show up in the lobby and HUD.
- New users get a username modal with random suggestions. It sticks between sessions.
- Bots now pull from a curated list of names instead of generic labels.
- Practical impact: it’s easier to identify teammates/opponents at a glance, and lobbies feel less like wallets and more like people.
[screenshot: multiplayer HUD with usernames and Waiting countdown at d3e0411]
A greener battlefield and clearer units
- New grass background that extends beyond the board edges for a cleaner frame.
- Lighter, semi-transparent grid lines improve placement readability.
- Minion sprites are 20% larger, with crisper edges and better depth sorting.
- Configurable oval shadows (with a performance toggle). Flying minions sit higher and drop shadows lower for better height cues.
- Shadows render in a single instanced draw call, so it looks better without hurting performance much.
[screenshot: updated battlefield grass and lighter grid at 3956ddb] [screenshot: minion shadows and flying unit depth at 3956ddb]
VFX and animation polish for towers
- Added ShootVFX hooks to tower configs so towers feel responsive when they fire.
- Towers now keep their last rotation when they lose target instead of snapping to zero. Looks steadier and helps telegraph intent.
[screenshot: new shoot VFX on towers at be69ffe] [screenshot: towers maintain rotation when idle at 1231d68]
Bots that think in gold-per-minute, not impulses
- Leveling priorities now scale with your minion spawns:
- 10+ spawns: heavy leveling priority (70%).
- 5–9 spawns: medium priority (50%).
- Level goals track cumulative gold correctly and look at income rate before committing.
- Bots are more patient, with a much lower chance to abandon a save for level (5% vs 20%).
- Mid/late game puts more weight on levels to unlock stronger rosters.
- Result: bots save, level, and transition power spikes more like experienced players.
What Got Fixed
Match start flow and HUD
- Player initialization pulls from the fetched player list again, so the HUD populates correctly.
- The game waits for everyone to pick initial units before starting.
- The wave countdown shows “Waiting…” instead of a giant placeholder number.
- Late-joining players now trigger the right events and slot into the HUD.
What you’ll notice:
- Players appear with gold/income/level right away.
- No more surprise early starts while you’re still choosing units.
- Clear status while the lobby gets ready.
Bot reliability under load
- Player tracking: bots now detect all joined players by replaying from lobby creation and listening to the factory contract. This fixes bounty split math.
- No more negative gold: the AI loop is async/await driven and blocks overlapping transactions. Actions complete before new ones begin.
- Cleaner exits: bots store and release keys correctly; repeated joins are handled gracefully; guardrails prevent negative block numbers.
Tower animation edge cases
- Idle frames now respect last rotation, so turrets don’t snap back when targets disappear. Smooths out jitter and micro-stutters in visuals.
Backend startup issues
- Fixed a set of issues that made the chain backend occasionally fail to start. Less fiddling to get matches running.
What’s Still Broken
- We’re still tuning the bot leveling heuristic for edge cases (e.g., very low-income turtle strategies). If you see bots over-saving when they should stabilize, let us know.
- Shadows are configurable, but on some low-end machines the new visuals may cost a few FPS. Toggle shadows off if you need a smoother ride.
- Late join handling is better, but we’re watching for rare cases where the HUD might lag a player behind. If you notice mismatch between players in match vs HUD, ping us.
Under the Hood
- Event sourcing got an upgrade: bots now source from both match and factory events and filter to the correct match. The goal is consistent, up-to-date player lists for fair bounty and economy calculations.
- Concurrency guards: all bot transactions carry an “in progress” flag. Decisions won’t overlap, which eliminates negative gold and race conditions in unit selection flows.
- Rendering performance: minion shadows use instanced rendering (single draw call), and sprite sorting rules were tightened to reduce popping at path intersections.
- UX flow: username collection now sits cleanly in the initialization sequence and removes extra wallet UI from the lobby. Fewer steps before you play.
What’s Next
- More economic smarts for bots: factoring damage taken and leak risk into level timing, and learning better pivot points from income to board strength in PvP.
- Balance pass on early minion spawn income vs tower scaling. Goal is to keep early pressure viable without making greedy leveling too safe.
- VFX iteration: impact hits, trail clarity, and per-tower shoot effects.
- Continued HUD quality-of-life: clearer ready states and team info during pre-wave.
That’s it for today. If you run into oddities with the new start flow, late joins, or bot saving behavior, send a note with what happened and roughly when. It helps a lot.