Reinforcement Learning
Learns by trial and error to maximize reward (food + survival).
Six paradigms · one arena
Every agent here sees an identical 13-number view of the world and picks from the same eight directions. The only thing that differs is how its policy was learned. They were trained separately in Python, then dropped into one arena to forage, hunt each other, and race to level 10 — so the match is a controlled comparison of learning methods, not of hand-tuned behaviour.
Press Start and watch. Eat pellets to grow, swallow anything smaller than you, avoid anything bigger. First to level 10 — or the last one alive — takes the match.
—| Agent | Lvl | Score | Progress to 10 |
|---|
| Agent | Wins | Rate | Share |
|---|
No matches played yet.
One colour per paradigm, used consistently everywhere on this page — in the arena, the standings and the meters. Each was trained solo against food, prey and hazards before ever meeting the others.
Learns by trial and error to maximize reward (food + survival).
Copies an expert's state→action examples. Only as good as its teacher.
Learns a world model (predicts the next state), then plans one step ahead.
Trained on a few expert labels plus lots of pseudo-labeled data. Between imitation and RL.
A population of networks evolves over generations; the fittest reproduce with mutations.
No reward. Clusters food with k-means and heads to the best nearby cluster; flees threats.
Training happens offline in Python; the browser only runs inference. Nothing is fetched at runtime — the weights ship with the page.
Each paradigm learns solo in a small numpy arena. Training the whole roster takes about a minute — and training separately sidesteps the instability of multi-agent competitive RL.
Every learned policy is written to policies.json — network weights, or a config for the two heuristic agents.
The page imports those weights directly and runs the forward pass in a few dozen lines of plain JavaScript. No backend, no inference server, nothing fetched at runtime.
The browser's answers are checked against Python's on 400 random states, for all five networked agents, on every push.
One match is an anecdote. These are cumulative win rates over 300 seeded matches, run headlessly with the same engine this page uses.
| Paradigm | Wins | Share |
|---|---|---|
| SUP | 80% | |
| SEMI | 6% | |
| RL | 6% | |
| EVO | 4% | |
| UNS | 2% | |
| SELF | 1% |
Reproduce it yourself: node run_many.js --games 300 --seed 1
Imitation learning wins most games, and that is an honest finding rather than a bug. Copying a near-optimal expert is very hard to beat at a task that rewards both efficient foraging and opportunistic hunting — the expert already solved both.
It is also the sharpest lesson the arena teaches: a paradigm's ranking here says as much about the problem as about the method. Change the task so no expert exists to copy, and the ordering changes with it.
Random food, random starting positions and a touch of exploration noise still produce regular upsets from every other paradigm — which is what the seed controls are for.
?seed= reproduces it anywhere, bit for bit