https://github.com/pokemon-labs/hoenn
The README explains the interface and accuracy claims and provides a one-liner to compile and run the example program. I would go so far as to say its basically perfect as far as RL is concerned. It does 2.3 or 2.0 million updates/second (chance vs log mode) on my modest laptop.
Simulator dev is hard work but the recent bot projects all created their own sim and have shown that agents are very good at it. I spent a week and a half's usage of the Claude Pro plan using Opus 5.5 to make this. It was fairly painless and I suspect quite a bit cheaper that other attempts ($7.50 ??). If I could do it manually it would have taken me at least a year, and I'm not even sure I could do it. Here's what I did:
- Copy libpkmn as much as possible. Its a very fast and showdown accurate sim for gen 1. It's design is very well thought out and its extensively documented. Many difficult design decisions were already made for me.
- Start by defining data (species/items/move effect flags/etc) and turn frame (the general layout of the update function) using the pret/pokeemerald decompilation.
- Plenty of discussion before any mechanics were written. Outlining the use cases, naming tricky and important mechanics (e.g. turn ending, sleep talk) explicitly, and asking Claude to think of pitfalls and ask for my decisions before hand
- Design a suite of tests ahead of time and use those to guide development as mechanics are implemented. There were basically no regressions during development (where fixing/adding one thing breaks another)
- No subagents, have it stop frequently for user to make judgement calls. Clear context frequently.
I plan to use this to implement Ataraxos, and Claude should be able to mirror my existing IS-MCTS work in RBY over to ADV seamlessly. I am sharing this because I am pleased with the results and it can be used in just about any RL/Bot setup. I also had Claude list differences between Cart and Showdown in docs/ENGINE.md
The README explains the interface and accuracy claims and provides a one-liner to compile and run the example program. I would go so far as to say its basically perfect as far as RL is concerned. It does 2.3 or 2.0 million updates/second (chance vs log mode) on my modest laptop.
Simulator dev is hard work but the recent bot projects all created their own sim and have shown that agents are very good at it. I spent a week and a half's usage of the Claude Pro plan using Opus 5.5 to make this. It was fairly painless and I suspect quite a bit cheaper that other attempts ($7.50 ??). If I could do it manually it would have taken me at least a year, and I'm not even sure I could do it. Here's what I did:
- Copy libpkmn as much as possible. Its a very fast and showdown accurate sim for gen 1. It's design is very well thought out and its extensively documented. Many difficult design decisions were already made for me.
- Start by defining data (species/items/move effect flags/etc) and turn frame (the general layout of the update function) using the pret/pokeemerald decompilation.
- Plenty of discussion before any mechanics were written. Outlining the use cases, naming tricky and important mechanics (e.g. turn ending, sleep talk) explicitly, and asking Claude to think of pitfalls and ask for my decisions before hand
- Design a suite of tests ahead of time and use those to guide development as mechanics are implemented. There were basically no regressions during development (where fixing/adding one thing breaks another)
- No subagents, have it stop frequently for user to make judgement calls. Clear context frequently.
I plan to use this to implement Ataraxos, and Claude should be able to mirror my existing IS-MCTS work in RBY over to ADV seamlessly. I am sharing this because I am pleased with the results and it can be used in just about any RL/Bot setup. I also had Claude list differences between Cart and Showdown in docs/ENGINE.md
Last edited: