GoBattleSim is a next-generation Pokemon GO Battle Simulator. Its most distinguishing feature is Multiplayer Parallel Battles. You can add up to 20 total players, with individual lineup(s) for each player. Not only that, GoBattleSim is highly open-ended. You can make up moves and Pokemon and test them out as you like. Last but not least, GoBattleSim has a flexible batch input scheme, which can save you a lot of time for running multiple sims while iterating through parameters.
This guide will walk through all the functionalities of GoBattleSim.
A player can have up to 5 parties. Each party consists of up to 6 Pokemon. The Copies input field tells GoBattleSim how many of the same Pokemon should be created for the party. The other Pokemon specification fields (Level, IVs, etc) are self-explanatory. Selecting "Attacker Basic" in the field to the right of the Pokemon will allow you to input the CP instead of level and IVs. The "No Dodge" setup is displayed by default when selecting the Solo Raid Quick Start, but you can also try "Dodge Charged".
You may adjust the Pokemon/Party/Player order by dragging the section.
You may copy and paste the specifications of a Pokemon.
If you wish to add a new player, just click the located at the top of the page.
There are three Battle Mode: Raid, Gym, PvP.
In a Raid battle, there should be only one player from the opposite team. That player should have only one party. The party should consist of only one Pokémon (which is the Raid Boss) and set revive to false. The Pokémon of that party should have Raid Boss as its role and Defender AI as its strategy.
The time limit should be set to either timelimitRaidMs or timelimitLegendaryRaidMs.
In a Gym battle, each player should have only one party. There should be only one player from the opposite team – the AI player. The AI player’s party consists of 1 to 6 unique Pokémon. The AI player’s party should its revive to false. All Pokémon of that party should have Gym Defender as its role and Defender AI as its strategy.
The time limit should be set to timelimitGymMs.
There is no validation requirement on either team.
If Dodge Bug is set to “Present”, then the Pokemon won’t attempt to dodge if the un-dodged damage would KO it.
Repeat tells GoBattleSim how many random simulations should be performed for the same configuration.
Aggregation tells GoBattleSim how to aggregate the multiple random sims for the same configuration:
If set to “Enumerate”, each random sim will be listed out.
If set to “Average”, arithmetic averages of selected metrics will be taken to represent a group of random sims.
After you input everything correctly, click GO to let GoBattleSim do its work! You will see a summary table after the simulations are completed, with the following metrics:
Outcome: “Win” or “Lose”, from the perspective of the Primary team. If it is an averaged sim, it will be the proportion of winning (such as 70%).
Duration: The duration of the battle in seconds, excluding arena entry lag and early termination.
TDO%: The Opposite team's sum HP lost in percentage of the sum of all opposite Pokemon's max HP.
DPS: The aggregated DPS of all players from the Primary team.
#Deaths: The grand sum of times of deaths of all Pokemon from the Primary team.
If you want to examine a particular sim in more details, click the info icon. The input section will replay the configuration of that sim. Each Pokemon’s statistics will be presented.
HP: The HP left of the Pokemon when it exits the battle.
Energy: The Energy of the Pokemon when it exits the battle.
TDO: The Total Damage Output of the Pokemon.
Duration: The cumulative time this Pokemon is on the field battling.
DPS: Damage Per Second.
You may click the Battle Log tab to check the battle log. There won’t be a battle log if it is an aggregated sim.
A PokeQuery is used to filter Pokémon, Moves, and other Pokemon Go objects. It is a generalization of the Pokémon Go in-app search query feature.
The following table summarizes the basic PokeQuery:
|PokeBox||$||The Pokemon is in some user's box|
|Species Name||X||The Pokemon’s species name contains X|
|Species Dex||d||The Pokemon’s dex number equals d|
|Nickname||X||The Pokemon’s nickname contains X|
|Pokemon Typing||X||The typing matches X. For Pokemon, one of its typings matches X.|
|Pokemon family||+X||All Pokemon who can evolve from the Pokemon with name X, including X.|
|Pokemon can evolve||evolve||All Pokemon who can evolve.|
|Legendary Pokemon||legendary||Legendary Pokemon defined in Game Master.|
|Mythical Pokemon||mythical||Mythical Pokemon defined in Game Master.|
|Baby Pokemon||baby||Baby Pokemon.|
|Move||@X||The typing or name of the one of the moves the Pokémon matches X|
|Fast Move||@<f>X||The typing or name of the Fast Move the Pokémon matches X|
|Charge Move||@<c>X||The typing or name of the Charge Move the Pokémon matches X|
|Both Move||@<*>X||The typing or name of both the Fast Move and the Charge Move the Pokémon matches X|
|Current moves||current||The move is a current move of the Pokemon|
|Legacy moves||legacy||The move is a legacy move of the Pokemon|
|Exclusive moves||exclusive||The move is an exclusive move of the Pokemon|
|STAB moves||stab||The move’s typing matches one the typings of the Pokemon|
|Raid Boss Tier||%n||The Pokemon is or has been a Tier n raid boss|
|Raid Boss Availability||%X||The availability of the raid boss. X can be:|
|Numerical Values||A n ,
The value of attribute A equals to n, or is within the range [n, m]. A can be the following supported attributes:
|Logical OR||, : ;|
|Logical AND||& ||
Multiple configurations from the user input will be parsed if a batching query is detected in some input field. A batching query’s format is as follows:
[Aggregation Type Indicator] [PokeQuery]
There are two kinds of Aggregation Type Indicators:
|Aggregation Type Indicators||Description|
|*$||Every Pokemon in the player's PokeBox|
|*rating4~ & !$||Every generic Pokemon (not in the user's PokeBox) whose rating is at least 4|
|*stab & (current, legacy, exclusive)||Every STAB moves that Pokemon has ever learnt|
|?current||Average all the current moves of the Pokemon|
The ? aggregation type indicator will ask the application to group the simulation results by that input field and take arithmetic average of each metric.
For any input field, the application will first try to find a direct match in the corresponding database. If no direct match is found, then it’ll proceed to treat the input as batching query. If no Aggregation Type Indicator is, then the * aggregation type indicator will be chosen as default.
The Dynamic Pasting Query is used to copy input value from a source which might parse into multiple values under the batching input scheme. It has the following format:
= [Player index]-[Party index]-[Pokemon index]
The index starts with 1. For example, 1-1-1 refers to the first Pokemon of the first Party of the first Player.