Ladders
File: config/frontier/ladders.conf
Ladders define the competitive queues players can join. Each ladder references a format, configures its own rating system, and defines rank tiers.
Quick Example
Section titled “Quick Example”ladders { singles { displayName = Singles description = "Standard singles ladder" format = standard battleType = singles teamSize = 6 rating { algorithm = GLICKO2 startRating = 1500.0 startRD = 350.0 } rankTiers = [ { name = "Poke Ball", minRating = 0.0, icon = "cobblemon:poke_ball" } { name = "Great Ball", minRating = 1200.0, icon = "cobblemon:great_ball" } { name = "Ultra Ball", minRating = 1400.0, icon = "cobblemon:ultra_ball" } { name = "Master Ball", minRating = 1600.0, icon = "cobblemon:master_ball" } { name = "Beast Ball", minRating = 1800.0, icon = "cobblemon:beast_ball" } ] }}Ladder Fields
Section titled “Ladder Fields”| Field | Type | Default | Description |
|---|---|---|---|
displayName | String | "Singles" | Human-readable name shown in GUIs and commands. |
description | String | "" | Description shown in ladder selection. |
format | String | "standard" | Format ID referencing a key in formats.conf. |
battleType | String | "singles" | Battle type: "singles" or "doubles". |
teamSize | Int | 6 | Maximum Pokemon on a team. |
rating | RatingConfig | See below | Rating system configuration. |
rankTiers | List<RankTier> | 5-tier system | Ordered rank tiers from lowest to highest. |
Rating Config
Section titled “Rating Config”Each ladder has its own rating configuration. Frontier supports two algorithms.
Shared Settings
Section titled “Shared Settings”| Field | Type | Default | Description |
|---|---|---|---|
algorithm | String | "GLICKO2" | Rating algorithm: "GLICKO2" or "SHOWDOWN_K_SCALING". |
startRating | Double | 1500.0 | Starting rating for new players. |
startRD | Double | 350.0 | Starting rating deviation (uncertainty). Higher = more uncertain. |
minRating | Double | 0.0 | Minimum possible rating. |
maxRating | Double | 9999.0 | Maximum possible rating. |
rdFloor | Double | 50.0 | Minimum RD. Prevents ratings from becoming too certain. |
Glicko-2 Settings
Section titled “Glicko-2 Settings”Only used when algorithm = "GLICKO2".
| Field | Type | Default | Description |
|---|---|---|---|
startVolatility | Double | 0.06 | Starting volatility. Represents expected fluctuation in rating. |
tau | Double | 0.5 | System constant controlling how quickly volatility changes. Higher = more reactive. |
Glicko-2 is the default and recommended algorithm. It accounts for rating uncertainty and adjusts faster for new players while stabilizing for experienced ones.
Showdown K-Scaling Settings
Section titled “Showdown K-Scaling Settings”Only used when algorithm = "SHOWDOWN_K_SCALING".
| Field | Type | Default | Description |
|---|---|---|---|
kMax | Double | 50.0 | K-factor for provisional players (few games). Controls rating swing magnitude. |
kMin | Double | 20.0 | K-factor for established players (many games). |
kScalingGames | Int | 20 | Number of games until K-factor reaches kMin. |
K-Scaling is simpler — new players swing by larger amounts (up to kMax per game), and the swings gradually decrease toward kMin as they play more games.
Rank Tiers
Section titled “Rank Tiers”Rank tiers define the competitive brackets players progress through. They must be ordered from lowest to highest minRating.
| Field | Type | Description |
|---|---|---|
name | String | Display name of the tier. |
minRating | Double | Minimum rating required to achieve this tier. |
icon | String | Minecraft item ID used as the tier’s icon in GUIs. |
Default Rank Tiers
Section titled “Default Rank Tiers”All default ladders use the same five tiers:
| Tier | Min Rating | Icon |
|---|---|---|
| Poke Ball | 0 | cobblemon:poke_ball |
| Great Ball | 1200 | cobblemon:great_ball |
| Ultra Ball | 1400 | cobblemon:ultra_ball |
| Master Ball | 1600 | cobblemon:master_ball |
| Beast Ball | 1800 | cobblemon:beast_ball |
Default Ladders
Section titled “Default Ladders”| ID | Display Name | Format | Battle Type | Description |
|---|---|---|---|---|
singles | Singles | standard | singles | Standard singles ladder |
doubles | Doubles | doubles | doubles | Standard doubles ladder |
vgc | VGC | vgc | doubles | Bring 6, pick 4, level 50 doubles |
little_cup | Little Cup | little_cup | singles | Unevolved Pokemon only, level 5 |
monotype | Monotype | monotype | singles | All Pokemon must share a type |
random | Random Battle | random | singles | Random teams from competitive sets |
random_doubles | Random Doubles | random_doubles | doubles | Random teams in doubles format |
All default ladders use Glicko-2 with a 1500 start rating and the default rank tiers.
Custom Ladder Example
Section titled “Custom Ladder Example”Here’s a ladder with Showdown K-Scaling and custom rank tiers:
ladders { competitive_ou { displayName = "Competitive OU" description = "OverUsed tier with Showdown-style rating" format = "base_ou" battleType = "singles" teamSize = 6 rating { algorithm = SHOWDOWN_K_SCALING startRating = 1000.0 startRD = 350.0 kMax = 40.0 kMin = 16.0 kScalingGames = 30 } rankTiers = [ { name = "Bronze", minRating = 0.0, icon = "minecraft:copper_ingot" } { name = "Silver", minRating = 1100.0, icon = "minecraft:iron_ingot" } { name = "Gold", minRating = 1300.0, icon = "minecraft:gold_ingot" } { name = "Diamond", minRating = 1500.0, icon = "minecraft:diamond" } { name = "Champion", minRating = 1700.0, icon = "minecraft:nether_star" } ] }}Remember to add tier colors for your custom tiers in messages.conf:
tierColors { Bronze = "<#cd7f32>" Silver = "<gray>" Gold = "<gold>" Diamond = "<aqua>" Champion = "<light_purple>"}