CQB: the episode 9 attacker

The attacker from episode 9 of A Million Tries ("The Kill House"): one AI operator that has to find and beat one defender in a dark house it has never seen. Built up over the episode, each run starting from the last: target practice against a dummy, then defenders that shoot back, then real rifles, health and reaction time (its last run: 157 million decisions against a hand-written defender and two trained ones).

Under the full rules (two flashbangs, 30-round magazines, health with wounds, 0.3 s for an aim to settle):

vs wins time runs out
the best trained defender (cqb-defender-ep9) 25% 19%
a hand-written defender watching its door 23% 17%
an older trained defender (d3) 42% 17%
a defender that wanders 60% 6%

It carries two flashbangs and never throws them: nine attempts to teach it (practice, evolution, a coach, copying a script) are the episode's story. A hand-written flash-and-enter script beats the same defender ~35%.

  • The game (CQB, "the kill house"): one attacker vs one defender in a house generated from a seed (3-6 rooms, doors, cover), in the dark: each sees only inside its weapon light (a 90° cone, 20 m) and hears footsteps, doors, shots and reloads through walls. 45 seconds; the defender wins if the clock runs out.
  • Sees (122-125 numbers): 24 distance lasers, the other one (if seen now, or where it was last seen and how long ago), the loudest recent footsteps / door / shot, itself, the two nearest doors, an 8 x 6 map of the house it has looked at, the clock, its flashbangs, its rifle (rounds loaded and carried, reloading, recoil), and with health on, its health and its aim. Nothing it couldn't see or hear.
  • Does: move forward/sideways and turn (3 numbers) and 5 switches (fire, open/close a door, run, throw a flashbang, reload), 10 times a second.
  • Brain: inputs -> 512 -> 512 (tanh) -> 3 + 5 (+ a value head used only in training). PPO, written from scratch in JAX. Its best guess (the mean, switches on above 0) is how it plays in the video.
  • Weights: model.safetensors, PyTorch layout (body.0.weight, ..., policy.weight); config.json has the game rules it was trained under (game) and its training settings.
  • Play against it in your browser: https://huggingface.co/spaces/amilliontries/beat-my-ai-cqb (episode 9's game).
  • Code, as the video used it: https://github.com/backstab319/a-million-tries/tree/episode-9 (the game keeps changing in later episodes; this tag doesn't). uv run games watch-cqb <brain> camper 100064 draws a round; eval-cqb reports one.
  • Every number below: 192 test houses it never trained in (100064-100255), not the ones used to choose this checkpoint.

From the YouTube channel A Million Tries: https://www.youtube.com/@amilliontries

Downloads last month
12
Safetensors
Model size
332k params
Tensor type
F32
·
Video Preview
loading