Daily Dev Update: Reliable Levels, Faster Actions - August 25, 2025
Hey, here’s what we’ve been working on today. Focus was on cleaning up level progression, making the action queue predictable, and hardening the contract so those odd “Not in match” or “Tile occupied” moments don’t show up in normal play. Also slipped in an in-game wiki to make learning towers/minions easier.
Period: August 25, 2025
Total Commits: 6
What’s New
- Added an in-game Wiki with pages for every tower and minion
- Quick stats and roles right where you need them
- Makes drafting and counter-picking faster during pre-match
- Added instant visual feedback for placements
- Temporary tower/minion markers appear the moment you click
- Reduces uncertainty while transactions confirm
- Notifications got a pass
- Smaller, auto-fading error toasts so you can stay focused on the fight
[screenshot: in-game wiki listing all towers and minions at cb26808]
[screenshot: instant temp tower placement feedback on the battlefield at a203893]
What Got Fixed
Leveling and selection
- Level selection modal now appears immediately after purchase
- We update player level state as soon as the success callback lands
- We also check for any pending selection the moment you level up
- No more units being replaced during selection
- We only load your units from the contract once and guard against multiple re-loads
- Local selections won’t get wiped by background syncs
- “Level 1 reached” modal won’t re-open incorrectly
- There’s a short cooldown after the modal closes to prevent race conditions
Action queue and placements
- Duplicate tower placements are blocked before they reach the chain
- We mark actions pending immediately to prevent re-execution
- Actions clean up correctly after confirmation
- When a receipt confirms, we call the success handler and remove the action
- Queue is more forgiving
- You can queue as many actions as you want; we process up to 4 at a time
- Failed transactions won’t jam the queue
- Gold deduction timing fixed
- Real-time vs re-sync events now deduct consistently
UI/UX polish
- Error messages are clearer and quieter
- Placement spam no longer spams “Tile occupied” if the spot is already yours
[screenshot: updated level selection modal appearing immediately after purchase at 53f89d7]
[screenshot: smaller auto-fading error notification during a match at a203893]
What’s Still Broken
- We’re still watching for rare edge cases where UI state momentarily desyncs during heavy spam (lots of rapid placements/undo). It should recover, but if you see it linger, let us know with your match ID.
- If your connection is flaky, temp placements might hang longer than expected before resolving. We’re tightening the retry logic next.
Under the Hood
Contract stability and performance
- Split the main match contract into focused libraries
- Actions, Views, Levels, Players, and State are now separate
- Keeps us under size limits and makes reasoning about logic simpler
- Minimal optimizer (1 run) is now enabled
- This configuration removed random memory/state corruption we saw with no/aggro optimization
- Those surprise “Not in match”/“Tile occupied” errors should be gone in normal play
- Gas estimation with a 20% buffer across all transactions
- Fewer out-of-gas hiccups mid-match
Developer quality-of-life
- Clearer transaction errors so it’s easier to tell what went wrong
- Added an
isTileOccupied
debug read to verify tile state - Removed unused features to trim surface area
- Comprehensive tests updated to match the new contract layout
- Ignored local trace files to keep the repo clean
Queue execution model
- Process up to 4 concurrent transactions
- Immediate pending-state marking removes re-click spam issues
- Promise handling cleaned up so exceptions don’t leak past try/catch
What’s Next
- PvP balance pass on early-game gold flow and low-cost tower rushes
- Matchmaking tuning to land fairer duels faster
- More tower synergy visibility in the Wiki (combos, counters, map notes)
- Performance: tighter client prediction for placements and lighter UI updates
- Bot practice improvements so new players can learn match pacing safely
If you still hit weird placement errors or see a modal pop back open, drop a note with steps and your match ID. It helps.
[screenshot: multiplayer battle with in-game wiki open during pre-match at 275b09f]