dbbot

A neural network that plays TF2 dodgeball. It runs on a public server, it is not an aimbot, and you are welcome to go and beat it — that is what the server is for.

connect 0.0.0.0:27015 checking…

What this is

Dodgeball is a TF2 game mode where a homing rocket flies at you and you airblast it back. It is a clean control problem hiding in a silly game: one rocket, one decision, sixty-six times a second, and a human skill ceiling that took the community a decade to find.

The agent here learns from recorded human play and is measured against it. It sees what a player sees — positions, velocities, the rocket — and answers with a mouse movement and a set of buttons, once per tick. It runs on the game server's own thread, in about 1.6 ms per tick, with no access to anything a player could not see.

Two things are being measured, and they are not the same thing: whether it wins, and whether it plays like a person. It is easy to buy the first with behaviour no human would produce.

The data so far

Humans vs. the bot

Rounds where every human was on one team and every bot on the other. The bar is the share of those rounds the humans won; the whisker is a 95% Wilson interval, which is wide until a version has been played a few hundred times. Ignore any bar whose whisker crosses 50%.

What a round looks like

Recent rounds

Your own rounds

Type !dbme in chat on the server. It prints a 16-character code — a salted hash of your Steam ID, and the only thing that identifies you in the data. Paste it here to see your rounds. Anyone holding the code can see them, so it is yours to share or not.

What this server records

Recorded

  • Player positions, velocities and eye angles, every tick.
  • The buttons and mouse movement in every command your client sends.
  • Rocket position, velocity, target and deflection count.
  • Deflects, steals, hits, deaths and the round result.
  • Your connection settings — interp, update rate, latency — because lag compensation decides where a deflect actually lands.

Not recorded

  • Your name or your Steam ID. You appear only as a salted hash of it; the salt stays on the game server and is never published, so the hash does not go back to an account.
  • Chat or voice.
  • Anything at all outside this server.

Saying no

  • !dbdata off in chat stops the recording while you play. Not "excludes your rows" — the whole round log stops being written. You can keep playing.
  • To have past rounds deleted, send your !dbme code to the contact below.