README

I couldn’t tell if my bot was actually improving

Drekken

I pushed the Bayesian network update feeling untouchable. I was certain this was the feature that would push my bot to the next division. Then I woke up, checked my match history, and watched my win rate plummet.

My heart sank right into my shoes.

It’s a brutal feeling to build something you know is smart and watch the ladder treat it like it’s completely stupid. Every bot builder hits this wall. You ship a massive update, your bot starts bleeding wins, and you’re left staring at the screen with absolutely no idea if your feature’s broken or if you’re just looking at the wrong data.

When we talked about getting your debug information out of the terminal, the goal was getting clear eyes on a single game. But “better” doesn’t live in a single match.

If you only watch individual replays, you’ll never know if an update actually improved your bot. You’ll just know what happened in the matches you happened to click on. To know if you’re making real progress, you have to zoom out and look at the aggregate.

You need more than the scoreboard.

Most builders track their overall win rate and stop there. That number tells you if you’re winning, but it’s completely useless for telling you why you’re losing. Without the “why”, a dropped win rate is a problem with no handle. You’re left guessing whether to tweak a threshold or scrap an entire feature.

To stop guessing, your telemetry needs to answer three questions at three different zoom levels:

  1. Is the bot getting better? That’s your health check across versions.
  2. Where is it weak? That’s your diagnosis, slicing your win rate by matchup or map.
  3. What went wrong right here? That’s your postmortem event log for a specific loss.

When my win rate tanked after shipping that Bayesian network, the aggregate scoreboard just looked like a massive failure. But when I sliced the data by strategy, the diagnosis jumped off the screen. My bot was misclassifying macro games as cheese. The network was working perfectly. My classification labels were causing the panic. I only caught that because I could see the trend across my matchups.

Data without a decision is just hoarding.

Collecting all this telemetry only pays off if you close the loop. Form one hypothesis. Change exactly one thing. Run enough games to beat the noise. You need 20 to 50 games to see a real trend, not just an hour on the ladder. Once you have the numbers, make a hard decision to keep it, revert it, or follow up.

If it didn’t move the needle, kill the code. Don’t carry dead weight just because you spent all weekend writing it.

video preview

If you’re stuck guessing if your bot is getting better over time, I did a workshop on adding telemetry to take the guesswork out of it.

⌨️ Next Commit

Just get one game on the record. Drop a BOT_VERSION constant into your bot’s code. At the end of the next match, print a single line with the result, the matchup, the map, and the game length. Pipe that to a file with python run.py > game.log and check that it landed. That is your very first piece of telemetry.

May the Bugs Be Ever In your Favour🪲

Email Preference:
Unsubscribe | Update your profile | 600 1st Ave, Ste 330 PMB 92768, Seattle, WA 98104-2246