Battle Formats
Three ways to prove your skills. Singles, Doubles, and Triples.
Singles
The classic duel. One Pokemon at a time. Pure strategy, no distractions.
- Active: 1 Pokemon
- Team: 3+ Pokemon
- Style: Traditional competitive play
Fast-paced matches where every prediction matters. Perfect for players who love mind games and one-on-one showdowns.
Doubles
VGC-style 2v2 battles. Teamwork wins fights.
- Active: 2 Pokemon
- Team: 4+ Pokemon
- Style: Team synergy and positioning
Spread moves, partner combos, and Protect mind games. The format where coordination is king.
Triples
Full-scale warfare. Three Pokemon clash at once.
- Active: 3 Pokemon
- Team: 6 Pokemon
- Style: Complex positioning and team coordination
Position matters. Center Pokemon can hit anyone; side Pokemon have limited reach. The ultimate test of team building.
Random Battle (Randbats)
Pokémon Showdown-style Random Battle formats where the server generates your team for you. Available as RANDOM_SINGLES, RANDOM_DOUBLES, and RANDOM_TRIPLES. They use the same Singles/Doubles/Triples rules, but with a server-generated 6-Pokémon team instead of your own party.
Random Battle has its own separate rating and leaderboard, fully isolated from the regular formats. See Random Battle for the full guide.
Old Moves and National Dex
Cobblemon mainly uses current Gen 9 learnsets. National Dex is different: it also allows moves a Pokémon could learn in an older game.
CobbleRanked can now apply the correct move rules for each season preset:
| Season | Chansey with Toxic | Why |
|---|---|---|
| National Dex | ✅ Allowed | Toxic is an old move for Chansey |
| Current Gen 9 | ❌ Blocked | Chansey cannot currently learn Toxic |
The check is specific to each Pokémon. Toxic is not banned for the whole format; Pokémon that can currently learn it are still allowed to use it.
Choose the move rules
Add moveLegality inside each regular format in config/cobbleranked/season_presets/<preset>.yml:
singles:
enabled: true
moveLegality: "CURRENT"
| Value | What players may use | Best for |
|---|---|---|
DISABLED | CobbleRanked does not check learnsets | Existing custom seasons that manage moves another way |
CURRENT | Moves in the Pokémon’s current Cobblemon learnset | Current Gen 9, Smogon, and VGC rules |
CURRENT_AND_LEGACY | Current moves plus old moves listed by Cobblemon | National Dex |
ANY | Every move listed for that Pokémon, including special or event entries | Custom events with very open rules |
The bundled presets use these defaults:
| Preset | Move rule |
|---|---|
default | DISABLED |
smogon | CURRENT |
vgc | CURRENT |
vgc_smogon | CURRENT |
national_dex | CURRENT_AND_LEGACY |
⚠️ CobbleRanked does not overwrite an existing preset file during an update. If your server already has one of these files, add
moveLegalityto its enabled formats yourself, then run/rankedadmin reload.
Independent Rankings
Each format has its own:
- Queue: Singles players only match with Singles players
- ELO rating: Climb separately in each format
- Leaderboard: Dominate one format or conquer them all
- Blacklist rules: Different bans per format if configured
Player: Steve
├── SINGLES: 1850 ELO, Rank #5
├── DOUBLES: 1620 ELO, Rank #23
└── TRIPLES: 1540 ELO, Rank #8
Format Configuration
All format settings are configured in season presets (config/cobbleranked/season_presets/*.yml).
Enable/Disable Formats
Control which formats are available by setting enabled in each format section:
# season_presets/default.yml
singles:
enabled: true
doubles:
enabled: true
triples:
enabled: false # Disabled
Season Presets
Run a VGC-only season? A Singles tournament? Each preset has complete format configuration:
# season_presets/vgc.yml
name: "VGC Rules"
singles:
enabled: false
doubles:
enabled: true
teamSize: 6
selectCount: 4
levelCap: 50
turnTimer: 45
matchDuration: 20
megaEvolution: false
zMoves: false
dynamax: false
terastallize: true
triples:
enabled: false
Per-Format Settings
Each format has its own complete configuration:
# season_presets/default.yml
singles:
enabled: true
teamSize: 3
selectCount: 3
levelCap: 100
turnTimer: 90
matchDuration: 15
megaEvolution: true
zMoves: true
dynamax: false
terastallize: false
# Clauses
speciesClause: true # no duplicate species
itemClause: 1 # max duplicates of the same held item (0 = off, 2 = allow two)
sleepClause: true # only one opponent asleep at a time (see Sleep Clause page)
ohkoClause: true # ban OHKO moves (Sheer Cold, etc.)
evasionClause: true # ban evasion moves (Double Team, etc.)
endlessBattleClause: true # auto-draw endless stall loops
# Restricted Pokemon
restrictedCount: 1
# Matchmaking
matchmaking:
enforceEloRange: true
initialRange: 200
expansionDelay: 30
expansionRate: 50
maxMultiplier: 3.0
immediateMatchRange: 100
# Blacklist
blacklist:
pokemon: []
moves: []
abilities: []
heldItems: []
labels: []
labelLimits: {}
inventoryItems: []
consumables:
blockAllHealingItems: true
blockedHealingItems: []
blockStatusHealingItems: true
blockedStatusItems: []
blockRevivalItems: true
blockedRevivalItems: []
doubles:
enabled: true
teamSize: 4
selectCount: 4
levelCap: 50
turnTimer: 120
matchDuration: 20
# ... similar structure
Matchmaking Settings
Control how players are matched within each format:
| Setting | Default | Description |
|---|---|---|
enforceEloRange | true | Enable Elo-based matchmaking |
initialRange | 200 | Starting ELO range (±100 = 200 total) |
expansionDelay | 30 | Seconds before range starts expanding |
expansionRate | 50 | ELO added per expansion cycle |
maxMultiplier | 3.0 | Maximum range multiplier (3× initial range) |
immediateMatchRange | 100 | ELO range for instant matches |
How range expansion works:
- Start: ±100 ELO (200 total range)
- After 30s: ±150 ELO (expands by 50)
- After 60s: ±200 ELO (expands by another 50)
- Maximum: ±300 ELO (3× initial range)
Restricted Pokemon System
Some presets use a restricted Pokemon system (VGC-style):
| Setting | Description |
|---|---|
restrictedCount | Max number of restricted Pokemon allowed |
restrictedPokemon | List of specific Pokemon marked as restricted |
When restrictedCount > 0, players can only include that many Pokemon from the restricted list in their team.
Gimmick Control (Mega / Z-Moves / Dynamax / Tera)
The megaEvolution, zMoves, dynamax, and terastallize toggles actually disable the gimmick in ranked battles. Because these mechanics (added by Mega Showdown) are gated by key items, simply banning the items isn’t enough. CobbleRanked blocks the gimmick at the moveset level during battle (via a mixin on the action request) so it can’t be used even if the player has the item. Casual and non-ranked battles are unaffected.
Multi-Format Rewards
Season rewards are distributed per format. Rank high in all three? Get rewards for all three.
Related: Ranked Battles | ELO System | Seasons | FAQ | Troubleshooting