Daily Dev Update: Smarter Bots, Cleaner Onboarding - January 8, 2026
Period: January 8, 2026
Total Commits: 10
Hey, here’s what we’ve been working on today. The big items are bot behavior getting a real shake-up, better onboarding flow with clearer guidance, visible player levels in the lobby, and some targeted fixes across tutorial and input. Nothing flashy—just steady iteration.
What’s New
Bots with personality (and randomness)
We’ve moved bots off a rigid script and into a system that mixes personality preferences with a bit of chaos. The goal was simple: make practice matches less predictable and closer to how people actually play.
- Decision weights now include a small random range (0–6) layered over personality multipliers
- Upgrade chances scale with how many units you’ve got on the field (more units = upgrades matter more)
- Early-game bonuses are tied to each bot’s preferences to vary openers
- All bonuses get multiplied by a small per-decision variance (0.5 + random) to prevent repeatable patterns
What this means in matches: expect different openers, more varied tower/minion timing, and fewer “same game every time” loops. It’s getting closer to human-like flow, with the occasional weird choice still slipping through.
Onboarding that tells you what’s coming
We added pre-skirmish info screens before each onboarding match. You’ll see a clear summary, a blue Continue button, and a red Return to Main Menu if you want to bail. It sets expectations and cuts down on “what is this mode?” confusion.
- Clear messaging per match (1v1, 2v2, 3v3)
- One-tap exit back to the main menu if you’re not ready
- Analytics to see where players bounce so we can tighten the flow
A visual guide for tutorial steps
The tutorial can now highlight important areas with a pulsing yellow glow. It’s meant to be obvious without being annoying, so you’ll see it pop in when a step needs your attention. We made sure it sticks around even when the scene refreshes.
1v1 onboarding tweaks (and a small input change)
We loosened up the first skirmish so it teaches the color wheel weakness system without overwhelming you.
- The enemy bot only picks minions that are weak to the towers you’ve unlocked
- No flying minions in 1v1 onboarding
- Pause key for offline games is now P (Escape deselects instead)
If you’ve been hitting Escape to pause, this will feel different at first. It’s more consistent with how selection/deselection works elsewhere.
Lobby shows player levels
Player levels are now visible in the multiplayer lobby. You’ll see a small level badge next to each name, plus a clearer count in the initial unit selection header.
Bigger onboarding maps and a 2v2 map experiment
Onboarding maps got a size bump to give you more breathing room while learning. We also set up an experiment for a 2v2 map variant to compare layout flow. Nothing you need to do—just play and we’ll watch how it performs.
What Got Fixed
- Fixed an auth rate limiting bug that was clamping legit requests in some cases
- Tutorial victory screen now consistently shows a Continue button and actually completes the tutorial flow
- Gold display updates correctly during the tutorial (it wasn’t always refreshing at the right times)
- Level up modal got a stable height to avoid weird scroll behavior
- Step progression bugs addressed (a stale handler and an unlock check that missed edge cases)
These were mostly small paper cuts, but they add up when you’re trying to finish a tutorial or get through flows smoothly.
Under the Hood
- Tutorial highlight system runs through the renderer with a custom pulsing glow and is resilient to scene clears by rebuilding the mesh each frame if needed
- The tutorial step logic got some guardrails: disabled buttons at certain steps, consistent gold staging, and a safer progression handler
- Level display in lobbies required adding a level field across server/client and sending it on lobby create/join
- If you’ve unlocked all units, the level-up flow now skips the unit selection step automatically and finishes cleanly
- We added an analytics event when players exit from pre-skirmish screens to track friction points
Notes and Expectations
- Bot play is much less predictable now. That’s the point, but you might see an odd choice here and there. We’ll keep tuning the weights.
- Input change to P for pause is intentional. If it trips you up, give it a few rounds—Escape to deselect is consistent across the board and reduces accidental pauses.
- Thanks for the reports on tutorial flow issues. Several fixes today came straight from those notes.
Try it out if you want. If something feels off, tell us where and when it happened—we’ll keep tightening the screws.