home documents terms contact shop (coming soon!)

Battle Formats

Edit

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.

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

As of v2.0.13, 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
  itemClause: 1
  ohkoClause: true
  evasionClause: true
  endlessBattleClause: true

  # 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: []

  # Showdown/Chess-style per-player timer
  playerBattleDurationMinutes: 0    # 0 = disabled (uses match timer)
  incrementSeconds: 0               # Time added per turn
  tieBreakSystem: HEALTH            # HEALTH or TIME

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:

SettingDefaultDescription
enforceEloRangetrueEnable Elo-based matchmaking
initialRange200Starting ELO range (±100 = 200 total)
expansionDelay30Seconds before range starts expanding
expansionRate50ELO added per expansion cycle
maxMultiplier3.0Maximum range multiplier (3× initial range)
immediateMatchRange100ELO range for instant matches

Per-Player Timer Settings

Showdown/chess-style cumulative timer per player:

SettingDefaultDescription
playerBattleDurationMinutes0Per-player total time. 0 = disabled (uses match timer)
incrementSeconds0Seconds added after each turn
tieBreakSystemHEALTHTime-out resolution: HEALTH (HP%) or TIME (time-out player loses)

See Turn Timer for detailed explanation.

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):

SettingDescription
restrictedCountMax number of restricted Pokemon allowed
restrictedPokemonList of specific Pokemon marked as restricted

When restrictedCount > 0, players can only include that many Pokemon from the restricted list in their team.

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