Period: December 15, 2025 Total Commits: 10
Hey — here’s what we’ve been working on today. The headline items are a smarter bot builder for non-road maps and smoother replays. We also cleaned up some UI in the editor and fixed a couple of long-standing replay edge cases.
What’s New
-
Bot maze-building on non-road maps
- We added a MazePlanner so bots can actually construct usable tower mazes instead of random clumps.
- Defensive bots use a spiral plan; more aggressive bots lay rows to pressure faster.
- Paths are validated every step so mazes never block all routes to castles.
- Towers that are supposed to sit on the walkway (like spikes and wind) now place on paths, not walls.
- Water tiles are respected across the planning chain.
- Impact: practice matches feel more like real players. You get real pathing puzzles without cheesy hard blocks.
[screenshot: bot-built spiral maze on a non-road map at e004532]
-
Replays render smoothly at 60 FPS
- We interpolate between 10 Hz game ticks so units and projectiles no longer “jump” between positions.
- Live playback now advances cleanly frame-to-frame after each processed tick, and scrubbing resets interpolation so things don’t wobble.
- Impact: way easier to read fights, see kiting lines, and study tower focus behavior.
[screenshot: replay viewer showing smooth unit paths at 60 FPS at 5e92a0d]
-
Cleaner Map Settings workflow
- Map settings moved out of the Initial State panel into a dedicated modal with the essentials: map name, mode, wave interval, dimensions, tileset, layout, and multiplayer options.
- Impact: faster setup for competitive maps and fewer buried options.
[screenshot: new Map Settings modal with game mode and wave controls at af6ee85]
What Got Fixed
-
Replays and timeline scrubbing
- Resetting internal registries while scrubbing eliminates duplicated entities after going back and forth in time.
- We now process the first tick correctly so opening actions (like unit selection) aren’t missing on playback.
- Fixed a playback animation loop issue that sometimes caused stutters after scrub.
- Increased replay history capacity to two hours so longer games can be reviewed without gaps.
- Impact: scrub freely without breaking the sim; long PvP matches are fully reviewable.
-
Replay data integrity and init
- The replay history API now includes the map, and the viewer applies it before rendering spawn areas, roads, and castles. No more mismatched terrain in replays.
- Dimension detection works for single-board FFA.
- Spawn area creation won’t error if the sim isn’t ready yet.
- Player initialization uses the correct field so gold, income, and the tab list match reality.
-
Goldflow overlay in single-board mode
- We corrected how ownership is determined so both perspectives render meaningfully on the same board.
- Impact: heatmaps now correctly show where the enemy’s minions are actually moving, which helps read lanes and adjust tower placements mid-match.
-
Non-road map polish
- Removed an old single-column placement restriction so bots can use the full width on single-board maps.
- Fixed grass/doodad rendering on the Hunters map so it doesn’t look barren on sparse grass layouts.
Under the Hood
-
Rendering and timing
- The renderer gets explicit tick boundaries during live playback, which made the 60 FPS interpolation behave predictably instead of occasionally drifting.
- This also reduced frame hitching when scrubbing back into live play.
-
Dev workflow and ports
- The default dev command now spins up the monitor (backend APIs + UI) instead of bots. Bots are still available on a separate command.
- We resolved a local port conflict by moving the dev UI to 3330 and proxying API calls cleanly. No changes needed for deployment scripts.
-
Editor UX tidy-up
- Initial State is slimmer and focused on message, gold/income, and unit selection. All the map knobs live in the new modal so you don’t have to hunt across panels.
That’s the lot for today. Replays should be much nicer to watch, bots are less goofy on custom layouts, and the editor is cleaner. If you spot bots accidentally blocking paths or see jitter after a long scrub, send a clip and we’ll dig in.