Can Pokemon A beat Pokemon B, and by how much? The battle simulator seeks to calculate and illustrate the answer to that question. It displays a timeline of what each Pokemon does, and how much damage they deal. While the simulator strives to paint as accurate a picture as possible, note that various factors may affect the outcome of an actual battle, such as Pokemon stats, latency, device performance, and human decision-making. We hope the simulator can serve as a helpful guide for real-world battles.

Below are details for how the battle simulator works.

Battle Rating

Battle Rating is a metric used to represent each battle's outcome. It is the backbone of PvPoke's rankings. The Battle Rating formula is:

Battle Rating = (500 x (Damage Dealt / Opponent's HP)) + (500 x (HP Remaining / HP))

In other words, a Pokemon gets up to 500 points for the percentage of HP it damages in battle and up to 500 points for the percentage of HP it survives with. Battle Rating has a hypothetical maximum of 1000 (victory with no damage taken) and a hypothetical minimum of 0 (loss with no damage dealt). Victories will always have a minimum Battle Rating of 500

Battle Rating is a way of measuring battles beyond simply "win" and "loss"; it may be valuable to know not only which Pokemon can win, but which can do so while sustaining the least amount of damage, leaving them in a better position for the next fight.

Pokemon Stats

A Pokemon's actual stats are a result of its base stats, IV's, and a CP multiplier (determined by level). The stats shown are a Pokemon's actual stats at the given CP or level. "Overall" is a product of the three stats and gives a general idea for performance, mostly useful for comparing Pokemon of the same or similar species.

By default, Pokemon have an IV combination that is the 64th best IV combination (sorted for stat product) using an IV floor of 5. Pokemon that are above level 35 to meet the CP cap have different default IV's to represent those found in lucky trades.

Move Selection

When using the auto select option, the simulator calculates which moves would be optimal in the current matchup. It does this in the steps below:

Sort Charged Moves by DPE (damage per energy) and select the best move for the "Main" Charged Move. Some Charged Moves deal a lot of damage but take longer to charge, while others charge quickly but deal less damage. DPE helps determine each Pokemon's most efficient move in the matchup. Sort remaining Charged Moves by damage per energy squared and select the best move for the "Secondary" Charged Move. Since this weighs moves by energy, fast-charging moves are more likely to be selected than slow ones. This method for selecting a Secondary Charged Move was chosen because the battle algorithm prioritizes fast Charged Moves over the Main Charged Move in certain scenarios, so this helps give Pokemon access to their faster attacks even if they aren't as efficient on paper as other options (e.g. Dragonite with Dragon Claw or Magneton with Discharge). Calculate TDO (total damage output) for each Fast Move and select the best option. TDO is simply the product of DPS (how much damage a Pokemon deals per second, on average) and how much time the Pokemon lasts in battle.

While this algorithm does its best to give each Pokemon the optimal result in battle, it does currently have a few pitfalls. First, TDO calculations don't take into account things like shields, or how many Charged Moves a Pokemon is actually able to use in its lifetime. This means a Pokemon may perform slightly better with a different Fast Move if shields are in play or if it faints before a certain threshold. Second, there may be edge cases where a certain move combination produces a better result than the one automatically selected due to damage hitting at specific times and in specific intervals. Know that auto selection will give you the best result the majority of the time, but don't be afraid to experiment with movesets for each matchup.

You can customize moves at any time. Pokemon are given two Charged Moves by default, but you can set this to "None" if you want, or even remove both Charged Moves if you want to see how a Pokemon performs with only its Fast Move.

Battle Algorithm

Pokemon GO's Trainer Battles take place in 0.5-second "turns", and the simulator increments through each of those turns while determining the best possible action for both combatants. To determine those actions, the simulator performs the following checks:

If the Main Charged Move is available, use it immediately. Use the Secondary Charged Move if: It would KO the opponent

The opponent has a shield

The opponent's next action would result in a KO If the opponent is using any Charged Move and shields are available, block it. If none of these are true, use the Fast Move.

This algorithm produces the following behavior:

Pokemon will use any move available if it would result in a KO. Pokemon will use any move available to deal the most possible damage before they feint. Pokemon will always shield themselves if possible. Pokemon will use their fastest Charged Move to remove an opponent's shields.

This behavior may not always represent human play or strategies, but it's intended to give each Pokemon the best result in the specific battle.

Simultaneous Actions & Knockouts

One nuance of Pokemon GO Trainer Battles is that actions occur simultaneously. Because of this, the battle simulator allows both Pokemon to take their action each turn even if one is technically fainted. Without this caveat, the first Pokemon in a simulated battle would have a distinct advantage simply because its moves are processed first.

This can result in a battle simulation where two Pokemon knock each other out simultaneously. In these scenarios, bear in mind that the outcome of an actual battle may vary and, in the case of simultaneous Charged Moves, is heavily dependent on which goes first.