home documents terms contact shop (coming soon!)

ELO Rating System

Your skill, quantified. Beat the best, climb the fastest.

How Ratings Work

CobbleRanked uses a proven rating system that rewards skill:

  • Beat a stronger player → Big ELO gain
  • Beat a weaker player → Small ELO gain
  • Lose to a stronger player → Small ELO loss
  • Lose to a weaker player → Big ELO loss

The system finds your true skill level fast. Upsets are rewarded. Playing it safe yields less.

Rating Systems

CobbleRanked supports two rating algorithms:

Pokemon Showdown (Default)

The same system used by Pokemon Showdown. Features dynamic K-factors based on your rating and experience level.

Glicko-2

A more advanced system that tracks rating uncertainty. Better for servers with irregular play patterns.

Rank Tiers

ELOTier
2100+Cherish Ball
1900-2099Beast Ball
1700-1899Master Ball
1500-1699Ultra Ball
1300-1499Great Ball
Below 1300Poke Ball

New players start at 1000 ELO. Win your way up or fall trying.

K-Factor Bands

The K-factor controls how much your rating changes per match. CobbleRanked uses dynamic K-factors:

ELO RangeK-FactorEffect
New players (first 30 games)50Fast calibration
Below 150048Larger swings
1500-169936Moderate changes
1700-199924Balanced
2000-249918Stable ratings
2500+12Very stable

Higher K-factor means bigger rating changes. New players calibrate quickly, while established players have stable ratings.

Win Streak Bonus

Consecutive wins reward your momentum with a small K-factor boost:

Win StreakK-Factor BonusExample Effect
3+ wins+3Base K=25 → Effective K=28 (+12% Elo gain)
5+ wins+5Base K=25 → Effective K=30 (+20% Elo gain)

This bonus is automatically applied to winners and helps faster progression during hot streaks. Losing resets your streak.

The Math (Simplified)

New Rating = Old Rating + K × (Result - Expected)

Example: Even Match

Two 1500-rated players face off. 50/50 odds.

  • Winner: 1500 → 1510 (+10, K=20)
  • Loser: 1500 → 1490 (-10)

Example: Upset Victory

A 1400 player beats a 1600 player. Big reward for the underdog.

  • Underdog: 1400 → 1424 (+24)
  • Favorite: 1600 → 1592 (-8)

Example: Expected Win

A 1700 player beats a 1400 player. Small gains for the favorite.

  • Favorite: 1700 → 1704 (+4)
  • Underdog: 1400 → 1392 (-8)

Rank Rewards

Players receive one-time rewards when reaching a new tier. Configure in rewards.yaml.

TierExample Reward
Great Ball10 Poké Balls
Ultra Ball10 Great Balls
Master Ball10 Ultra Balls
Beast Ball1 Master Ball
Cherish Ball3 Master Balls

See Rewards Configuration for full setup.

Configuration

# elo.yaml
ratingSystem: POKEMON_SHOWDOWN  # or GLICKO2

startingElo: 1000
floorElo: 1000

pokemonShowdown:
  newPlayerGames: 30
  newPlayerKFactor: 50
  kFactorBands:
    - maxElo: 1500
      kFactor: 48
    - maxElo: 1700
      kFactor: 36
    - maxElo: 2000
      kFactor: 24
    - maxElo: 2500
      kFactor: 18
    - maxElo: 999999
      kFactor: 12
  streakBonus:
    enabled: false
    threshold3Wins: 3
    threshold5Wins: 5

glicko2:
  startingRD: 150.0
  startingVolatility: 0.06
  systemConstant: 0.5
  rdDecayDays: 30
  maxRatingChange: 100

rankTiers:
  - name: "POKEBALL"
    displayName: "Poké Ball"
    minElo: 0
  - name: "GREATBALL"
    displayName: "Great Ball"
    minElo: 1300
  - name: "ULTRABALL"
    displayName: "Ultra Ball"
    minElo: 1500
  - name: "MASTERBALL"
    displayName: "Master Ball"
    minElo: 1700
  - name: "BEASTBALL"
    displayName: "Beast Ball"
    minElo: 1900
  - name: "CHERISH"
    displayName: "Cherish Ball"
    minElo: 2100

Key Settings

SettingDefaultDescription
startingElo1000Starting rating for new players
floorElo1000Minimum possible rating
streakBonus.enabledfalseEnable win streak K-factor bonus

Season Resets

Optionally reset ratings when a new season starts:

# season.yaml
onSeasonEnd:
  resetElo: false        # Hard reset to starting ELO
  softResetElo: true     # Partial reset
  softResetFactor: 0.5   # How much to reset (0.5 = halfway to starting)

Soft reset example: A 1800 player with factor 0.5 resets to 1400 (halfway between 1800 and 1000).

Check Your Rating

Open /ranked and view your stats. See your ELO, win rate, and ranking across all formats.


Related: Ranked Battles | Leaderboards | Seasons