Hey there,
after building the Showdown Replay Scouter, I always knew that there had to be more, specifically with a single replay and what you can learn from it.
I always wanted to take a replay and figure out what would've happened if I had played differently.
So, I tried in 2022 and .... I failed. I failed because while the @pkmn libraries are amazing, the time wasn't right for me to put that kind of investment into such a project.
However, now in 2026 times have changed: with AI coding tools, building software that was unfeasible or too complex before is suddenly becoming possible, which is why I gave it another shot. And to be transparent: a lot of the code was written with AI assistance and my guidance, otherwise this would not have been possible for one person.
After months of building, I present to you:
PS Dashboard!
What is this?
PS Dashboard is a tool that allows you to take a replay, analyze the used teams, and branch & play from any turn you like. With this it gives you the freedom to explore all kinds of "What if I'd gone Garchomp here" scenarios and practice on your own replays. In addition, you are supported by a custom-made engine that judges every turn and provides ideas on what the best turn could've been. This engine additionally offers a game report that shows the highlights it calculated, including how much of the game was decided by the players and how much by luck. If you are not interested in playing yourself, you can also just let the engine do it (beware of the results though).
It works with Singles, Doubles, VGC and Pokémon Champions, and you can load pretty much any replay: links, ids, private replays, smogtours replays or a downloaded replay file. If you find a cool line, you can share your branch as a link, so feel free to post your "what ifs" in this thread!
If you want to see it in action right away, have a look at LordEnz vs. Dflo (WCOP 2021), hit "Analyze game" and click on any point in the graph.
What is the state of this project?
This project is now in public beta. I have been working on this project on my own for half a year on / off and got some expert feedback, but one man is not enough to build such a thing. I'm very interested in hearing your feedback and also getting this out publicly, since I expect that such a tool probably already exists, but only for a small circle of people, and I want to make sure the playing field stays even. Same reason why it's meant for studying your finished games, so please don't use it during a live tournament or ladder game.
If you find a wrong set, a position that doesn't match the replay or an engine call that makes no sense, just post the replay link and the turn here or use the "Report issue" button in the app. It lets you download the state of the app and opens a prefilled GitHub issue where you can attach it, so I can see exactly what you saw.
How does the branching work?
The branching engine takes the current state of the replay and tries to re-create it with the @pkmn libraries as accurately as possible, down to PP and disabled moves. Then all options are offered and the game is played normally through the @pkmn libraries. You are able to control hax like crits, flinches, etc.
How does the engine work?
The engine is a WIP self-built engine that can evaluate battle states and uses methods like MCTS to try and foresee the battle's future. Its win chances are calibrated on real games, mostly Gen 9 OU, Doubles OU and VGC. This was honestly a lot more work than I hoped, especially if you have to account for EVERY game format, so it is far from perfect. Just don't rely on it and see it as a potential helper and then you'll be fine. If you want to know what exactly it calculates, have a look at EVALUATION.md.
With all the bots popping up, a bot provider can already plug their bot-engine into PS Dashboard: it talks to engines over a small HTTP protocol (ENGINES.md), and the parser and the engine are also on npm (@fulllifegames/replay-core and @fulllifegames/eval-engine). So if any bot provider is reading this and interested, feel free to submit a PR or file an issue on GitHub!
How does the set determination work?
To determine the sets of Pokémon in a team, I used a combination of what I learned from the Showdown Replay Scouter, the Smogon Stats, the Smogon sets and stat inference from the damage in the replay. It's a lot of back and forth here, and again it's sadly not perfect since the stats only have the distribution and not how the moves work together, but it's a rough estimate of reasonable choices. Every wrong choice you see can be edited by yourself (or imported as a Showdown team), if you want a more accurate picture!
I heard enough, where do I get it?
I got you, here is the code: https://github.com/FullLifeGames/PSDashboard
And here is the tool itself: https://fulllifegames.com/Tools/PSDashboard/
after building the Showdown Replay Scouter, I always knew that there had to be more, specifically with a single replay and what you can learn from it.
I always wanted to take a replay and figure out what would've happened if I had played differently.
So, I tried in 2022 and .... I failed. I failed because while the @pkmn libraries are amazing, the time wasn't right for me to put that kind of investment into such a project.
However, now in 2026 times have changed: with AI coding tools, building software that was unfeasible or too complex before is suddenly becoming possible, which is why I gave it another shot. And to be transparent: a lot of the code was written with AI assistance and my guidance, otherwise this would not have been possible for one person.
After months of building, I present to you:
PS Dashboard!
What is this?
PS Dashboard is a tool that allows you to take a replay, analyze the used teams, and branch & play from any turn you like. With this it gives you the freedom to explore all kinds of "What if I'd gone Garchomp here" scenarios and practice on your own replays. In addition, you are supported by a custom-made engine that judges every turn and provides ideas on what the best turn could've been. This engine additionally offers a game report that shows the highlights it calculated, including how much of the game was decided by the players and how much by luck. If you are not interested in playing yourself, you can also just let the engine do it (beware of the results though).
It works with Singles, Doubles, VGC and Pokémon Champions, and you can load pretty much any replay: links, ids, private replays, smogtours replays or a downloaded replay file. If you find a cool line, you can share your branch as a link, so feel free to post your "what ifs" in this thread!
If you want to see it in action right away, have a look at LordEnz vs. Dflo (WCOP 2021), hit "Analyze game" and click on any point in the graph.
What is the state of this project?
This project is now in public beta. I have been working on this project on my own for half a year on / off and got some expert feedback, but one man is not enough to build such a thing. I'm very interested in hearing your feedback and also getting this out publicly, since I expect that such a tool probably already exists, but only for a small circle of people, and I want to make sure the playing field stays even. Same reason why it's meant for studying your finished games, so please don't use it during a live tournament or ladder game.
If you find a wrong set, a position that doesn't match the replay or an engine call that makes no sense, just post the replay link and the turn here or use the "Report issue" button in the app. It lets you download the state of the app and opens a prefilled GitHub issue where you can attach it, so I can see exactly what you saw.
How does the branching work?
The branching engine takes the current state of the replay and tries to re-create it with the @pkmn libraries as accurately as possible, down to PP and disabled moves. Then all options are offered and the game is played normally through the @pkmn libraries. You are able to control hax like crits, flinches, etc.
How does the engine work?
The engine is a WIP self-built engine that can evaluate battle states and uses methods like MCTS to try and foresee the battle's future. Its win chances are calibrated on real games, mostly Gen 9 OU, Doubles OU and VGC. This was honestly a lot more work than I hoped, especially if you have to account for EVERY game format, so it is far from perfect. Just don't rely on it and see it as a potential helper and then you'll be fine. If you want to know what exactly it calculates, have a look at EVALUATION.md.
With all the bots popping up, a bot provider can already plug their bot-engine into PS Dashboard: it talks to engines over a small HTTP protocol (ENGINES.md), and the parser and the engine are also on npm (@fulllifegames/replay-core and @fulllifegames/eval-engine). So if any bot provider is reading this and interested, feel free to submit a PR or file an issue on GitHub!
How does the set determination work?
To determine the sets of Pokémon in a team, I used a combination of what I learned from the Showdown Replay Scouter, the Smogon Stats, the Smogon sets and stat inference from the damage in the replay. It's a lot of back and forth here, and again it's sadly not perfect since the stats only have the distribution and not how the moves work together, but it's a rough estimate of reasonable choices. Every wrong choice you see can be edited by yourself (or imported as a Showdown team), if you want a more accurate picture!
I heard enough, where do I get it?
I got you, here is the code: https://github.com/FullLifeGames/PSDashboard
And here is the tool itself: https://fulllifegames.com/Tools/PSDashboard/
Attachments
Last edited:










