The Game Theory of Competitive Pokémon
12-min read
By Aaron Trailer · VGC World Championship Top 8 · PhD Computer Science
"If you solved that, I would give you a PhD on the spot."
— A Professor of Computer Science, hearing about team building for the first time
Why Is Competitive Pokémon Hard? URL copied
If you've only ever played the single-player campaign, competitive Pokémon seems easy. Teach your level 100 Charizard Earthquake and win, right?
As it turns out, winning at multiplayer Pokémon - beating another human player, becoming world champion - is extraordinarily difficult. Answering why is also difficult, because competitive Pokémon is so complex it's hard to even put into words.
There are over 1,000 different Pokémon species and 900 different moves to choose from.
Selecting the right team is tough enough - but then you actually have to battle someone with their own carefully trained team.
The strategy is like a tangled web: answer one question and many more follow. This document untangles it by identifying the fundamental building blocks that make competitive Pokémon what it is as a strategic game.
The Two Phases URL copied
Competitive Pokémon consists of exactly two phases. They are deeply coupled, and you can't understand one without the other.
Team Building: Choose and fully customize six Pokémon - species, moves, held items, stats, and tera types. The art side.
Battling: Use those six Pokémon to reduce all of your opponent's to zero. The science side.
flowchart LR
TB["🎨 Team Building<br/>(creative, iterative,<br/>open-ended)"]
B["⚔️ Battling<br/>(tactical, time-pressured,<br/>opponent-driven)"]
TB -->|"fields a team"| B
B -->|"win/loss reveals gaps"| TB
B -->|"metagame shifts"| TB
style TB fill:#003a70,color:#ffcb05,stroke:#ffcb05,stroke-width:2px
style B fill:#cc0000,color:#fff,stroke:#ffcb05,stroke-width:2px
You need to know how to win battles to know which Pokémon are worth building.
Also: battling is hard. Team building is harder. We get there at the end.
Strategic Element 1: Long-Term Planning URL copied
Resources shrink as a battle progresses. Once a Pokémon faints, it almost never returns.The move Revival Blessing exists but appears on essentially no competitive teams. For all practical purposes, fainted = gone. This creates a hard asymmetry between the early game and the late game.
Usually 8--12 turns. Fast, high-stakes. One mistake can end the game outright. Your lead determines your first-turn momentum; your back two determine your endgame.
Usually 50+ turns - can reach hundreds. Early positioning accumulates. Setup moves (Swords Dance, Calm Mind) pay off over many subsequent turns.
Revolves around Perish Song, Leech Seed, and PP stalling. The goal is to exhaust your opponent's moves entirely. Mechanically valid. Psychologically cruel.
The early game is an investment, not just an exchange. Knocking out your opponent's Arcanine on turn two means your Venusaur has one fewer Fire-type threat to worry about for the rest of the game. That's not damage - that's positioning.
The Whimsicott Game URL copied
![]()
This is a real tournament game that demonstrates long-term planning in full. Whimsicott has terrible base stats - but its Prankster ability gives all non-attacking moves +1 priority.
sequenceDiagram
participant A as Aaron<br/>(Whimsicott + Miraidon)
participant Op as Opponent<br/>(Flutter Mane + Chiu)
Note over A,Op: Turn 1 — 4v4 Pokémon
A ->> Op: Tailwind (priority via Prankster) ✓
Op ->> A: Dazzling Gleam + Heatwave
Note over A,Op: Both of Aaron's leads faint.<br/>Count: Aaron 2, Opponent 4.
Note over A,Op: Turn 2 — Tailwind active!<br/>Aaron's team now doubles in speed.
A ->> Op: Surging Strikes → KOs Flutter Mane
A ->> Op: Ivy Cudgel → KOs Chiu
Note over A,Op: Count: Aaron 2, Opponent 2.
Note over A,Op: Turn 3
A ->> Op: Surging Strikes → KOs Flutter Mane (sent back in)
A ->> Op: Ivy Cudgel → KOs Zam mazenta
Note over A,Op: Opponent has no Pokémon left. Aaron wins.
Whimsicott did zero damage and fainted in one turn. It was undeniably the MVP.
Long-term planning means building conditions for later victory, not maximizing this turn's immediate output.
This is where Pokémon most resembles chess. In both games, resources decrease over time, and early sacrifice for positional advantage is a legitimate - sometimes optimal - strategy. As in chess, the late game is won or lost by decisions made in the opening.
Strategic Element 2: Simultaneous Action Selection URL copied
In chess, players alternate. After your move, the board is a known state. Pokémon offers no such luxury.
Both players choose their moves at the same time. Then the game executes them in speed order. This one mechanic changes the entire character of the game.
Because you commit to your action before seeing your opponent's, the value of any given move is opponent-dependent. There is no "best move in a vacuum" - only best moves in response to what your opponent is doing, which you cannot know.
The Decision Matrix URL copied
Annihilape (Ghost/Fighting) vs Gengar (Ghost/Poison). Ghost attacks are super effective against Ghost types. The faster attacker likely wins outright.
| Terry: no Terastallize (stays Ghost) | Terry: Terastallize → Normal | |
|---|---|---|
| Shadow Claw (Ghost) | ✓ Super effective — you KO Gengar | ✗ Normal is immune to Ghost — zero damage, you lose |
| Close Combat (Fighting) | ✗ Ghost is immune to Fighting — zero damage, you lose | ✓ Super effective on Normal — you KO Gengar |
This feels like rock-paper-scissors. And in this isolated late-game example, it kind of is. But in a real double battle on turn three:
- Each player has 2 active Pokémon with 4 moves each
- Both can switch to 2 benched Pokémon
- Every combination produces a different probability distribution of outcomes
The actual decision grid isn't 2×2. It isn't even a grid - it's a wall of combinatorial explosions. No human can enumerate it fully. This is why skilled play is about avoiding the mind game entirely: navigating toward board states where you have a guaranteed win condition regardless of what the opponent does.
The Tailwind game above was one such state. With Tailwind active and a healthy attacking pair, there was literally nothing the opponent could do. Aaron had escaped the mind game through long-term planning.
Strategic Element 3: Imperfect Information URL copied
In chess, both players see all pieces. In rock-paper-scissors, you know the three possible choices. Pokémon usually guarantees neither.
What do you know at the start of a ladder battle?
On the public ranked ladder (Scarlet/Violet), you see only your opponent's six Pokémon species. No moves, no items, no stats, no tera types.
At official tournaments (Regionals, Worlds), you see everything except stats - and you still don't know which two Pokémon are benched until they're revealed.
Assumption Traps URL copied
You see Arcanine (Fire type). You think: Fire type → fire moves → my Water-type Gyarados is safe.
flowchart LR
Obs["You see: Arcanine"]
Obs --> Assume["Assume: only Fire moves"]
Assume --> Dec["Send in Gyarados 'safely'"]
Dec --> Reality{Wild Charge?}
Reality -->|No — correct| Safe["Gyarados survives ✓"]
Reality -->|Yes — surprise| KO["Gyarados KO'd ✗"]
style Safe fill:#15803d,color:#fff
style KO fill:#cc0000,color:#fff
Wild Charge is an Electric-type move that Arcanine can legitimately learn. Your logic was sound. Your assumption was wrong.
If you expect Tailwind from Whimsicott, you set your own Tailwind with Zapdos.
But Whimsicott uses Trick Room instead - reversing speed order for five turns.
Your Tailwind now hurts you.
The bluff only works because you didn't know Trick Room was possible. Clever opponents weaponize your ignorance.
The amount of unknown information decreases as the battle progresses and each player's Pokémon take actions, revealing their moves. But you still have to make decisions before you have full information - under time pressure, against an opponent doing the same thing.
Strategic Element 4: Probability Management URL copied
Even with perfect information and perfect reasoning, random outcomes remain. Variance is built into the engine.
Move Accuracy: Most moves are 100% accurate - but not all. Will-O-Wisp burns at 85%. Miss at the wrong moment and an entire strategy collapses.
Secondary Effects: Flamethrower deals damage and has a 10% chance to also burn the target. Free value; never guaranteed.
Critical Hits: Every attack has a $\frac{1}{24} \approx 4.17%$ chance to crit, dealing $ 1.5 \times$ base damage and ignoring your attack drops and their defense boosts.
Damage Rolls: The deepest source of variance. Every attack's final damage is multiplied by a random integer $r$ drawn uniformly from ${85, 86, \ldots, 100}$, producing up to 16 distinct damage values per move.
The Damage Formula URL copied
$$ \text{Damage} = \left\lfloor \left\lfloor \left\lfloor \frac{2 \times \text{Level}}{5} + 2 \right\rfloor \times \frac{A}{D} \times \text{BasePower} \div 50 + 2 \right\rfloor \times \text{Modifiers} \times \frac{r}{100} \right\rfloor $$
Where $r \sim \text{Uniform}{85, \ldots, 100}$.
Your attack deals just over 50% of their HP. One more hit wins the game. Next turn: the move deals just under 50%. You low-rolled. The situation is reversed.[Missing footnote: lowroll]
This is not bad luck in an isolated sense. At tournament level, players memorize exact damage ranges and avoid situations where a low roll costs them the match.
Simulated Damage Distribution URL copied
The turn_resolution.py script in this folder computes the exact distribution empirically. Core logic:
"""
Competitive Pokemon: damage roll simulation.
Demonstrates the 16-value damage range that makes
every KO threshold a probabilistic, not deterministic, fact.
"""
import random
from collections import Counter
def damage(base_power: int, attack: int, defense: int, level: int = 50) -> int:
"""Apply the core damage formula with a random roll in [85, 100]."""
roll = random.randint(85, 100)
raw = ((2 * level // 5 + 2) * base_power * attack // defense) // 50 + 2
return int(raw * roll / 100)
def roll_distribution(base_power: int, attack: int, defense: int,
trials: int = 100_000) -> dict[int, float]:
counts: Counter[int] = Counter(
damage(base_power, attack, defense) for _ in range(trials)
)
total = sum(counts.values())
return {v: round(c / total * 100, 2) for v, c in sorted(counts.items())}
def ko_probability(base_power: int, attack: int, defense: int,
target_hp: int, trials: int = 100_000) -> float:
"""P(one-hit KO) for given target_hp."""
kos = sum(
1 for _ in range(trials)
if damage(base_power, attack, defense) >= target_hp
)
return round(kos / trials * 100, 2)Accuracy Reference Table URL copied
| Move | Type | Accuracy | Secondary Effect |
|---|---|---|---|
| Earthquake | Ground | 100% | None |
| Flamethrower | Fire | 100% | 10% burn |
| Will-O-Wisp | Fire | 85% | Burns target |
| Thunder | Electric | 70% | 30% paralysis |
| Blizzard | Ice | 70% | 10% freeze |
| Hypnosis | Psychic | 60% | Sleep |
| Dynamic Punch | Fighting | 50% | 100% confusion on hit |
The best players choose moves with the highest floor, not just the highest ceiling. Missing Dynamic Punch at a critical moment is not a freak event - it's 50% of the time.
The Strategic Web URL copied
The four elements don't operate independently. They compound.
mindmap
root((Competitive<br/>Pokémon))
Long-term Planning
Resource shrinkage
Type synergy chains
Sacrifice for position
Early vs late game
Simultaneous Actions
Decision matrix
Opponent modeling
Mind games
Guaranteed win conditions
Imperfect Information
Hidden movesets
Unknown held items
Bench Pokémon
Bluffs and traps
Probability Management
Move accuracy
Secondary effects
Critical hits
Damage rolls
KO thresholds
How the four elements multiply each other
Long-term + Probability: Randomness makes futures branch into trees, not straight lines. A missed Will-O-Wisp creates a timeline where your entire burn-based strategy fails. You had to plan for both worlds.
Simultaneous + Imperfect: You don't know your opponent's moves and you're choosing at the same time. These aren't additive difficulties - they're multiplicative. Every possible action you take must be evaluated against every possible thing they might do, including options you didn't know existed.
Probability + Imperfect: Your Will-O-Wisp has 85% accuracy. But does their Gyarados hold a Lum Berry (cures status once)? Unknown. Your 85% just became substantially worse in expectation, by an amount you can't calculate because you don't know the item.
All four together: The possible outcomes of one turn in a real double battle aren't a grid. They aren't a cube. They're a skyscraper of probability distributions, each floor its own contingent universe.
Interactive Strategy Map URL copied
How Pokémon Compares URL copied
direction: right
elements: {
ltp: { label: Long-term Planning }
sim: { label: Simultaneous Actions }
imp: { label: Imperfect Information }
prob: { label: Probability Management }
}
games: {
chess: {
label: Chess
icon: https://api.iconify.design/mdi:chess-king.svg
}
rps: {
label: Rock Paper Scissors
icon: https://api.iconify.design/mdi:hand-back-right.svg
}
poker: {
label: Poker
icon: https://api.iconify.design/mdi:cards-playing-spade-multiple.svg
}
mtg: {
label: Magic the Gathering
icon: https://api.iconify.design/mdi:cards.svg
}
pokemon: {
label: Competitive Pokémon
icon: https://api.iconify.design/mdi:pokeball.svg
}
}
games.chess -> elements.ltp
games.rps -> elements.sim
games.poker -> elements.ltp
games.poker -> elements.imp
games.poker -> elements.prob
games.mtg -> elements.ltp
games.mtg -> elements.imp
games.mtg -> elements.prob
games.pokemon -> elements.ltp
games.pokemon -> elements.sim
games.pokemon -> elements.imp
games.pokemon -> elements.prob
Only competitive Pokémon connects to all four. This isn't a coincidence. The design of simultaneous move selection, combined with customizable teams, imperfect information, and deep probability variance, produces a game that cannot be fully solved by any one strategic framework.
Team Building URL copied
![]()
If battling is science, team building is art - and art has no solved strategy.
In 2019, Smogon Forums user Deli Bird Hart calculated the total possible distinct teams in the Ultra Sun/Moon era:
$$N_{\text{teams}} = 6.08701 \times 10^{218}$$
The observable universe contains roughly $10^{80}$ atoms. The number of possible Pokémon teams is incomprehensibly larger. More than there are stars in the sky, more than there are atoms in the universe.
Speed Creep: One Number Wins Tournaments URL copied
Tournaments with prize pools in the thousands of dollars have been decided by training a Pokémon to be one speed stat point faster than the opponent's Pokémon.
Why? If a Pokémon is knocked out before it can act, its move never executes. Speed is not just "act sooner" - it is the gating condition on whether you get to play at all.
$$ \text{Final Speed} = \left\lfloor \text{BaseStat} \times \frac{\text{Nature}}{1} \times \frac{2 \times \text{IV} + \text{EV}/4 + \text{Base} \times 2 + 5}{100 + 5} \right\rfloor $$
A single EV allocation decision - 4 EVs is 1 stat point - can flip an entire matchup. Every speed tier in the metagame is a known threshold, and players deliberately park their Pokémon one point above the most common benchmarks.
The Metagame URL copied
Metagame
: The game about the game. What teams are other players running? What are the dominant strategies? What counters them?
Unlike the four battle mechanics above, metagame is emergent from player behavior, not the rules engine. Change the players, change the metagame. A brand-new format has no metagame yet - and the first week is pure exploration, with no data, no benchmarks, no tier lists. Finding a winning team in that void is one of the purest expressions of creative strategy in any game.
The Iterative Loop URL copied
Team building and battling form a feedback loop that never fully closes.
stateDiagram-v2
[*] --> Hypothesis : Have an idea
Hypothesis --> Build : Finalize 6 Pokémon
Build --> Ladder : Test on ranked
Ladder --> Win : Strong matchup
Ladder --> Loss : Weak matchup
Win --> Analyze : What worked and why?
Loss --> Analyze : What failed and why?
Analyze --> Hypothesis : Revise theory
Analyze --> Build : Adjust team
Build --> Tournament : Submit team
Tournament --> [*] : Outcome recorded
If you win 10 ladder games, how much is your skill and how much is your team? If you lose, was the team wrong, or were you outplayed?
Feedback in this loop is noisy, opponent-dependent, and influenced by luck. Systematic improvement is structurally difficult in a way that most games don't have to contend with.
What makes this worse: practice games are usually against known opponents. Tournament opponents make decisions in entirely different ways. And if you happen to freeze several opponents in a row with Blizzard in testing, your six Ice-type team looks like a genius idea - right up until the tournament, where you play against Fire and Rock teams and your Pokémon are stationary boulders.
Conclusion URL copied
Competitive Pokémon is unique because no other mainstream game combines all four strategic dimensions in the same package:
- TaskLong-term planning across 8--200 turns
- TaskSimultaneous decision-making without mind game losses
- TaskProcessing incomplete information about an opponent's team
- TaskManaging probability: accepting variance, minimizing avoidable risk
- TaskBuild a winning team from $ 6.08 \times 10^{218}$ possible options
- TaskUnderstand the metagame as a social, not just mechanical, construct
"The bearing of a child takes nine months, no matter how many women are assigned." - Fred Brooks, The Mythical Man-Month
Some problems don't compress. Team building in Pokémon is one of them. You have to play the games, lose the games, and iterate. There is no shortcut.
When somebody asks why is competitive Pokémon hard - this is what we mean. Not just "lots of Pokémon" or "it takes practice." The mechanics themselves produce a game where:
| You must... | Because... |
|---|---|
| Plan turns ahead | Resources shrink and can't be recovered |
| Read your opponent | You're choosing moves at the same time |
| Model unknown information | You can't see their team until it acts |
| Manage risk precisely | Every move has probabilistic variance |
| Choose a team from 10^218^ options | Without knowing what you'll face |
None of these games or any other, as far as we know, does all five quite the same way.
Source URL copied