Period: August 29, 2025 Total Commits: 9
Hey, here’s what we’ve been working on today. The headline: bots got a real brain upgrade, tower placement got safer and smarter, and we simplified how matches end to keep PvP moving. A few rough edges still, but it’s getting there.
What’s New
-
New multi-threaded bot system
- Bots can now join lobbies, pick initial units, place towers adjacent to castles or existing towers, and assign minions to valid spawns.
- There’s a small REST layer so we can spawn/stop bots and check status while we iterate.
- The goal is better practice matches and more consistent lobbies while we tune PvP balance.
-
Simpler victory condition
- Win when the final castle falls. You no longer need to wipe every intermediate castle.
- This shifts gameplay toward decisive pushes and clearer win/loss moments. Less grind, more clutch defenses.
-
Stage-aware tower selection UI
- Towers are now tagged with a gameplay stage (early/mid/late) and show up with color-coded indicators.
- Helps you pick the right tools for where the match is at. Bots use this too—only early towers at level 1, then scale up appropriately.
- [screenshot: tower selection screen with stage indicators at ba9cd73]
-
Smarter frontline focus
- Bots prioritize defending alive castles on the left side first (front-line around x:15), building outward from existing towers to create real choke points.
- This keeps early skirmishes meaningful and reduces wasted gold on dead castles.
- [screenshot: towers clustering around front-line castles at daf63fc]
What Got Fixed
-
Tower placement is now path-safe and overlap-free
- We validate the path so towers can’t block minions.
- No more overlapping towers; placement checks the authoritative grid before committing.
- Internal position tracking is more robust; we track both the registry and the grid to stay in sync.
- [screenshot: updated tower placement grid showing no overlaps at 00c397a]
-
Castle and anchor selection
- Bots consider all alive castles (not just the bottom one) and use nearby living defenses as anchors for clustering.
-
Gold accuracy and spend safety
- Bots now initialize with the correct starting gold and stay in sync via SimCore events.
- No more negative gold. We fixed pending spend handling so failed timeouts can’t drive the balance below zero.
-
Mid-game joins don’t stall unit selection
- Bots that join a match in progress now select their starting towers and minions correctly, even if the first wave already started.
- Better logging and a clean retry path if transactions fail.
-
Minion targeting clarity
- Minions now prioritize the shortest path front-to-back, aligning with the simplified victory condition.
- [screenshot: match end banner when the final castle falls at a58f03d]
What’s Still Broken
- Tower clustering can still pick a suboptimal tile in rare edge cases when multiple anchors compete at once. We’re tuning the tie-breakers.
- Under heavy packet loss, bots sometimes hesitate after a failed transaction before retrying. The safeguard is working, it’s just a bit conservative right now.
- The stage sorting UI for towers does what it says, but we’re still polishing the order for a few outlier tower types. Color coding is solid; the sort logic needs a pass.
If you see odd pathing around tight choke points, send us a clip. Those reports help.
Under the Hood
-
Bot architecture
- Worker threads per bot, with dynamic CPU core detection so we don’t swamp your machine.
- Full game state sync via blockchain events, piped through a chain reader into SimCore for deterministic decisions.
- Rest endpoints to spawn/stop/status are in place for development workflows.
-
Economic consistency
- We standardized on reading gold states from SimCore and added strict pending spend rules (always cleared on completion/failure, never dips below zero).
- Player join events are processed during replay, so bots entering mid-match get the right baseline.
-
Match lifecycle
- The bot stack listens for the match end, shuts down decision loops, cleans up workers, and frees resources. Less ghost logic after GG.
-
Placement rules
- Valid placement is now adjacent-only, snapped to the grid, and checked against an authoritative occupancy map. That closed several desync and overwrite cases.
Why this matters for PvP
- Faster conclusions with the final-castle win condition means more matches, less stalemate.
- Smarter tower staging reduces early-game noise and creates clearer power spikes.
- Reliable bot opponents make it easier to test strategies and tower synergies without waiting for a full lobby.
What’s Next
- More aggressive anti-blocking heuristics so creative mazes don’t accidentally jam lanes.
- A pass on bot risk tolerance: earlier pressuring with minions when front-line defenses are light.
- UI tweaks for tower lists: tighter sorting, better tooltips, and clearer upgrade breakpoints.
Thanks for the reports and screenshots—especially on wonky placements. Keep them coming. We’ll keep shipping small, concrete improvements day by day.