with the sealed kernel design completed there was really only 1 thing to do: full send.
i picked a point on the twin peaks map that had a variety of navigation challenges, and held some importance: hill 201 – one of the static flag spawns. the result? pretty much a first-generation roomba. even though the route planner was doing its job, there were several major challenges that needed solving:
- the line that the bot was to traverse was drawn too close to the walls (not the primary problem, but it set up a challenging run)
- no obstacle avoidance between waypoints – purely pursuit
- recovery was a series of bigger nudges, not a rethink (this is where it started to act like a roomba)
all things considered, at this point i was treating this as a success. we managed to create a synthetic client that authenticated to the game server, logged into the game, got themselves out of spectator mode and into the game, and then navigated through the initial spawn portal into the game world (this part also had similar nav problems as described above – for now).
before i get into what was done, i’ll let the results speak for themselves:
these issues were something we could solve by replacing the nudging with a brain – like going from that roomba to a roborock with lidar. so we gave the bot the ability to reroute, allowing for real sidesteps.
we then did some testing on the shape of the player collision body to figure out how much tolerance we need on the corners for the route, and then we gave the route some more slack from the walls.
that got us much closer, and from there we fine tuned. the great thing about vibe coding is that you can create tooling on the fly even when you don’t precisely know what you want to measure against. i know what was wrong from an eye test – the bot didn’t have the movement precision a human player might have. infantry movement is heavily momentum based – fine tune movements happen through strafing and diagonal trajectory to avoid speed shedding. i don’t know how to embody that as rules, but i can have claude do that for me. we did a few instrumented runs where i described how and why i navigated the way i did, to form strafe capable embodiment for the bot.
there’s some fine tuning left to do, but this is a great starting point.