{
  "_help": [
    "Ballerspiel dedicated server - example configuration with explanations.",
    "Start: BallernServer Ballern -log -port=7777 -ServerConfig=/path/to/this.json",
    "Keys starting with '_' are explanations; the server ignores them, so you can keep them.",
    "Everything not set falls back to a sensible default; a missing or broken file starts the server",
    "with a fully random rotation and no admins (the log says why: '[Dedicated] ConfigError ...').",
    "Several servers on one machine: give each its own -port and -saveddirsuffix=<name>",
    "(own logs, bot roster, ban list and skill saves)."
  ],

  "ConfigVersion": 1,

  "ServerName": "My Ballerspiel Server",
  "_help_ServerName": "Shown in the in-game server browser.",

  "SteamAdvertise": true,
  "_help_SteamAdvertise": "true: list the server in the online server browser (Steam master server; with -BallernOnline=EOS an EOS session). false: reachable by IP only.",

  "Lan": false,
  "_help_Lan": "true: announce a LAN session instead - visible in every player's LAN tab, no login and no internet needed. Same as -lan on the command line (use together with -nosteam).",

  "MaxPlayers": 64,
  "_help_MaxPlayers": "Human player slots, 1-64 (default 64). Bots never take one of these slots.",

  "BotCount": 6,
  "_help_BotCount": "Bots per match for every rotation entry that does not set its own. Omit it to keep the game's default. Capped by the server's bot limit (64).",

  "HumanVsAI": false,
  "_help_HumanVsAI": "true: in team modes (TM, CTF, BB) all humans play together against the bots. Also applies to /map and /votemap.",

  "Loot": {
    "_help": [
      "Optional: change what loot crates contain. Only list what differs from the game's defaults.",
      "Crates: per crate, per content: a weight (0 = never, higher = more often).",
      "Mix: how often each crate type appears on the spawn points (default: the three standard crates, equally often).",
      "Crate types: BP_AllCrate, BP_WeaponAmmoCrate, BP_HealArmorBuffCrate, BP_AmmoCrate, BP_ArmorCrate, BP_BuffCrate, BP_HealCrate, BP_WeaponCrate.",
      "This block applies to all rotation entries; an entry with its own Loot block replaces it for that match."
    ],
    "Crates": {
      "BP_AllCrate": { "BP_AtomicBombCannon": 0 }
    },
    "Mix": {
      "BP_AllCrate": 1, "BP_WeaponAmmoCrate": 1, "BP_HealArmorBuffCrate": 1, "BP_BuffCrate": 1
    }
  },

  "Rotation": [
    { "_help": "One match: Map, GameMode and MatchTimeSeconds. Weather and Daytime are optional - left out, they are random every time.",
      "Map": "ZoneZero", "GameMode": "BR", "MatchTimeSeconds": 480, "BotCount": 14 },

    { "_help": "Ballerball on City at night in the rain, with its own bot count.",
      "Map": "City", "GameMode": "BB", "MatchTimeSeconds": 300, "Weather": "rain", "Daytime": "night", "BotCount": 8 },

    { "_help": "Clown-Off on Carnival; weather and daytime random.",
      "Map": "Carnival", "GameMode": "CO", "MatchTimeSeconds": 300 },

    { "_help": "Humans against bots for this match only.",
      "Map": "Camp", "GameMode": "CTF", "MatchTimeSeconds": 420, "HumanVsAI": true, "BotCount": 10 },

    { "_help": "No atomic bombs on the small map: this entry's Loot block replaces the global one.",
      "Map": "Stores", "GameMode": "FFA", "MatchTimeSeconds": 300, "Daytime": "apocalypse",
      "Loot": { "Crates": { "BP_AllCrate": { "BP_AtomicBombCannon": 0 }, "BP_WeaponCrate": { "BP_AtomicBombCannon": 0 } } } },

    { "_help": "Leave out Map and/or GameMode and the server picks them at random for this slot.",
      "MatchTimeSeconds": 300 }
  ],
  "_help_Rotation": [
    "Played top to bottom, then from the start again. An empty or missing list = every match fully random (300 s).",
    "Maps: Ballertopia, Camp, Carnival, City, Motel, Stores, Village, ZoneZero.",
    "GameMode: FFA (free-for-all), TM (team deathmatch), CTF (capture the flag), BR (battle royale), BB (Ballerball), CO (Clown-Off). Every mode works on every map.",
    "Weather: clear, cloudy, fog, rain. Daytime: morning, noon, afternoon, evening, night, apocalypse.",
    "MatchTimeSeconds: length of a match; 0 or missing = 300."
  ],

  "Admins": [
    { "UniqueId": "76561197960287930", "Comment": "Steam player: the SteamID64 (17 digits)" },
    { "UniqueId": "EOS:0002aeeb5b2d4388b9a2e3c4d5e6f701", "Comment": "Epic/GOG player: EOS: plus the Product User ID" }
  ],
  "_help_Admins": [
    "Admins can use these chat commands (type /help in the game to see them):",
    "/kick <player>, /ban <player>, /unban <name|id>, /banlist, /mute <player>, /unmute <player>",
    "/map [map] [mode] [weather] [daytime], /nextmap, /no (cancels a running vote)",
    "/setbots <n>, /addbot [n|name], /removebot [name], /resetbot <name>, /deletebot <name>",
    "Everybody: /help, /maplist, /kill, /stuck, /votemap, /votenext, /votekick, /voteban (votes only while no admin is online), F1 = yes, F2 = no.",
    "Bans and mutes are stored on the server and last until an admin lifts them. The two IDs above are examples - replace them."
  ]
}
