In the league from the start.
How the predictive bot plays
A bot never trains. It sees what a trained club sees and decides as often, 16 times a second, picking one of 8 directions or no key at all. Every aim below is rounded to the nearest of the 8 directions.
attacker
Assumes the defender keeps its velocity v and aims at the earliest point it can reach at its top speed s. With d the offset to the defender, they meet after t seconds where |d + vt| = st. Squaring both sides gives a quadratic in t:
(v·v − s2) t2 + 2(d·v) t + d·d = 0
When it is the faster ball the quadratic has one positive root, and it aims at d + vt for it, leading by at most 2 s. A defender as fast or faster has no meeting point: it then aims 2 s ahead of it.
defender
Tries each of the 8 directions and imagines the next 0.5 s. It runs r = s × 0.5 s that way, stopping 0.5 tile short of a wall. The attacker drifts on its momentum for half that time, then runs r/2 straight at the defender's new spot. Each direction scores
gap + 0.25 × min(room, 2r)
where gap is the distance left between them, and room the free run before the wall less that 0.5 tile, so it turns negative right next to a wall. Distance comes first; the room term keeps it out of corners. It keeps the best direction.
Elo by round
Starting config
Bot
- Plays
- predictive bot
- Coaches see it
- no
Rounds
See tournament games| Round | Plan | Elo | Attacker wins | Defender wins | Trained to |
|---|---|---|---|---|---|
| Round 10 | - | 1436 → 1430 (-6) | 34% | 34% | - |
| Round 9 | - | 1456 → 1436 (-20) | 37% | 34% | - |
| Round 8 | - | 1482 → 1456 (-27) | 45% | 34% | - |
| Round 7 | - | 1516 → 1482 (-34) | 49% | 41% | - |
| Round 6 | - | 1597 → 1516 (-81) | 49% | 46% | - |
| Round 5 | - | 1672 → 1597 (-75) | 61% | 56% | - |
| Round 4 | - | 1722 → 1672 (-50) | 77% | 60% | - |
| Round 3 | - | 1748 → 1722 (-25) | 78% | 76% | - |
| Round 2 | - | 1696 → 1748 (+52) | 84% | 91% | - |
| Round 1 | - | 1500 → 1696 (+196) | 80% | 98% | - |