Devlog 1
Built a strategy engine from scratch this stretch. The interesting part wasn’t the code, it was figuring out what the game actually rewards, because once I read the manual carefully the “obvious” strategy turned out to be wrong.
The 2026 game has two goals (suppression and extinguisher), both worth 1 point per ball. Looks symmetric. It isn’t. Only the suppression goal gets multiplied by your end-game climb, and the climb multiplier is shared across all three robots on your alliance (three robots at the top zone multiply your combined suppression total by 1.9). The extinguisher, meanwhile, is a shared global pot that all six robots including your opponents feed and all six receive. So feeding the extinguisher barely helps you win. The whole tool is built around surfacing that asymmetry, because it’s the thing that’s easy to get wrong by just reading the point values.
How it’s built: there’s a pure scoring engine (no UI, no network, no AI, just math) that I can actually test, sitting behind a React frontend that just renders its results. That separation meant I could later do a full visual redesign without touching a single line of the math. The engine composes a cycle (travel, intake, travel, deposit), reserves time for the climb, floors the number of full cycles that fit in 150 seconds, applies accuracy and reliability, and then runs the real scoring formula with the climb multiplier. Everything’s shown as arithmetic, not just a final number, so nobody has to take it on faith.
The trust gate is the part I’m most deliberate about. Before any result is shown as real, you pass a “verify and lock” screen that lists every scoring number in plain language next to what it means. Editing any value automatically un-verifies the config, and unverified results get stamped “do not trust” everywhere. This is because the entire engine is only as correct as the numbers I typed in from the manual, so one transcription error has to be catchable, not silent.
Two features I’m happy with. There’s an alliance screen where you change each robot’s climb zone and watch the shared multiplier move live, it makes the “coordinate your climbs” insight visible instead of theoretical (in my worked example, sharing the multiplier across the alliance instead of each robot climbing for only itself is worth about 94 points). And there’s an archetype comparison built specifically to settle a debate on my team: some people thought a storage bot feeding human players was a good plan. So I modeled three strategies through the same engine with a live slider for human-player speed. You can crank the human feed rate past anything physically plausible and the feeder strategy still loses, because its points are unmultiplied and shared. That’s a much better way to win an argument than just asserting it.
It’s a free static site on Cloudflare, 58 tests, no backend. Honest limitation I’m keeping visible: it models a robot in a vacuum, no defense, no congestion, no ball scarcity, so it’s for relative comparison and the two big decisions (climb or not, what to improve), not absolute predictions. Feed it measured cycle times from practice and it gets sharper, so thats what I’ll try to implement in the coming devlogs.
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.