Hi all. Since August 2026 I've been running MissingNo.Zero, a pure self-play reinforcement learning bot, on the random-battle ladders. If reached #1 in gens 1, 2, 4, 6 and 7.
More details: https://github.com/nickgreenquist/missingno-zero
Results
Background
I picked Showdown for a personal reinforcement learning project on July 25, before I knew much about the bot scene; the first bot I read up on was the first bot I read up on was Foul Play. Gen 1, my original goal, reached #1 66 days after I started this project as just an idea.
My starting recipe came from Wang's 2024 MIT thesis on gen 4 random battles.
Jaxcalibur
Like all of us here, I saw the Jaxcalibur thread; I first read its write-up on Sept 26. However, my gen 1 bots had been on the ladder since August, and the last one built before the write-up had reached #5. The write-up showed self-play PPO could reach #1 without search in training, so I dropped search from training (a dead end I had been trying) and adopted several of its ideas for the run that reached #1.
How it played
FAQ
Thanks to the staff for handling bot registration quickly, and to everyone who played it.
More details: https://github.com/nickgreenquist/missingno-zero
Results
- Gen 1: #1 on Sept 29 (peak Elo 1726)
- Gen 4: #1 on Oct 8 (peak 1738)
- Gen 6: #1 on Oct 16 (peak 1942)
- Gen 2: #1 on Oct 18 (peak 1558)
- Gen 7: #1 on Oct 24 (peak 1900)
- Gen 9: top 10, best #5 on Oct 25 (peak 2453)
Background
I picked Showdown for a personal reinforcement learning project on July 25, before I knew much about the bot scene; the first bot I read up on was the first bot I read up on was Foul Play. Gen 1, my original goal, reached #1 66 days after I started this project as just an idea.
My starting recipe came from Wang's 2024 MIT thesis on gen 4 random battles.
Jaxcalibur
Like all of us here, I saw the Jaxcalibur thread; I first read its write-up on Sept 26. However, my gen 1 bots had been on the ladder since August, and the last one built before the write-up had reached #5. The write-up showed self-play PPO could reach #1 without search in training, so I dropped search from training (a dead end I had been trying) and adopted several of its ideas for the run that reached #1.
How it played
- Every account has "bot" in its name (nickgen1rbrlbot, nickgen4rbrlbot, nickgen6rbrlbot, MissingNo.ZeroBot).
- Gens 1 and 4 played and reached #1 before Showdown had a bot policy, which arrived with its bot registry on Oct 13; staff then registered all four accounts.
- Gens 2 and 6 played as registered bots but before the bot opt-in went live on Oct 20, so the ladder matched them like any other account.
- Gens 7 and 9 came after the bot opt-in went live, so they only met players who had turned it on, and other bots.
- No chat, no fake delays, or anything that tried to make it 'look human'.
FAQ
- Will you release the code or weights? No, for the same reason as Jaxcalibur and others: with too many details, anyone could use an AI coding tool to quickly spin up a strong bot that ignores Showdown's bot policy.
- Will you run it again? Can I play it? No.
- How did you benchmark it before laddering? Against Foul Play: with its search, each #1 model beat Foul Play in 67-81% of games at a fixed search budget.
- Did it use any human data? No.
- Why gen 1, and why these gens? Gen 1 was the goal from the start: it's the generation I grew up with, and gen 2 is my other childhood favorite. I skipped gens 3, 5 and 8 for their low player counts.
- What did it train on? Gen 1 trained on one laptop in about 40 hours. Each later gen rented one GPU for a few days to speed things up, about $160-280 per gen.
- Did it use a GPU on the ladder? No. The network and all of its search ran on the laptop's CPU.
- Did you write your own battle engine? No. It used existing ones: Showdown's own simulator, pkmn/engine and poke-engine.
- Why didn't gen 9 reach #1? It peaked at #5. Jaxcalibur had already reached #1 there, so more money would only have bought a #1 that had been done before.
Thanks to the staff for handling bot registration quickly, and to everyone who played it.
Last edited: