Hi all,
I had two goals with this project. The first, is to create a tool that can further human understanding of fundamentally sound VGC play. The second, is to show that an engine can be built on a hobbyist budget, which can top the VGC OTS ladder.
Ladder state on 2026-09-28, approximately 19:18 UTC.
Nessie is an engine, and a game analysis tool, for VGC Regulation M-C Open Team Sheet play. Its evaluator, a neural net, was trained on ~20 hours of self-play on my M4 Mac Mini, plus $120 of cloud-compute. It has approximately 1.5M parameters. The total number of self play games was approximately 375k. Hardware use for laddering sessions was one CPU core of the M4 Mac Mini, no GPU resources. The teams used the for laddering sessions that culminated in (briefly) taking the #1 spot were formed from the open team sheets from Baltimore Regional, all teams that went 6-2 or better, with some imputed Stat Points. The engine perceived itself to have a small disadvantage at team preview, on average (roughly 48-52).
Nessie is trained on a variant of the game where there is nearly no hidden information. Stat points are public information, and after the leads and reserves have been selected, they are made public to the opponent. A very crude harness allows it to play the ladder format, but it does not make the best use of hidden information.
Nessie's search begins with a double-oracle, seeded from a guess (produced by the net) of the most likely move of each side. For each choice joint action of each player, we branch on important chance events (rolls that can KO, crits, secondary effects, etc), and enumerate the possible outcomes, with their probabilities. We then evaluate these leaves, and sumproduct to get the cell value, then we solve the matrix game implied by these cells, to get equilibrium strategies for each player. We then deepen and refine this search by expanding and solving leaves of our root solve, ordered how much we expect solving them might change our root value, approximately the square of the chance we reach the leaf, multiplied by the entropy of the static eval of the leaf. The motivation here is that the KL-divergence of a the static eval, to the depth-1 search value, was observed to be approximately proportional to the entropy of the static eval. There's a little more to this search (we can also investigate some apparently-off-equilibrium moves if their regret is not high), but this is the key idea. Once we have a believed equilibrium, play just samples from it. Nessie makes no attempts to do exploitative play.
In many endgames (2v2 or less), Nessie can effectively solve the game, its search value consisting ~entirely of terminal nodes, and agreeing within ~0.5% or so of a strict solver (which enumerates every damage roll) that I wrote.
Nessie has many auxiliary heads, predicting things about the future state of the game. Future weather, terrain, which pokemon will deal how much damage to which other pokemon, the next moves of each player, how long each pokemon will survive, how long the game will last, how much entropy will collapse on the next turn, and so on. Half of Nessie's training games are played between teams of pokemon that have had their stats, ability, typing, moves, or items mutated. This creates a greater diversity in the data, and I think encourages smoothness in the nets learning. The self-play games are from search-guided play, so the labels are high quality. I credit these three choices with the sample efficiency of learning, however the tradeoff of search-play for training data is that producing the data is much more expensive.
Nessie is by no means a finished product, there are many areas of research that continue to yield playing strength gains.
I also made a tool, meant to be a template for the VGC equivalent of lichess analysis board and position editor, with an evaluation bar. This gives a visual demonstration of how Nessie thinks about a position. You can select moves for each side, choose the results of random outcomes, and analyse each position. I plan to eventually release this to the public, possibly a few days after the end of Regulation M-C, possibly sooner if the community is ready for them. I'm mindful of the adverse impact these tools could have on the integrity of the game, however I think their power as a teaching tool outweighs this concern. A dedicated person can build these tools for themselves or their friends today, so ignoring them is not a solution.
Tools like this are the ultimate goal of the project, to help people learn to play better, and understand the game on a deeper level.
Nessie123 is current accepting challenges for VGC Bo3 M-C matches, it's playing with a team pool of size approximately 300.
I'm happy to answer any questions and respond to any concerns.
I had two goals with this project. The first, is to create a tool that can further human understanding of fundamentally sound VGC play. The second, is to show that an engine can be built on a hobbyist budget, which can top the VGC OTS ladder.
Ladder state on 2026-09-28, approximately 19:18 UTC.
Nessie is an engine, and a game analysis tool, for VGC Regulation M-C Open Team Sheet play. Its evaluator, a neural net, was trained on ~20 hours of self-play on my M4 Mac Mini, plus $120 of cloud-compute. It has approximately 1.5M parameters. The total number of self play games was approximately 375k. Hardware use for laddering sessions was one CPU core of the M4 Mac Mini, no GPU resources. The teams used the for laddering sessions that culminated in (briefly) taking the #1 spot were formed from the open team sheets from Baltimore Regional, all teams that went 6-2 or better, with some imputed Stat Points. The engine perceived itself to have a small disadvantage at team preview, on average (roughly 48-52).
Nessie is trained on a variant of the game where there is nearly no hidden information. Stat points are public information, and after the leads and reserves have been selected, they are made public to the opponent. A very crude harness allows it to play the ladder format, but it does not make the best use of hidden information.
Nessie's search begins with a double-oracle, seeded from a guess (produced by the net) of the most likely move of each side. For each choice joint action of each player, we branch on important chance events (rolls that can KO, crits, secondary effects, etc), and enumerate the possible outcomes, with their probabilities. We then evaluate these leaves, and sumproduct to get the cell value, then we solve the matrix game implied by these cells, to get equilibrium strategies for each player. We then deepen and refine this search by expanding and solving leaves of our root solve, ordered how much we expect solving them might change our root value, approximately the square of the chance we reach the leaf, multiplied by the entropy of the static eval of the leaf. The motivation here is that the KL-divergence of a the static eval, to the depth-1 search value, was observed to be approximately proportional to the entropy of the static eval. There's a little more to this search (we can also investigate some apparently-off-equilibrium moves if their regret is not high), but this is the key idea. Once we have a believed equilibrium, play just samples from it. Nessie makes no attempts to do exploitative play.
In many endgames (2v2 or less), Nessie can effectively solve the game, its search value consisting ~entirely of terminal nodes, and agreeing within ~0.5% or so of a strict solver (which enumerates every damage roll) that I wrote.
Nessie has many auxiliary heads, predicting things about the future state of the game. Future weather, terrain, which pokemon will deal how much damage to which other pokemon, the next moves of each player, how long each pokemon will survive, how long the game will last, how much entropy will collapse on the next turn, and so on. Half of Nessie's training games are played between teams of pokemon that have had their stats, ability, typing, moves, or items mutated. This creates a greater diversity in the data, and I think encourages smoothness in the nets learning. The self-play games are from search-guided play, so the labels are high quality. I credit these three choices with the sample efficiency of learning, however the tradeoff of search-play for training data is that producing the data is much more expensive.
Nessie is by no means a finished product, there are many areas of research that continue to yield playing strength gains.
I also made a tool, meant to be a template for the VGC equivalent of lichess analysis board and position editor, with an evaluation bar. This gives a visual demonstration of how Nessie thinks about a position. You can select moves for each side, choose the results of random outcomes, and analyse each position. I plan to eventually release this to the public, possibly a few days after the end of Regulation M-C, possibly sooner if the community is ready for them. I'm mindful of the adverse impact these tools could have on the integrity of the game, however I think their power as a teaching tool outweighs this concern. A dedicated person can build these tools for themselves or their friends today, so ignoring them is not a solution.
Tools like this are the ultimate goal of the project, to help people learn to play better, and understand the game on a deeper level.
Nessie123 is current accepting challenges for VGC Bo3 M-C matches, it's playing with a team pool of size approximately 300.
I'm happy to answer any questions and respond to any concerns.










