Tournaments
File: config/frontier/tournaments/<id>/tournament.conf
Each .conf file in a tournament’s directory defines one tournament. The directory name becomes the tournament ID. Tournaments control bracket format, scheduling, registration, team locking, NPC autofill, and optional rating integration.
Quick Example
Section titled “Quick Example”displayName = "Weekly OU Tournament"description = "Every Saturday, open to all players. Gen 9 OU rules."timeZone = "America/New_York"
schedule { registrationOpens = "2026-03-14T10:00:00" registrationCloses = "2026-03-14T13:00:00" bracketStarts = "2026-03-14T14:00:00"}
maxPlayers = 32bracketType = SINGLE_ELIMINATIONseeding = ELO_BASEDformat = "gen9ou"extraClauses = []
rating { affectsRating = true ladderReference = "gen9ou"}
revealFullBracket = falsenoShowGraceSeconds = 300
arenas = []
bestOf { default = 1 overrides { quarterfinals = 3 semifinals = 3 finals = 5 } arenaOverrides { # finals = "grand_arena" }}
rosterChangeBetweenGames = falsebattleMusic = ""
npcAutofill { enabled = true npcClass = "cobblemon:ace_trainer" skill = 4 presetId = "" namePool = [ "Ace Trainer Red", "Ace Trainer Blue", "Ace Trainer Green", "Ace Trainer Yellow", "Ace Trainer Silver", "Ace Trainer Gold", "Ace Trainer Crystal", "Ace Trainer Ruby" ]}Tournament Fields
Section titled “Tournament Fields”| Field | Type | Default | Description |
|---|---|---|---|
displayName | String | "Tournament" | Human-readable tournament name. |
description | String | "" | Description shown in UIs and announcements. |
timeZone | String | "UTC" | IANA time zone for schedule times. |
schedule.registrationOpens | String | "" | ISO-8601 datetime when registration opens. |
schedule.registrationCloses | String | "" | ISO-8601 datetime when registration closes. |
schedule.bracketStarts | String | "" | ISO-8601 datetime when matches begin. |
maxPlayers | Int | 128 | Maximum number of registered players. |
bracketType | Enum | SINGLE_ELIMINATION | Bracket format. SINGLE_ELIMINATION or DOUBLE_ELIMINATION. |
seeding | Enum | RANDOM | Seeding method. RANDOM, MANUAL, or ELO_BASED. |
format | String | "" | Battle format ID applied to all matches. |
extraClauses | List<String> | [] | Additional clauses on top of the format. |
rating.affectsRating | Boolean | false | Whether results affect ladder ratings. |
rating.ladderReference | String | "" | Which ladder’s rating pool to use. |
revealFullBracket | Boolean | true | Whether the full bracket and teams are publicly viewable. |
noShowGraceSeconds | Int | 60 | Seconds before a no-show is declared a forfeit. |
bestOf.default | Int | 1 | Default best-of count for all rounds. |
bestOf.overrides | Map<String,Int> | {} | Per-round best-of overrides (e.g., finals = 5). |
rosterChangeBetweenGames | Boolean | true | Allow roster changes between games in a best-of series. |
battleMusic | String? | null | Custom battle music resource location. Null = default music. |
arenas | List<String> | [] | Allowed arenas for the tournament. Empty = use any available arena. |
bestOf.arenaOverrides | Map<Int, String> | {} | Per-round arena overrides (e.g. finals on a specific arena). Key = round number. |
npcAutofill.enabled | Boolean | false | Fill empty bracket slots with NPCs. |
npcAutofill.npcClass | String | "cobblemon:standard" | NPC class identifier for autofill NPCs. |
npcAutofill.skill | Int | 3 | AI skill level for autofill NPCs (0-5). |
npcAutofill.presetId | String | "" | Preset ID for NPC teams. Empty string = random generation. |
npcAutofill.namePool | List<String> | [8 default names] | Pool of names randomly assigned to autofill NPCs. |
NPC Autofill Config
Section titled “NPC Autofill Config”NPC autofill fills empty tournament slots with AI-controlled opponents to reach a bracket-compatible player count.
| Field | Type | Default | Description |
|---|---|---|---|
enabled | Boolean | false | Whether NPC autofill is active for this tournament. |
npcClass | String | "cobblemon:standard" | The NPC class used for rendering autofill NPCs. |
skill | Int | 3 | AI skill level from 0 (weakest) to 5 (strongest). |
presetId | String | "" | Preset ID for NPC teams. Leave empty for random teams. |
namePool | List<String> | 8 default names | Names randomly assigned to NPCs. Defaults: “Youngster Joey”, “Bug Catcher Ben”, “Lass Dana”, “Ace Trainer Liam”, “Pokefan Rex”, “Ranger Kim”, “Veteran Sol”, “Black Belt Ryu”. |
Best-of Config
Section titled “Best-of Config”Controls the number of games played per match in a bracket round.
| Field | Type | Default | Description |
|---|---|---|---|
default | Int | 1 | Default series length for all rounds. |
overrides | Map<String,Int> | {} | Per-round overrides. Keys are round names, values are best-of counts. |
Valid best-of values are odd numbers (1, 3, 5, 7). A best-of-3 means the first player to win 2 games takes the match.
Schedule
Section titled “Schedule”All schedule fields use ISO-8601 datetime strings, interpreted in the tournament’s configured timeZone.
| Field | Description |
|---|---|
registrationOpens | When players can begin registering. |
registrationCloses | When registration closes and teams are locked. |
bracketStarts | When the first round of matches begins. |
The tournament automatically transitions between lifecycle states based on these times:
SCHEDULED->REGISTRATIONatregistrationOpens.REGISTRATION->LOCKEDatregistrationCloses.LOCKED->ACTIVEatbracketStarts.
Rating Reference
Section titled “Rating Reference”Controls whether tournament results affect a ladder’s rating pool.
| Field | Type | Default | Description |
|---|---|---|---|
affectsRating | Boolean | false | When true, match results update player ratings. |
ladderReference | String | "" | The ladder ID whose rating pool is used (e.g., "gen9ou"). |
When affectsRating is true, ladderReference must be set to a valid ladder ID. Rating changes are calculated using the same algorithm as ranked ladder matches.