[
  {
    "id": "abiotic-factor",
    "name": "Abiotic Factor",
    "description": "Abiotic Factor Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2857200",
      "game_app_id": "427410",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogOnlineSession: Display: OSS: Session creation completed\\. Automatic start is turned on, starting session now\\.$",
    "events": {
      "chat": "^\\[[\\d\\.]+-[\\d\\.]+:\\d+\\]\\[[\\d ]+\\]LogAbiotic: Display: CHAT LOG: (?P\u003cusername\u003e.*?) (?P\u003cmessage\u003e.*)$",
      "join": "^\\[[\\d\\.]+-[\\d\\.]+:\\d+\\]\\[[\\d ]+\\]LogAbiotic: Display: CHAT LOG: (?P\u003cusername\u003e.*?) has entered the facility\\.$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.]+:\\d+\\]\\[[\\d ]+\\]LogAbiotic: Display: CHAT LOG: (?P\u003cusername\u003e.*?) has exited the facility\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Abiotic Factor Download",
        "app_id": "2857200",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "SandboxSettings.ini Download",
        "url": "https://raw.githubusercontent.com/DFJacob/AbioticFactorDedicatedServer/refs/heads/main/SandboxSettings.ini",
        "target_path": "{{$FullBaseDir}}AbioticFactor/Saved/Config/WindowsServer"
      },
      {
        "kind": "direct",
        "name": "UE4SS version.dll Download",
        "url": "https://raw.githubusercontent.com/igromanru/AF-UE4SS/refs/heads/master/version.dll",
        "target_path": "{{$FullBaseDir}}AbioticFactor/Binaries/Win64",
        "conditional": true
      }
    ],
    "config_files": [
      "AbioticFactor/Saved/Config/WindowsServer/SandboxSettings.ini",
      "AbioticFactor/Binaries/Win64/ue4ss/UE4SS-settings.ini"
    ],
    "art_steam_app_id": "427410",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} AbioticFactor -stdout -FullStdOutLogOutput {{useperfthreads}}{{NoAsyncLoadingThread}}{{useallavailablecores}}{{LANOnly}}{{UseLocalIPs}} -Port={{$GamePort}} -QueryPort={{$QueryPort}} -SteamServerName=\"{{ServerName}}\" -SandboxIniPath=Config/WindowsServer/SandboxSettings.ini {{$FormattedArgs}} {{CustomArgs}}",
    "provenance": "abiotic-factor.kvp"
  },
  {
    "id": "alien-swarm-reactive-drop",
    "name": "Alien Swarm: Reactive Drop",
    "description": "Alien Swarm: Reactive Drop Dedicated Server",
    "steam": {
      "app_id": "582400",
      "game_app_id": "563560",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "582400",
        "platform": "windows"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/alien-swarm-reactive-dropserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "reactivedrop/cfg/server.cfg"
    ],
    "art_steam_app_id": "563560",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -game reactivedrop -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -insecure -maxplayers {{$MaxUsers}} {{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "alien-swarm-reactive-drop.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "american-truck-simulator",
    "name": "American Truck Simulator",
    "description": "American Truck Simulator Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2239530",
      "game_app_id": "270880"
    },
    "ports": [
      {
        "name": "Main Server Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "Query Dedicated Port",
        "proto": "udp",
        "port": 27016
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^\\[MP\\] (?P\u003cusername\u003e.+?) connected, client_id = (?P\u003csessionid\u003e\\d+).*$",
      "leave": "^\\[MP\\] (?P\u003cusername\u003e.+?) disconnected, client_id = (?P\u003csessionid\u003e\\d+).*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2239530"
      },
      {
        "kind": "direct",
        "name": "Settings Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/american-truck-simulator.sii",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "American Truck Simulator/server_config.sii"
    ],
    "art_steam_app_id": "270880",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -nosingle {{$FormattedArgs}}",
    "provenance": "american-truck-simulator.kvp"
  },
  {
    "id": "aneurismiv",
    "name": "ANEURISM IV",
    "description": "ANEURISM IV Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2832030",
      "game_app_id": "2773280"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Steam Port",
        "proto": "udp",
        "port": 7778
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 7779
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d-]+T[\\d:\\.]+Z\\|.*\\|Steam server connected\\.$",
    "events": {
      "chat": "^$",
      "join": "^[\\d-]+T[\\d:\\.]+Z\\|.*\\|(?P\u003cusername\u003e.+?) joined the game\\.$",
      "leave": "^[\\d-]+T[\\d:\\.]+Z\\|.*\\|(?P\u003cusername\u003e.+?) left the game\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2832030"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/aneurismivaniv.cfg",
        "target_path": "{{$FullBaseDir}}unity3d/Vellocet/ANEURISM IV"
      }
    ],
    "config_files": [
      "unity3d/Vellocet/ANEURISM IV/aniv.cfg",
      "unity3d/Vellocet/ANEURISM IV/motd.txt"
    ],
    "art_steam_app_id": "2773280",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{CustomArgs}} -gameport {{$GamePort}} -steamport {{$SteamPort}} -queryport {{$QueryPort}} {{$FormattedArgs}} -timestamps",
    "provenance": "aneurismiv.kvp"
  },
  {
    "id": "ark-sa",
    "name": "ARK: Survival Ascended",
    "description": "ARK: Survival Ascended Dedicated Server with Server API option",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2430930",
      "game_app_id": "2399830",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "HTTP Server Port",
        "proto": "tcp",
        "port": 8888
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 27020
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^[\\d\\.]+_[\\d\\.]+:( | )(?P\u003cusername\u003e.+?)( | )\\((?:.+?)\\): (?P\u003cmessage\u003e.+)(?:\\n \\n )?$",
      "join": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) \\[UniqueNetId:(?P\u003cuserid\u003e.+?) Platform:.*\\] joined this ARK!(?:\\n \\n )?$",
      "leave": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) \\[UniqueNetId:(?P\u003cuserid\u003e.+?) Platform:.*\\] left this ARK!(?:\\n \\n )?$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "2430930",
        "platform": "windows"
      },
      {
        "kind": "github",
        "name": "ServerAPI Launcher Download",
        "repo": "ArkServerApi/AsaApi",
        "target_path": "{{$FullBaseDir}}ShooterGame/Binaries/Win64/",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Game.ini Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-sagame.ini",
        "target_path": "{{$FullBaseDir}}ShooterGame/Saved/Config/WindowsServer/"
      },
      {
        "kind": "direct",
        "name": "GameUserSettings.ini Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-sawin-gameusersettings.ini",
        "target_path": "{{$FullBaseDir}}ShooterGame/Saved/Config/WindowsServer/"
      }
    ],
    "config_files": [
      "ShooterGame/Saved/Config/WindowsServer/GameUserSettings.ini",
      "ShooterGame/Saved/Config/WindowsServer/Game.ini"
    ],
    "art_steam_app_id": "2399830",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{Map}}?listen?Port={{$GamePort}}?RCONEnabled=True?RCONServerGameLogBuffer=600?RCONPort={{$RCONPort}}?{{$FormattedArgs}}{{OverrideOfficialDifficulty}}{{CustomOptions}}?ServerAdminPassword={{$RemoteAdminPassword}} -WinLiveMaxPlayers={{$MaxUsers}} {{passivemods}}{{mods}}{{pconlymods}}{{Colors}}{{exclusivejoin}}{{BattlEye}}{{usestore}}-ServerPlatform={{ServerPlatform}} {{EnableIdlePlayerKick}}{{NoHangDetection}}{{NoTransferFromFiltering}}{{NoGameAnalytics}}{{AllowSpeedLeveling}}{{ForceAllowCaveFlyers}}{{nodinos}}{{ForceRespawnDinos}}{{DisableRailgunPVP}}{{UseStructureStasisGrid}}-culture={{culture}} {{EnableCluster}}{{ServerIP}}{{CustomFlags}} -servergamelog",
    "ported": true,
    "module_id": "ark-sa",
    "provenance": "ark-sa.kvp"
  },
  {
    "id": "ark-sa-min",
    "name": "ARK: Survival Ascended (Minimal)",
    "description": "ARK: Survival Ascended Dedicated Server with Server API option and minimal settings (for Beacon use)",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2430930",
      "game_app_id": "2399830",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 27020
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^[\\d\\.]+_[\\d\\.]+:( | )(?P\u003cusername\u003e.+?)( | )\\((?:.+?)\\): (?P\u003cmessage\u003e.+)(?:\\n \\n )?$",
      "join": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) \\[UniqueNetId:(?P\u003cuserid\u003e.+?) Platform:.*\\] joined this ARK!(?:\\n \\n )?$",
      "leave": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) \\[UniqueNetId:(?P\u003cuserid\u003e.+?) Platform:.*\\] left this ARK!(?:\\n \\n )?$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "2430930",
        "platform": "windows"
      },
      {
        "kind": "github",
        "name": "ServerAPI Launcher Download",
        "repo": "ArkServerApi/AsaApi",
        "target_path": "{{$FullBaseDir}}ShooterGame/Binaries/Win64/",
        "conditional": true
      }
    ],
    "art_steam_app_id": "2399830",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{Map}}?listen?Port={{$GamePort}}?RCONEnabled=True?RCONServerGameLogBuffer=600?RCONPort={{$RCONPort}}{{CustomOptions}}?ServerAdminPassword={{$RemoteAdminPassword}} -WinLiveMaxPlayers={{$MaxUsers}} {{passivemods}}{{mods}}{{pconlymods}}{{Colors}}{{exclusivejoin}}{{BattlEye}}{{usestore}}-ServerPlatform={{ServerPlatform}} {{UseDynamicConfig}}{{EnableIdlePlayerKick}}{{NoHangDetection}}{{DisableCustomCosmetics}}{{NoTransferFromFiltering}}{{NoGameAnalytics}}{{ForceAllowCaveFlyers}}{{nodinos}}{{ForceRespawnDinos}}{{DisableRailgunPVP}}{{UseStructureStasisGrid}}-culture={{culture}} {{EnableCluster}}{{ServerIP}}{{CustomFlags}} -servergamelog",
    "ported": true,
    "module_id": "ark-sa",
    "provenance": "ark-sa-min.kvp"
  },
  {
    "id": "ark-se",
    "name": "ARK: Survival Evolved",
    "description": "ARK: Survival Evolved Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "376030",
      "game_app_id": "346110"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Peer Port",
        "proto": "udp",
        "port": 7778
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 27020
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^[\\d\\.]+_[\\d\\.]+:( | )(?P\u003cusername\u003e.+?)( | )\\((?:.+?)\\): (?P\u003cmessage\u003e.+)\\n \\n $",
      "join": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) (?:joined this ARK!|a rejoint le serveur)\\n \\n $",
      "leave": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) (?:left this ARK!|a quitt. le serveur)\\n \\n $"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "376030"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-semanagemods.sh",
        "target_path": "{{$FullInstanceDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-semanagemods.ps1",
        "target_path": "{{$FullInstanceDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Game.ini Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-segame.ini",
        "target_path": "{{$FullBaseDir}}ShooterGame/Saved/Config/WindowsServer/"
      },
      {
        "kind": "direct",
        "name": "Game.ini Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-segame.ini",
        "target_path": "{{$FullBaseDir}}ShooterGame/Saved/Config/LinuxServer/"
      },
      {
        "kind": "direct",
        "name": "GameUserSettings.ini Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-sewin-gameusersettings.ini",
        "target_path": "{{$FullBaseDir}}ShooterGame/Saved/Config/WindowsServer/"
      },
      {
        "kind": "direct",
        "name": "GameUserSettings.ini Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-selinux-gameusersettings.ini",
        "target_path": "{{$FullBaseDir}}ShooterGame/Saved/Config/LinuxServer/"
      }
    ],
    "config_files": [
      "./ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini",
      "./ShooterGame/Saved/Config/LinuxServer/Game.ini",
      "./ShooterGame/Saved/Config/WindowsServer/GameUserSettings.ini",
      "./ShooterGame/Saved/Config/WindowsServer/Game.ini"
    ],
    "art_steam_app_id": "346110",
    "wine": false,
    "entrypoint_hint": "{{Map}}?listen?Port={{$GamePort}}?QueryPort={{$QueryPort}}?RCONEnabled=True?RCONServerGameLogBuffer=600?RCONPort={{$RCONPort}}?ServerAdminPassword={{$RemoteAdminPassword}}?SessionName=\"{{SessionName}}\"?MultiHome={{$ApplicationIPBinding}}?{{$FormattedArgs}}{{OverrideOfficialDifficulty}}{{CustomOptions}} {{automanagedmods}}{{exclusivejoin}}{{BattlEye}}{{crossplay}}{{epiconly}}{{UseVivox}}{{insecure}}{{EnableIdlePlayerKick}}{{AllowFlyerSpeedLeveling}}{{ForceAllowCaveFlyers}}{{nodinos}}{{PreventHibernation}}{{ForceRespawnDinos}}{{DisableRailgunPVP}}{{UseStructureStasisGrid}}{{AutoDestroyStructures}} -ActiveEvent={{ActiveEvent}} -PublicIPForEpic={{PublicIPForEpic}} -culture={{culture}} {{EnableCluster}}{{CustomFlags}} -servergamelog",
    "provenance": "ark-se.kvp"
  },
  {
    "id": "ark-se-min",
    "name": "ARK: Survival Evolved (Minimal)",
    "description": "ARK: Survival Evolved Dedicated Server with minimal settings (for Beacon use)",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "376030",
      "game_app_id": "346110"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Peer Port",
        "proto": "udp",
        "port": 7778
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 27020
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^[\\d\\.]+_[\\d\\.]+:( | )(?P\u003cusername\u003e.+?)( | )\\((?:.+?)\\): (?P\u003cmessage\u003e.+)\\n \\n $",
      "join": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) (?:joined this ARK!|a rejoint le serveur)\\n \\n $",
      "leave": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) (?:left this ARK!|a quitt. le serveur)\\n \\n $"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "376030"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-se-minmanagemods.sh",
        "target_path": "{{$FullInstanceDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-se-minmanagemods.ps1",
        "target_path": "{{$FullInstanceDir}}",
        "conditional": true
      }
    ],
    "art_steam_app_id": "346110",
    "wine": false,
    "entrypoint_hint": "{{Map}}?listen?Port={{$GamePort}}?QueryPort={{$QueryPort}}?RCONEnabled=True?RCONServerGameLogBuffer=600?RCONPort={{$RCONPort}}?MultiHome={{$ApplicationIPBinding}}?{{$FormattedArgs}}{{CustomOptions}}?ServerAdminPassword={{$RemoteAdminPassword}} {{automanagedmods}}{{exclusivejoin}}{{BattlEye}}{{crossplay}}{{epiconly}}{{UseVivox}}{{UseDynamicConfig}}{{insecure}}{{EnableIdlePlayerKick}}{{NoHangDetection}}{{NoTransferFromFiltering}}{{AllowFlyerSpeedLeveling}}{{ForceAllowCaveFlyers}}{{nodinos}}{{PreventHibernation}}{{ForceRespawnDinos}}{{DisableRailgunPVP}}{{UseStructureStasisGrid}}{{AutoDestroyStructures}} -ActiveEvent={{ActiveEvent}} -PublicIPForEpic={{PublicIPForEpic}} -culture={{culture}} {{EnableCluster}}{{CustomFlags}} -servergamelog",
    "provenance": "ark-se-min.kvp"
  },
  {
    "id": "ark-seminapi",
    "name": "ARK: Survival Evolved (Minimal with Server API)",
    "description": "ARK: Survival Evolved Dedicated Server with minimal settings (for Beacon use) plus Server API plugin",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "376030",
      "game_app_id": "346110",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Peer Port",
        "proto": "udp",
        "port": 7778
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 27020
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^[\\d\\.]+_[\\d\\.]+:( | )(?P\u003cusername\u003e.+?)( | )\\((?:.+?)\\): (?P\u003cmessage\u003e.+)\\n \\n $",
      "join": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) (?:joined this ARK!|a rejoint le serveur)\\n \\n $",
      "leave": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) (?:left this ARK!|a quitt. le serveur)\\n \\n $"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "376030",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-se-minapimanagemods.sh",
        "target_path": "{{$FullInstanceDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-se-minapimanagemods.ps1",
        "target_path": "{{$FullInstanceDir}}",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "ServerAPI Download",
        "repo": "ArkServerApi/AseApi",
        "target_path": "{{$FullBaseDir}}ShooterGame/Binaries/Win64/"
      },
      {
        "kind": "direct",
        "name": "Winescript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ark-seminapiwinescript.sh",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "art_steam_app_id": "346110",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{Map}}?listen?Port={{$GamePort}}?QueryPort={{$QueryPort}}?RCONEnabled=True?RCONServerGameLogBuffer=600?RCONPort={{$RCONPort}}?MultiHome={{$ApplicationIPBinding}}?{{$FormattedArgs}}{{CustomOptions}}?ServerAdminPassword={{$RemoteAdminPassword}} {{automanagedmods}}{{exclusivejoin}}{{BattlEye}}{{crossplay}}{{epiconly}}{{UseVivox}}{{UseDynamicConfig}}{{insecure}}{{EnableIdlePlayerKick}}{{NoHangDetection}}{{NoTransferFromFiltering}}{{AllowFlyerSpeedLeveling}}{{ForceAllowCaveFlyers}}{{nodinos}}{{PreventHibernation}}{{ForceRespawnDinos}}{{DisableRailgunPVP}}{{UseStructureStasisGrid}}{{AutoDestroyStructures}} -ActiveEvent={{ActiveEvent}} -PublicIPForEpic={{PublicIPForEpic}} -culture={{culture}} {{EnableCluster}}{{CustomFlags}} -servergamelog",
    "provenance": "ark-seminapi.kvp"
  },
  {
    "id": "arma-reforger",
    "name": "Arma Reforger",
    "description": "Arma Reforger Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 2001
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 17777
      },
      {
        "name": "RCON Port",
        "proto": "udp",
        "port": 19999
      }
    ],
    "rcon_adapter": "battleye",
    "admin_method": "BattlEyeRCON",
    "ready_pattern": "^[\\d:\\s]*ENGINE\\s+: Game successfully created\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\s+DEFAULT\\s+:.*'Player #(?P\u003csessionid\u003e.+?) (?P\u003cusername\u003e.+) \\((?P\u003cendpoint\u003e.*?):\\d+\\) connected'$",
      "leave": "^\\s+DEFAULT\\s+:.*'Player #(?P\u003csessionid\u003e.+?) (?P\u003cusername\u003e.+) disconnected'$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1874900",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1890870",
        "platform": "windows",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1890870",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server Template Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/arma-reforgerservermain8.json",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server Template Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/arma-reforgerserverexp8.json",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      }
    ],
    "config_files": [
      "Configs/serverconfig.json"
    ],
    "art_steam_app_id": "1874880",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -gproj \"{{$FullBaseDir}}addons/data/ArmaReforger.gproj\" -profile \"{{$FullBaseDir}}AReforgerMaster\" -bepath \"{{$FullBaseDir}}battleye\" -bindPort {{$GamePort}} -a2sPort {{$QueryPort}} -config \"{{$FullBaseDir}}Configs/serverconfig.json\" -a2sIpAddress {{$ApplicationIPBinding}} -listScenarios -noThrow {{$FormattedArgs}} {{addonsVerify}}{{addonsRepair}}{{logStats}} {{CustomServerArgs}}",
    "provenance": "arma-reforger.kvp"
  },
  {
    "id": "arma3",
    "name": "Arma 3",
    "description": "Arma 3 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 2302
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 2303
      },
      {
        "name": "Steam Port",
        "proto": "udp",
        "port": 2304
      },
      {
        "name": "Reserved Port",
        "proto": "udp",
        "port": 2305
      },
      {
        "name": "BattlEye Port",
        "proto": "udp",
        "port": 2306
      },
      {
        "name": "RCON Port",
        "proto": "udp",
        "port": 2307
      }
    ],
    "rcon_adapter": "battleye",
    "admin_method": "BattlEyeRCON",
    "ready_pattern": "^RCon admin #\\d+ \\([\\d\\.:]+\\) logged in$",
    "events": {
      "chat": "^$",
      "join": "^([\\d:]+ BattlEye Server: )?Player #(?P\u003csessionid\u003e.+?) (?P\u003cusername\u003e.+( \\(\\d+\\))?) \\((?P\u003cendpoint\u003e.+?):(?:\\d+)\\) connected$",
      "leave": "^([\\d:]+ BattlEye Server: )?Player #(?P\u003csessionid\u003e.+?) (?P\u003cusername\u003e.+( \\(\\d+\\))?) disconnected$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "233780",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "233780",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "233780",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "233780",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Creator DLC Download",
        "app_id": "233780",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Performance Profiling Download",
        "app_id": "233780",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "233780",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "233780",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "233780",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "233780",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "233780",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/arma3server.cfg",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Basic Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/arma3basic.cfg",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/arma3managemods.sh",
        "target_path": "{{$FullInstanceDir}}"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/arma3managemods.ps1",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "server.cfg",
      "battleye/beserver{{ServerExecutable}}.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "107410",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -name=AMPServer \"-profiles={{$FullBaseDir}}A3Master\" \"-bepath={{$FullBaseDir}}battleye\" -port={{$GamePort}} -config=server.cfg -cfg=basic.cfg -world=empty -ip={{$ApplicationIPBinding}} {{autoInit}}{{$FormattedArgs}} {{parfile}}{{CustomServerArgs}}",
    "provenance": "arma3.kvp"
  },
  {
    "id": "aska",
    "name": "ASKA",
    "description": "ASKA Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "3246670",
      "game_app_id": "1898300",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Running game version:.*$",
    "events": {
      "chat": "^$",
      "join": "^(?P\u003cusername\u003e.+?) connected!$",
      "leave": "^(?P\u003cusername\u003e.+?) disconnected!$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "3246670",
        "platform": "windows"
      }
    ],
    "config_files": [
      "server properties.txt"
    ],
    "art_steam_app_id": "1898300",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -propertiesPath \"server properties.txt\" {{$FormattedArgs}} {{CustomArgs}}",
    "provenance": "aska.kvp"
  },
  {
    "id": "assetto-corsa",
    "name": "Assetto Corsa",
    "description": "Assetto Corsa Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "302550",
      "game_app_id": "244210",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 9600
      },
      {
        "name": "HTTP Port",
        "proto": "tcp",
        "port": 9601
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(Server started|\\[[\\d:]+ INF\\] Starting update loop with an update rate of \\d+hz)$",
    "events": {
      "chat": "^$",
      "join": "^DRIVER ACCEPTED FOR CAR (?P\u003cusername\u003e.+?)$",
      "leave": "^Clean exit, driver disconnected:\\s+(?P\u003cusername\u003e.+?) \\[\\]$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "302550",
        "platform": "windows"
      },
      {
        "kind": "github",
        "name": "Modded Server Download",
        "repo": "compujuckel/AssettoServer",
        "asset_regex": "assetto-server-win-x64.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "Modded Server Download",
        "repo": "compujuckel/AssettoServer",
        "asset_regex": "assetto-server-linux-x64.tar.gz",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007",
        "conditional": true
      }
    ],
    "config_files": [
      "cfg/server_cfg.ini"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "244210",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "assetto-corsa.kvp"
  },
  {
    "id": "assetto-corsa-comp",
    "name": "Assetto Corsa Competizione",
    "description": "Assetto Corsa Competizione Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1430110",
      "game_app_id": "805550",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "UDP Port",
        "proto": "udp",
        "port": 9231
      },
      {
        "name": "TCP Port",
        "proto": "tcp",
        "port": 9232
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Listening to TCP \\d+ \\| UDP \\d+$",
    "events": {
      "chat": "^CHAT (?P\u003cusername\u003e.+?): (?P\u003cmessage\u003e.+)$",
      "join": "^New connection request: id (?P\u003csessionid\u003e\\d+?) (?P\u003cusername\u003e.+?) (?P\u003cuserid\u003eS\\d+?) on car model \\d+$",
      "leave": "^(Client (?P\u003csessionid\u003e\\d+?) closed the connection \\(\\d+\\)|Disconnecting connId (?P\u003csessionid\u003e\\d+?) after \\d+s due to setting ignorePrematureDisconnects=false)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "1430110",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Settings.json Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/assetto-corsa-compsettings.json",
        "target_path": "{{$FullBaseDir}}server/cfg"
      }
    ],
    "config_files": [
      "server/cfg/configuration.json",
      "server/cfg/settings.json",
      "server/cfg/event.json",
      "server/cfg/assistRules.json"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "805550",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "assetto-corsa-comp.kvp"
  },
  {
    "id": "astro-colony",
    "name": "Astro Colony",
    "description": "Astro Colony Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2662210",
      "game_app_id": "1614550"
    },
    "ports": [
      {
        "name": "Steam Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogBlueprintUserMessages: \\[BP_DedicatedServerPlayerController_C_\\d+\\] server create success$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "2662210"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "2934900"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      }
    ],
    "config_files": [
      "AstroColony/Saved/Config/WindowsServer/ServerSettings.ini",
      "AstroColony/Saved/Config/LinuxServer/ServerSettings.ini"
    ],
    "art_steam_app_id": "1614550",
    "wine": false,
    "entrypoint_hint": "AstroColony -QueryPort={{$SteamQueryPort}} {{$FormattedArgs}} {{$PlatformArgs}}",
    "provenance": "astro-colony.kvp"
  },
  {
    "id": "astroneer",
    "name": "Astroneer",
    "description": "Astroneer Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "728470",
      "game_app_id": "361420",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Console Port",
        "proto": "tcp",
        "port": 1234
      }
    ],
    "rcon_adapter": "telnet",
    "admin_method": "TelnetRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "728470",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Server Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/astroneerastroserversettings.ini",
        "target_path": "{{$FullBaseDir}}Astro/Saved/Config/WindowsServer"
      }
    ],
    "config_files": [
      "Astro/Saved/Config/WindowsServer/AstroServerSettings.ini",
      "Astro/Saved/Config/WindowsServer/GameUserSettings.ini",
      "Astro/Saved/Config/WindowsServer/Engine.ini"
    ],
    "art_steam_app_id": "361420",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} Port={{$ApplicationPort1}} ConsolePort={{$RemoteAdminPort}} {{$FormattedArgs}} -log",
    "provenance": "astroneer.kvp"
  },
  {
    "id": "avorion",
    "name": "Avorion",
    "description": "Avorion Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "565060",
      "game_app_id": "445220"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 27000
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27003
      },
      {
        "name": "Steam Query Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Steam Port",
        "proto": "udp",
        "port": 27021
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 27015
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Server startup complete\\.$",
    "events": {
      "join": "^\u003cServer\u003e Player (?P\u003cusername\u003e.+?) joined the galaxy$",
      "leave": "^\u003cServer\u003e Player (?P\u003cusername\u003e.+?) left the galaxy$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "565060"
      }
    ],
    "config_files": [
      "galaxies/{{GalaxyName}}/server.ini"
    ],
    "art_steam_app_id": "445220",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} --port {{$GamePort}} --query-port {{$QueryPort}} --steam-query-port {{$SteamQueryPort}} --steam-master-port {{$SteamPort}} --rcon-port {{$RCONPort}} --rcon-password \"{{$RemoteAdminPassword}}\" --datapath \"{{$FullBaseDir}}galaxies\" {{$FormattedArgs}}",
    "provenance": "avorion.kvp",
    "notes": [
      "chat regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "barotrauma",
    "name": "Barotrauma",
    "description": "Barotrauma Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1026340",
      "game_app_id": "602960"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27016
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\s+Server started$",
    "events": {
      "chat": "^$",
      "join": "^\\s+(?P\u003cusername\u003e.+?) has joined the server\\.$",
      "leave": "^\\s+(?P\u003cusername\u003e.+?) has left the server\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1026340"
      },
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/barotraumaserversettings.xml",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Install LuaCsForBarotrauma",
        "url": "https://github.com/evilfactory/LuaCsForBarotrauma/releases/download/latest/luacsforbarotrauma_patch_windows_server.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Install LuaCsForBarotrauma",
        "url": "https://github.com/evilfactory/LuaCsForBarotrauma/releases/download/latest/luacsforbarotrauma_patch_linux_server.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "config_files": [
      "serversettings.xml"
    ],
    "art_steam_app_id": "602960",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "ported": true,
    "module_id": "barotrauma",
    "provenance": "barotrauma.kvp"
  },
  {
    "id": "beammp",
    "name": "BeamMP",
    "description": "BeamMP Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Main Game Port",
        "proto": "both",
        "port": 30814
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*\\[INFO\\] ALL SYSTEMS STARTED SUCCESSFULLY, EVERYTHING IS OKAY|.*\\[ERROR\\] No AuthKey specified in the \\\"ServerConfig\\.toml\\\" file\\. Please get an AuthKey, enter it into the config file, and restart this server\\.$",
    "events": {
      "chat": "^.*\\[CHAT\\] \\(\\d+\\) \u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^.*\\[INFO\\] (?P\u003cusername\u003e.+?) is now synced!$",
      "leave": "^.*\\[INFO\\] (?P\u003cusername\u003e.+?) Connection Terminated$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "BeamMP Download",
        "repo": "BeamMP/BeamMP-Server",
        "asset_regex": "BeamMP-Server.exe",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "BeamMP Download",
        "repo": "BeamMP/BeamMP-Server",
        "asset_regex": "BeamMP-Server.{{ServerVersion}}.x86_64",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "BeamMP Download",
        "repo": "BeamMP/BeamMP-Server",
        "asset_regex": "BeamMP-Server.{{ServerVersion}}.arm64",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "BeamMP Download",
        "url": "https://github.com/BeamMP/BeamMP-Server/releases/download/{{ServerPrereleaseVersion}}/BeamMP-Server.exe",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "BeamMP Download",
        "url": "https://github.com/BeamMP/BeamMP-Server/releases/download/{{ServerPrereleaseVersion}}/BeamMP-Server.{{ServerVersion}}.x86_64",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "BeamMP Download",
        "url": "https://github.com/BeamMP/BeamMP-Server/releases/download/{{ServerPrereleaseVersion}}/BeamMP-Server.{{ServerVersion}}.arm64",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/beammpServerConfig.toml",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "ServerConfig.toml"
    ],
    "art_steam_app_id": "284160",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "beammp.kvp"
  },
  {
    "id": "beasts-of-bermuda",
    "name": "Beasts of Bermuda",
    "description": "Beasts of Bermuda Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "882430",
      "game_app_id": "719890",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogServerSave: Display: Finished loading server data, game is now broadcasting online\\. Your server ID is: \\d+\\.$",
    "events": {
      "chat": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogChat: Display: Received Dispatched Msg - From: (?P\u003cusername\u003e.+?) \\[(?P\u003cuserid\u003e\\d+?)\\] \\|\\| Msg: (?P\u003cmessage\u003e.*)$",
      "join": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogBeastsOfBermuda: Display: Finished Post login loading process for player (?P\u003cusername\u003e.+?) with ID (?P\u003cuserid\u003e\\d+?)$",
      "leave": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogServerSave: Display: HandlePlayableSaveOnDestroy for Character:.+, SteamID:(?P\u003cuserid\u003e\\d+?)\\..+$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "882430",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Game.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/beasts-of-bermudagame.ini",
        "target_path": "{{$FullBaseDir}}WindowsServer/BeastsOfBermuda/Saved/Config/WindowsServer"
      }
    ],
    "config_files": [
      "WindowsServer/BeastsOfBermuda/Saved/Config/WindowsServer/Game.ini"
    ],
    "art_steam_app_id": "719890",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} BeastsOfBermuda -Port={{$GamePort}} -QueryPort={{$SteamQueryPort}} -MultiHome={{$ApplicationIPBinding}} {{$FormattedArgs}} -stdout -FullStdOutLogOutput",
    "provenance": "beasts-of-bermuda.kvp"
  },
  {
    "id": "black-mesa",
    "name": "Black Mesa",
    "description": "Black Mesa Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "346680",
      "game_app_id": "362890"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "346680"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/black-mesaserver1-3.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "bms/cfg/server.cfg"
    ],
    "art_steam_app_id": "362890",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game bms -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} -tickrate {{tickrate}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "black-mesa.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "blackwake",
    "name": "Blackwake",
    "description": "Blackwake Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "423410",
      "game_app_id": "420290",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 25001
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "423410",
        "platform": "windows"
      }
    ],
    "config_files": [
      "Server.cfg"
    ],
    "art_steam_app_id": "420290",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -batchmode -nographics {{$FormattedArgs}} -logfile -",
    "provenance": "blackwake.kvp"
  },
  {
    "id": "broke-protocol",
    "name": "Broke Protocol",
    "description": "Broke Protocol Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "696370",
      "game_app_id": "696370"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 5557
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 5558
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[LOG\\] Ready to serve clients on UDP port: \\d+$",
    "events": {
      "chat": "^$",
      "join": "^\\[LOG\\] (?P\u003cusername\u003e.+?) connected$",
      "leave": "^\\[LOG\\] (?P\u003cusername\u003e.+?) disconnected$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "696370"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://drive.usercontent.google.com/download?id=1iS2gE_stqMcd8eqqtwXjOmWXUc-IkFLy\u0026export=download\u0026authuser=0\u0026confirm=t",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "settings.json"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "696370",
    "wine": false,
    "entrypoint_hint": "-batchmode -logfile - -ignorePlugins \"{{ignorePlugins}}\"",
    "provenance": "broke-protocol.kvp"
  },
  {
    "id": "bun-app-runner",
    "name": "Bun App Runner",
    "description": "Bun App Runner",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Main Port",
        "proto": "both",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "App Download",
        "repo": "{{DownloadSource}}",
        "asset_regex": "{{DownloadFilename}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "App Download",
        "url": "{{DownloadSource}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "wine": false,
    "entrypoint_hint": "{{BunArgs}} {{ApplicationName}} {{CommandLineArgs}}",
    "provenance": "bun-app-runner.kvp"
  },
  {
    "id": "call-of-duty4mw",
    "name": "Call of Duty 4: Modern Warfare",
    "description": "Call of Duty 4: Modern Warfare Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "7940",
      "game_app_id": "7940",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 28960
      },
      {
        "name": "Authentication Port",
        "proto": "udp",
        "port": 20800
      },
      {
        "name": "Master Port",
        "proto": "udp",
        "port": 20810
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "7940",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/call-of-duty4mwserver.cfg",
        "target_path": "{{$FullBaseDir}}main"
      }
    ],
    "config_files": [
      "main/server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "7940",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} +set sv_punkbuster 0 +exec \"server.cfg\" +set net_port {{$GamePort}} +set authPort {{$AuthPort}} +set masterPort {{$MasterPort}} {{map_mode}}{{$FormattedArgs}}",
    "provenance": "call-of-duty4mw.kvp"
  },
  {
    "id": "call-of-dutybo1",
    "name": "Call of Duty: Black Ops (Plutonium Mod)",
    "description": "Call of Duty: Black Ops Dedicated Server using the Plutonium mod launcher",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "42700",
      "game_app_id": "42700",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 28960
      }
    ],
    "rcon_adapter": "quake_rcon",
    "admin_method": "QuakeRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Client Download",
        "app_id": "42700",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Plutonium Updater Download",
        "url": "https://github.com/mxve/plutonium-updater.rs/releases/latest/download/plutonium-updater-x86_64-pc-windows-msvc.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Plutonium Updater Download",
        "url": "https://github.com/mxve/plutonium-updater.rs/releases/latest/download/plutonium-updater-x86_64-unknown-linux-gnu.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Plutonium Config Files Download",
        "url": "https://github.com/xerxes-at/T5ServerConfig/archive/refs/heads/master.zip",
        "target_path": "{{$FullRootDir}}configs"
      }
    ],
    "config_files": [
      "Plutonium/storage/t5/dedicated.cfg",
      "Plutonium/storage/t5/dedicated_sp.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "42700",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{GameMode}} +set net_port {{$ServerPort}} +set net_ip {{$ApplicationIPBinding}} +set rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} {{MapMode}}",
    "provenance": "call-of-dutybo1.kvp"
  },
  {
    "id": "call-of-dutybo2",
    "name": "Call of Duty: Black Ops II (Plutonium Mod)",
    "description": "Call of Duty: Black Ops II Dedicated Server using the Plutonium mod launcher",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "202990",
      "game_app_id": "202970",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 4976
      }
    ],
    "rcon_adapter": "quake_rcon",
    "admin_method": "QuakeRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Multiplayer Client Download",
        "app_id": "202990",
        "platform": "windows"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Zombies Client Download",
        "app_id": "212910",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Plutonium Updater Download",
        "url": "https://github.com/mxve/plutonium-updater.rs/releases/latest/download/plutonium-updater-x86_64-pc-windows-msvc.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Plutonium Updater Download",
        "url": "https://github.com/mxve/plutonium-updater.rs/releases/latest/download/plutonium-updater-x86_64-unknown-linux-gnu.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Plutonium Config Files Download",
        "url": "https://github.com/xerxes-at/T6ServerConfigs/archive/refs/heads/master.zip",
        "target_path": "{{$FullRootDir}}configs"
      }
    ],
    "config_files": [
      "Plutonium/storage/t6/dedicated.cfg",
      "Plutonium/storage/t6/dedicated_zm.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "202970",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{GameModeNew}} +set net_port {{$ServerPort}} +set net_ip {{$ApplicationIPBinding}} +set rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} {{MapMode}}",
    "provenance": "call-of-dutybo2.kvp"
  },
  {
    "id": "call-of-dutymw2",
    "name": "Call of Duty: Modern Warfare 2 (2009)",
    "description": "Call of Duty: Modern Warfare 2 (2009) Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "10190",
      "game_app_id": "10190",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 28960
      }
    ],
    "rcon_adapter": "quake_rcon",
    "admin_method": "QuakeRCON",
    "ready_pattern": "^Got \\d+ names from the master server$",
    "events": {
      "chat": "^$",
      "join": "^Registering xuid (?P\u003cuserid\u003e.+?) at slot \\d+ in .*$",
      "leave": "^Removing xuid (?P\u003cuserid\u003e.+?) \\(clientNum \\d+\\) from session$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Game Download",
        "app_id": "10190",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "IW4x Launcher Download",
        "url": "https://github.com/iw4x/launcher/releases/download/v1.1.6/iw4x-launcher.exe",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "IW4x Launcher Download",
        "url": "https://github.com/iw4x/launcher/releases/download/v1.1.6/iw4x-launcher-x86_64-unknown-linux-gnu.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/call-of-dutymw2server.cfg",
        "target_path": "{{$FullBaseDir}}userraw"
      }
    ],
    "config_files": [
      "userraw/server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "10190",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -console -dedicated -stdout +set fs_game \"{{fs_game}}\" +set net_port \"{{$GamePort}}\" +set net_ip \"{{$ApplicationIPBinding}}\" +set rcon_password \"{{$RemoteAdminPassword}}\" +exec \"server.cfg\" +set party_enable \"0\" {{$FormattedArgs}} +map_rotate",
    "provenance": "call-of-dutymw2.kvp"
  },
  {
    "id": "call-of-dutymw3",
    "name": "Call of Duty: Modern Warfare 3 (2011)",
    "description": "Call of Duty: Modern Warfare 3 (2011) Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "42750",
      "game_app_id": "42690",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Open Game Port",
        "proto": "udp",
        "port": 27014
      },
      {
        "name": "Secure Game Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "Authentication Port",
        "proto": "udp",
        "port": 8766
      },
      {
        "name": "Master Server Port",
        "proto": "udp",
        "port": 27016
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "42750",
        "platform": "windows"
      }
    ],
    "config_files": [
      "admin/server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "42690",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} +set sv_config \"server.cfg\" +set net_queryPort {{$OpenGamePort}} +set net_port {{$SecureGamePort}} +set net_authPort {{$AuthPort}} +set net_masterServerPort {{$MasterServerPort}} +start_map_rotate {{$FormattedArgs}}",
    "provenance": "call-of-dutymw3.kvp"
  },
  {
    "id": "call-of-dutymw3-plutonium",
    "name": "Call of Duty: Modern Warfare 3 (2011 - Plutonium Mod)",
    "description": "Call of Duty: Modern Warfare 3 (2011) Dedicated Server using the Plutonium mod launcher",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "42750",
      "game_app_id": "42690",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 27016
      }
    ],
    "rcon_adapter": "quake_rcon",
    "admin_method": "QuakeRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "42750",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Plutonium Updater Download",
        "url": "https://github.com/mxve/plutonium-updater.rs/releases/latest/download/plutonium-updater-x86_64-pc-windows-msvc.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Plutonium Updater Download",
        "url": "https://github.com/mxve/plutonium-updater.rs/releases/latest/download/plutonium-updater-x86_64-unknown-linux-gnu.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Plutonium Config Files Download",
        "url": "https://github.com/xerxes-at/IW5ServerConfig/archive/refs/heads/master.zip",
        "target_path": "{{$FullRootDir}}configs"
      }
    ],
    "config_files": [
      "IW5/admin/server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "42690",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} iw5mp \"{{$FullBaseDir}}IW5\" -dedicated +set key {{ServerKey}} +set fs_game \"{{fs_game}}\" +set sv_config server.cfg +net_port {{$ServerPort}} +rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} +start_map_rotate",
    "provenance": "call-of-dutymw3-plutonium.kvp"
  },
  {
    "id": "call-of-dutywaw",
    "name": "Call of Duty: World at War (Plutonium Mod)",
    "description": "Call of Duty: World at War Dedicated Server using the Plutonium mod launcher",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "10090",
      "game_app_id": "10090",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 28960
      }
    ],
    "rcon_adapter": "quake_rcon",
    "admin_method": "QuakeRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Client Download",
        "app_id": "10090",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Plutonium Updater Download",
        "url": "https://github.com/mxve/plutonium-updater.rs/releases/latest/download/plutonium-updater-x86_64-pc-windows-msvc.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Plutonium Updater Download",
        "url": "https://github.com/mxve/plutonium-updater.rs/releases/latest/download/plutonium-updater-x86_64-unknown-linux-gnu.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Multiplayer Config File Download",
        "url": "https://raw.githubusercontent.com/xerxes-at/T4ServerConfigs/main/main/server.cfg",
        "target_path": "{{$FullBaseDir}}T4/main"
      },
      {
        "kind": "direct",
        "name": "Zombies Config File Download",
        "url": "https://raw.githubusercontent.com/xerxes-at/T4ServerConfigs/main/main/server_zm.cfg",
        "target_path": "{{$FullBaseDir}}T4/main"
      }
    ],
    "config_files": [
      "T4/main/server.cfg",
      "T4/main/server_zm.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "10090",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{GameMode}} +set net_port {{$ServerPort}} +set net_ip {{$ApplicationIPBinding}} +set rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} {{MapMode}}",
    "provenance": "call-of-dutywaw.kvp"
  },
  {
    "id": "carrier-command2",
    "name": "Carrier Command 2",
    "description": "Carrier Command 2 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1489630",
      "game_app_id": "1489630",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 25565
      },
      {
        "name": "Steam Port",
        "proto": "udp",
        "port": 25566
      },
      {
        "name": "Reserved Port",
        "proto": "udp",
        "port": 25567
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 25568
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d:]+ : connected to Steam$",
    "events": {
      "chat": "^$",
      "join": "^[\\d:]+ : (?P\u003cusername\u003e.+?) \\(steam id (?P\u003cuserid\u003e.+?)\\) authenticated by Steam$",
      "leave": "^[\\d:]+ : (?P\u003cusername\u003e.+?) \\(steam id (?P\u003cuserid\u003e.+?)\\) disconnected$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "1489630",
        "platform": "windows"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Server Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/carrier-command2server_config.xml",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "server_config.xml"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "1489630",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "carrier-command2.kvp"
  },
  {
    "id": "chivalry-medieval-warfare",
    "name": "Chivalry: Medieval Warfare",
    "description": "Chivalry: Medieval Warfare Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "220070",
      "game_app_id": "219640",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Auth Port",
        "proto": "udp",
        "port": 7778
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/chivalry-medieval-warfareudkgame.ini",
        "target_path": "{{$FullBaseDir}}UDKGame/Config"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "220070",
        "platform": "windows"
      }
    ],
    "config_files": [
      "UDKGame/Config/PCServer-UDKGame.ini"
    ],
    "art_steam_app_id": "219640",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{Map}}?steamsockets{{modname}}{{CustomOptions}} -Port={{$GamePort}} -AuthPort={{$AuthPort}} -QueryPort={{$QueryPort}} -MultiHome={{$ApplicationIPBinding}} -MaxPlayers={{$MaxUsers}} {{sdkfileid}} -log=gameservers.log -seekfreeloadingserver",
    "provenance": "chivalry-medieval-warfare.kvp"
  },
  {
    "id": "clone-hero",
    "name": "Clone Hero",
    "description": "Clone Hero Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 14242
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d-]+T[\\d:]+\\.\\d+(\\+|-)\\d+:\\d+\\] .* \\[Info\\] Server running\\.\\.\\.$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "Server Download",
        "repo": "clonehero-game/releases",
        "asset_regex": "CloneHero-StandaloneServer.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Settings.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/clone-herosettings.ini",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "settings.ini"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} --port {{$ServerPort}} --address {{$ApplicationIPBinding}} --name \"{{name}}\" {{EnablePassword}}{{$FormattedArgs}} --logLevel 4",
    "provenance": "clone-hero.kvp"
  },
  {
    "id": "code-server",
    "name": "code-server",
    "description": "Self-hosted VS Code in the browser",
    "os": [
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 9090
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d-]+T[\\d:]+\\.\\d+Z\\] info\\s+Session server listening on .*$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "config_files": [
      "config.yaml"
    ],
    "steam_login_required": true,
    "wine": false,
    "entrypoint_hint": "--bind-addr {{$ApplicationIPBinding}}:{{$ServerPort}} --user-data-dir \"{{$FullBaseDir}}data\" --extensions-dir \"{{$FullBaseDir}}extensions\" {{SSLMode}}{{$FormattedArgs}} {{ignore-last-opened}}{{disable-getting-started-override}}{{disable-workspace-trust}}{{disable-file-downloads}}{{disable-file-uploads}}{{disable-telemetry}}{{disable-update-check}}{{verbose}}{{enable-proposed-api}}{{disable-proxy}}{{skip-auth-preflight}}{{CustomArgs}} \"{{WorkspacePath}}\"",
    "provenance": "code-server.kvp"
  },
  {
    "id": "colony-survival",
    "name": "Colony Survival",
    "description": "Colony Survival Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "748090",
      "game_app_id": "366090"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27004
      },
      {
        "name": "Steam Port",
        "proto": "tcp",
        "port": 27005
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d-]+_[\\d-]+\\]\\[Log\\]:Hosting on [\\d\\.]+:\\d+$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "748090"
      }
    ],
    "art_steam_app_id": "366090",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -batchmode -nographics +server.gameport {{$ServerPort}} +server.steamport {{$SteamPort}} +server.ip {{$ApplicationIPBinding}} {{$FormattedArgs}}",
    "provenance": "colony-survival.kvp"
  },
  {
    "id": "conan-exiles",
    "name": "Conan Exiles (Legacy)",
    "description": "Conan Exiles Legacy UE4 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "443030",
      "game_app_id": "440900",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game and Mods Port",
        "proto": "both",
        "port": 7777
      },
      {
        "name": "Pinger Port",
        "proto": "udp",
        "port": 7778
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 25575
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^.*LogGameState: Match State Changed from WaitingToStart to InProgress$",
    "events": {
      "chat": "^.*ChatWindow: Character (?P\u003cusername\u003e.+?) said: (?P\u003cmessage\u003e.+?)$",
      "join": "^.*LogNet: Join succeeded: (?P\u003cusername\u003e.+?#\\d+)$",
      "leave": "^.*LogNet: Player disconnected: (?P\u003cusername\u003e.+?#\\d+)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD and Conan Exiles Download",
        "app_id": "443030",
        "platform": "windows"
      }
    ],
    "config_files": [
      "ConanSandbox/Saved/Config/WindowsServer/ServerSettings.ini",
      "ConanSandbox/Saved/Config/WindowsServer/Game.ini",
      "ConanSandbox/Saved/Config/WindowsServer/Engine.ini"
    ],
    "art_steam_app_id": "440900",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{Map}} -stdout -FullStdOutLogOutput -Port={{$ApplicationPort1}} -QueryPort={{$ApplicationPort3}} -RconPort={{$RemoteAdminPort}} -RconEnabled=1 -RconPassword=\"{{$RemoteAdminPassword}}\" -MaxPlayers={{$MaxUsers}} {{$FormattedArgs}}",
    "ported": true,
    "module_id": "conan-exiles",
    "provenance": "conan-exiles.kvp"
  },
  {
    "id": "conan-exiles-enhanced",
    "name": "Conan Exiles Enhanced",
    "description": "Conan Exiles Enhanced UE5 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "443030",
      "game_app_id": "440900"
    },
    "ports": [
      {
        "name": "Game and Mods Port",
        "proto": "both",
        "port": 7777
      },
      {
        "name": "Pinger Port",
        "proto": "udp",
        "port": 7778
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 25575
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogGameState: Match State Changed from WaitingToStart to InProgress$",
    "events": {
      "chat": "^.*ChatWindow: Character (?P\u003cusername\u003e.+?) said: (?P\u003cmessage\u003e.+?)$",
      "join": "^.*LogNet: Join succeeded: (?P\u003cusername\u003e.+?#\\d+)$",
      "leave": "^.*LogNet: Player disconnected: (?P\u003cusername\u003e.+?#\\d+)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD and Conan Exiles Download",
        "app_id": "443030"
      }
    ],
    "config_files": [
      "ConanSandbox/Saved/Config/WindowsServer/ServerSettings.ini",
      "ConanSandbox/Saved/Config/WindowsServer/Game.ini",
      "ConanSandbox/Saved/Config/WindowsServer/Engine.ini",
      "ConanSandbox/Saved/Config/LinuxServer/ServerSettings.ini",
      "ConanSandbox/Saved/Config/LinuxServer/Game.ini",
      "ConanSandbox/Saved/Config/LinuxServer/Engine.ini"
    ],
    "art_steam_app_id": "440900",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} ConanSandbox {{Map}} -stdout -FullStdOutLogOutput -Port={{$GamePort}} -QueryPort={{$QueryPort}} -RconPort={{$RCONPort}} -RconEnabled=1 -RconPassword=\"{{$RemoteAdminPassword}}\" -MaxPlayers={{$MaxUsers}} {{$FormattedArgs}}",
    "ported": true,
    "module_id": "conan-exiles",
    "provenance": "conan-exiles-enhanced.kvp"
  },
  {
    "id": "core-keeper",
    "name": "Core Keeper",
    "description": "Core Keeper Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1963720",
      "game_app_id": "1621690"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27016
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Started session with info: .+$",
    "events": {
      "join": "^\\[userid:(?P\u003cuserid\u003e.+?)\\] player (?P\u003cusername\u003e.+?) connected.*$",
      "leave": "^Disconnected from userid:(?P\u003cuserid\u003e.+?) with reason .+?$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1963720"
      }
    ],
    "art_steam_app_id": "1621690",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -port {{ConnectMode}} -datapath \"{{$FullBaseDir}}DedicatedServer\" -ip \"{{$ApplicationIPBinding}}\" {{$FormattedArgs}} {{ContentBundlesActivation}}-batchmode -logfile -",
    "ported": true,
    "module_id": "core-keeper",
    "provenance": "core-keeper.kvp"
  },
  {
    "id": "counter-strike-czero",
    "name": "Counter-Strike: Condition Zero",
    "description": "Counter-Strike: Condition Zero Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "90",
      "game_app_id": "80"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "goldsrc_rcon",
    "admin_method": "GoldSrcRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$",
      "join": "^(?:L )?[\\d\\/]+ - [\\d:]+: .*\"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c\u003e\" entered the game$",
      "leave": "^(?:L )?[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c.*\u003e\" disconnected.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "90"
      },
      {
        "kind": "github",
        "name": "ReHLDS Download",
        "repo": "dreamstalker/rehlds",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/counter-strike-czeroserver.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Metamod Download",
        "url": "https://www.amxmodx.org/release/metamod-1.21.1-am.zip",
        "target_path": "{{$FullBaseDir}}czero",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "Metamod Download",
        "repo": "theAsmodai/metamod-r",
        "target_path": "{{$FullBaseDir}}czero",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-base-linux.tar.gz",
        "target_path": "{{$FullBaseDir}}czero",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-base-windows.zip",
        "target_path": "{{$FullBaseDir}}czero",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X CS Addon Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-cstrike-linux.tar.gz",
        "target_path": "{{$FullBaseDir}}czero",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X CS Addon Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-cstrike-windows.zip",
        "target_path": "{{$FullBaseDir}}czero",
        "conditional": true
      }
    ],
    "config_files": [
      "czero/server.cfg"
    ],
    "art_steam_app_id": "80",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -console -game czero -port {{$GameRCONPort}} -sys_ticrate={{sys_ticrate}} -nobreakpad {{insecure}}{{pingboost}}{{CustomParameters}} {{CustomConVars}} +ip {{$ApplicationIPBinding}} +rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} +log on",
    "provenance": "counter-strike-czero.kvp"
  },
  {
    "id": "counter-strike-go",
    "name": "Counter-Strike: Global Offensive",
    "description": "Counter-Strike: Global Offensive Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "740",
      "game_app_id": "4465480"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "740"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/counter-strike-goserver.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "github",
        "name": "NoLobbyReservation Plugin Download",
        "repo": "nuxencs/NoLobbyReservation",
        "target_path": "{{$FullBaseDir}}csgo"
      },
      {
        "kind": "direct",
        "name": "NoLobbyReservation Gamedata Download",
        "url": "https://raw.githubusercontent.com/nuxencs/NoLobbyReservation/refs/heads/master/addons/sourcemod/gamedata/nolobbyreservation.games.txt",
        "target_path": "{{$FullBaseDir}}csgo/addons/sourcemod/gamedata"
      },
      {
        "kind": "direct",
        "name": "NoLobbyReservation Scripting Download",
        "url": "https://raw.githubusercontent.com/nuxencs/NoLobbyReservation/refs/heads/master/addons/sourcemod/scripting/nolobbyreservation.sp",
        "target_path": "{{$FullBaseDir}}csgo/addons/sourcemod/scripting"
      }
    ],
    "config_files": [
      "csgo/cfg/server.cfg"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game {{mod}} -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers_override {{$MaxUsers}} -authkey \"{{authkey}}\" -tickrate {{tickrate}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} {{gamemode}} +sv_game_mode_flags {{sv_game_mode_flags}} +sv_skirmish_id {{sv_skirmish_id}} +log on",
    "provenance": "counter-strike-go.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "counter-strike-source",
    "name": "Counter-Strike: Source",
    "description": "Counter-Strike: Source Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "232330",
      "game_app_id": "240"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^(?:L )?[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c{{UserIDRegex}}\u003e\u003c\u003e\" entered the game$",
      "leave": "^(?:L )?[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c{{UserIDRegex}}\u003e\u003c.*\u003e\" disconnected \\(reason \".*\"\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "232330"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/counter-strike-sourceserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "cstrike/cfg/server.cfg"
    ],
    "art_steam_app_id": "240",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game cstrike -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} -tickrate {{tickrate}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "counter-strike-source.kvp"
  },
  {
    "id": "counter-strike16",
    "name": "Counter-Strike 1.6",
    "description": "Counter-Strike 1.6 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "90",
      "game_app_id": "10"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "goldsrc_rcon",
    "admin_method": "GoldSrcRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$",
      "join": "^(?:L )?[\\d\\/]+ - [\\d:]+: .*\"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c\u003e\" entered the game$",
      "leave": "^(?:L )?[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c.*\u003e\" disconnected.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "90"
      },
      {
        "kind": "github",
        "name": "ReHLDS Download",
        "repo": "dreamstalker/rehlds",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/counter-strike16server.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Metamod Download",
        "url": "https://www.amxmodx.org/release/metamod-1.21.1-am.zip",
        "target_path": "{{$FullBaseDir}}cstrike",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Metamod Download",
        "url": "https://github.com/APGRoboCop/metamod-p/releases/download/v1.21p40/metamod_1_21-p40-APG_i686.zip",
        "target_path": "{{$FullBaseDir}}cstrike",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "Metamod Download",
        "repo": "theAsmodai/metamod-r",
        "target_path": "{{$FullBaseDir}}cstrike",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/amxxdrop/1.9/amxmodx-1.9.0-git5294-base-linux.tar.gz",
        "target_path": "{{$FullBaseDir}}cstrike",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/amxxdrop/1.9/amxmodx-1.9.0-git5294-base-windows.zip",
        "target_path": "{{$FullBaseDir}}cstrike",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X CS Addon Download",
        "url": "https://www.amxmodx.org/amxxdrop/1.9/amxmodx-1.9.0-git5294-cstrike-linux.tar.gz",
        "target_path": "{{$FullBaseDir}}cstrike",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X CS Addon Download",
        "url": "https://www.amxmodx.org/amxxdrop/1.9/amxmodx-1.9.0-git5294-cstrike-windows.zip",
        "target_path": "{{$FullBaseDir}}cstrike",
        "conditional": true
      }
    ],
    "config_files": [
      "cstrike/server.cfg"
    ],
    "art_steam_app_id": "10",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -console -game cstrike -port {{$GameRCONPort}} -sys_ticrate={{sys_ticrate}} -nobreakpad {{insecure}}{{pingboost}}{{CustomParameters}} {{CustomConVars}} +ip {{$ApplicationIPBinding}} +rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} +log on",
    "provenance": "counter-strike16.kvp"
  },
  {
    "id": "counter-strike2",
    "name": "Counter-Strike 2",
    "description": "Counter-Strike 2 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1007"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^SV:  Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "730",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "730",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      }
    ],
    "art_steam_app_id": "730",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -dedicated -usercon -serverlogging -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} {{insecure}}{{CustomParameters}} {{CustomConVars}} +sv_logfile 1 {{gamemode}} +rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}}",
    "provenance": "counter-strike2.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "craftopia",
    "name": "Craftopia",
    "description": "Craftopia Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1670340",
      "game_app_id": "1307550"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 6587
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^World is loaded.$",
    "events": {
      "chat": "^\\[\\d\\d:\\d\\d:\\d\\d\\] \\[CHAT\\] \u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^ActiveSlave\\:Id\\=(?P\u003cuserid\u003e.+)\\ Active\\=True\\ Name=(?P\u003cusername\u003e.+)$",
      "leave": "^ActiveSlave\\:Id\\=(?P\u003cuserid\u003e.+)\\ Active\\=False\\ Name=(?P\u003cusername\u003e.+)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1670340"
      },
      {
        "kind": "direct",
        "name": "Server Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/craftopiaserversetting.ini",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "ServerSetting.ini"
    ],
    "art_steam_app_id": "1307550",
    "wine": false,
    "entrypoint_hint": "-batchmode -showlogs",
    "provenance": "craftopia.kvp"
  },
  {
    "id": "creativerse",
    "name": "Creativerse",
    "description": "Creativerse Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1098260",
      "game_app_id": "280790"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 26900
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 26901
      },
      {
        "name": "Web Admin Port",
        "proto": "udp",
        "port": 26902
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\d+-\\d+-\\d+ \\d+:\\d+:\\d+,\\d+ (?:.*?) server INFO SimThread\\(\\d+\\) BuildVerseServer\\.Reporting - Server \\[READYFORLOGIN\\]$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1098260"
      },
      {
        "kind": "direct",
        "name": "World Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/creativerseconfig_world.json",
        "target_path": "{{$FullBaseDir}}PlayfulCorp/CreativerseServer/worlddata/worlds/{{worldId}}/"
      }
    ],
    "config_files": [
      "PlayfulCorp/CreativerseServer/worlddata/worlds/{{worldId}}/config_world.json"
    ],
    "art_steam_app_id": "280790",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}} -forceIp={{$ApplicationIPBinding}}",
    "provenance": "creativerse.kvp"
  },
  {
    "id": "cryofall",
    "name": "CryoFall",
    "description": "CryoFall Dedicated Server",
    "os": [
      "Linux"
    ],
    "steam": {
      "app_id": "1061710",
      "game_app_id": "829590"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 6000
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d\\.]+ [\\d:\\.]+ \\[IMP\\] UDPServer: Socket-server listening on [\\d\\.]+:\\d+ \\(UDP\\)$",
    "events": {
      "chat": "^$",
      "join": "^[\\d\\.]+ [\\d:\\.]+ \\[IMP\\] Player Id=(?P\u003cuserid\u003e\\d+?) Name=(?P\u003cusername\u003e.+) is online now$",
      "leave": "^[\\d\\.]+ [\\d:\\.]+ \\[IMP\\] Player Id=(?P\u003cuserid\u003e\\d+?) Name=(?P\u003cusername\u003e.+) is offline now$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "CryoFall SteamCMD Download",
        "app_id": "1061710"
      },
      {
        "kind": "direct",
        "name": "SettingsServer.xml File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/cryofallsettingsserver.xml",
        "target_path": "{{$FullBaseDir}}Data"
      }
    ],
    "config_files": [
      "Data/SettingsServer.xml"
    ],
    "art_steam_app_id": "829590",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} ./CryoFall_Server.dll loadOrNew +server.port {{$ServerPort}} +server.ip {{$ApplicationIPBinding}}  +server.maxplayers {{$MaxUsers}} {{$FormattedArgs}}",
    "provenance": "cryofall.kvp"
  },
  {
    "id": "cube2-sauerbraten",
    "name": "Cube 2: Sauerbraten",
    "description": "Cube 2: Sauerbraten Dedicated Server",
    "os": [
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 28785
      },
      {
        "name": "Ping Port",
        "proto": "udp",
        "port": 28786
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^dedicated server started, waiting for clients\\.\\.\\.$",
    "events": {
      "chat": "^$",
      "join": "^client connected \\((?P\u003cuserid\u003e.*)\\)$",
      "leave": "^disconnected client \\((?P\u003cuserid\u003e.*)\\)$"
    },
    "config_files": [
      "server-init.cfg"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} \"-q{{$FullBaseDir}}\" {{$FormattedArgs}}",
    "provenance": "cube2-sauerbraten.kvp"
  },
  {
    "id": "cubic-odyssey",
    "name": "Cubic Odyssey",
    "description": "Cubic Odyssey Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "3858450",
      "game_app_id": "3400000",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 27000
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Try \"help\" for the list of commands\\.$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "3858450",
        "platform": "windows"
      }
    ],
    "config_files": [
      "config/server_config.txt"
    ],
    "art_steam_app_id": "3400000",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -Gamemode={{Gamemode}} -MaxNumPlayers={{$MaxUsers}} {{$FormattedArgs}}",
    "provenance": "cubic-odyssey.kvp"
  },
  {
    "id": "day-of-defeat",
    "name": "Day of Defeat",
    "description": "Day of Defeat Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "90",
      "game_app_id": "30"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "goldsrc_rcon",
    "admin_method": "GoldSrcRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$",
      "join": "^(?:L )?[\\d\\/]+ - [\\d:]+: .*\"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c.*\u003e\" entered the game$",
      "leave": "^(?:L )?[\\d\\/]+ - [\\d:]+: .*\"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c.*\u003e\" disconnected.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "90"
      },
      {
        "kind": "github",
        "name": "ReHLDS Download",
        "repo": "dreamstalker/rehlds",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/day-of-defeatserver.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Metamod Download",
        "url": "https://www.amxmodx.org/release/metamod-1.21.1-am.zip",
        "target_path": "{{$FullBaseDir}}dod",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "Metamod Download",
        "repo": "theAsmodai/metamod-r",
        "target_path": "{{$FullBaseDir}}dod",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-base-linux.tar.gz",
        "target_path": "{{$FullBaseDir}}dod",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-base-windows.zip",
        "target_path": "{{$FullBaseDir}}dod",
        "conditional": true
      }
    ],
    "config_files": [
      "dod/server.cfg"
    ],
    "art_steam_app_id": "30",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -console -game {{mod}} -port {{$GameRCONPort}} -sys_ticrate={{sys_ticrate}} -nobreakpad {{insecure}}{{pingboost}}{{CustomParameters}} {{CustomConVars}} +ip {{$ApplicationIPBinding}} +rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} +log on",
    "provenance": "day-of-defeat.kvp"
  },
  {
    "id": "day-of-defeat-source",
    "name": "Day of Defeat: Source",
    "description": "Day of Defeat: Source Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "232290",
      "game_app_id": "300"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$",
      "join": "^[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c.*\u003e\u003c\u003e\" entered the game$",
      "leave": "^[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c.*\u003e\u003c.*\u003e\" disconnected \\(reason \".*\"\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "232290"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/day-of-defeat-sourceserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "dod/cfg/server.cfg"
    ],
    "art_steam_app_id": "300",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game dod -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "day-of-defeat-source.kvp"
  },
  {
    "id": "day-of-dragons",
    "name": "Day of Dragons",
    "description": "Day of Dragons Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1088320",
      "game_app_id": "1088090"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(?:.*Display:\\s*Match State Changed from WaitingToStart to InProgress.*|.*DragonsLog:\\s*\\[(?:.+?)\\]\\s*(?:All streaming levels loaded!|Server Started at.*))$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1088320"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "direct",
        "name": "Game Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/day-of-dragonsgame.ini",
        "target_path": "{{$FullBaseDir}}Dragons/Saved/Config/WindowsServer/"
      },
      {
        "kind": "direct",
        "name": "Game Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/day-of-dragonsgame.ini",
        "target_path": "{{$FullBaseDir}}Dragons/Saved/Config/LinuxServer/"
      }
    ],
    "config_files": [
      "Dragons/Saved/Config/WindowsServer/Game.ini",
      "Dragons/Saved/Config/LinuxServer/Game.ini"
    ],
    "art_steam_app_id": "1088090",
    "wine": false,
    "entrypoint_hint": "Dragons -Port={{$GamePort}} -QueryPort={{$QueryPort}} -SteamServerName=\"{{SteamServerName}}\" {{$FormattedArgs}} -stdout {{$PlatformArgs}}",
    "provenance": "day-of-dragons.kvp"
  },
  {
    "id": "dayz-experimental",
    "name": "DayZ (Experimental)",
    "description": "DayZ (Experimental) Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1042420",
      "game_app_id": "221100"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 2302
      },
      {
        "name": "Reserved Port",
        "proto": "udp",
        "port": 2303
      },
      {
        "name": "BattlEye Port",
        "proto": "udp",
        "port": 2304
      },
      {
        "name": "Steam Query Port",
        "proto": "udp",
        "port": 27016
      },
      {
        "name": "RCON Port",
        "proto": "udp",
        "port": 2305
      }
    ],
    "rcon_adapter": "battleye",
    "admin_method": "BattlEyeRCON",
    "ready_pattern": "^RCon admin #\\d+ \\([\\d\\.:]+\\) logged in$",
    "events": {
      "chat": "^\\(Global\\) (?P\u003cusername\u003e.+?): (?P\u003cmessage\u003e.+?)$",
      "join": "^Player #(?P\u003csessionid\u003e\\d+?) (?P\u003cusername\u003e.+?) \\((?P\u003cendpoint\u003e.+?):(?:\\d+)\\) connected$",
      "leave": "^Player #(?P\u003csessionid\u003e\\d+?) (?P\u003cusername\u003e.+?) disconnected$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1042420"
      },
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/dayz-experimental10server.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/dayz-experimentalmanagemods.sh",
        "target_path": "{{$FullInstanceDir}}"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/dayz-experimentalmanagemods.ps1",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "./serverDZ.cfg",
      "./battleye/beserver_x64.cfg"
    ],
    "art_steam_app_id": "1024020",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} \"-profiles={{$FullBaseDir}}DayZServerData\" \"-bepath={{$FullBaseDir}}battleye\" -port={{$GamePort}} -config=serverDZ.cfg {{doLogs}}-adminLog -freezeCheck -ip={{$ApplicationIPBinding}} {{$FormattedArgs}} {{filePatching}}{{EnableLimitFPS}}{{CustomServerArgs}}",
    "provenance": "dayz-experimental.kvp"
  },
  {
    "id": "dayz-original",
    "name": "DayZ (Stable)",
    "description": "DayZ (Stable) Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "223350",
      "game_app_id": "221100"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 2302
      },
      {
        "name": "Reserved Port",
        "proto": "udp",
        "port": 2303
      },
      {
        "name": "BattlEye Port",
        "proto": "udp",
        "port": 2304
      },
      {
        "name": "Steam Query Port",
        "proto": "udp",
        "port": 27016
      },
      {
        "name": "RCON Port",
        "proto": "udp",
        "port": 2305
      }
    ],
    "rcon_adapter": "battleye",
    "admin_method": "BattlEyeRCON",
    "ready_pattern": "^RCon admin #\\d+ \\([\\d\\.:]+\\) logged in$",
    "events": {
      "chat": "^\\(Global\\) (?P\u003cusername\u003e.+?): (?P\u003cmessage\u003e.+?)$",
      "join": "^Player #(?P\u003csessionid\u003e\\d+?) (?P\u003cusername\u003e.+?) \\((?P\u003cendpoint\u003e.+?):(?:\\d+)\\) connected$",
      "leave": "^Player #(?P\u003csessionid\u003e\\d+?) (?P\u003cusername\u003e.+?) disconnected$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "223350"
      },
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/dayz-original10server.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/dayz-originalmanagemods.sh",
        "target_path": "{{$FullInstanceDir}}"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/dayz-originalmanagemods.ps1",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "./serverDZ.cfg",
      "./battleye/beserver_x64.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "221100",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} \"-profiles={{$FullBaseDir}}DayZServerData\" \"-bepath={{$FullBaseDir}}battleye\" -port={{$GamePort}} -config=serverDZ.cfg {{doLogs}}-adminLog -freezeCheck -ip={{$ApplicationIPBinding}} {{$FormattedArgs}} {{filePatching}}{{EnableLimitFPS}}{{CustomServerArgs}}",
    "ported": true,
    "module_id": "dayz",
    "provenance": "dayz-original.kvp"
  },
  {
    "id": "deadmatter",
    "name": "Dead Matter",
    "description": "Dead Matter Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2584780",
      "game_app_id": "2184150",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "both",
        "port": 7778
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[\\d{4}\\.\\d{2}\\.\\d{2}-\\d{2}\\.\\d{2}\\.\\d{2}:\\d{3}\\]\\[.+\\d+\\]LogOnline: STEAM: AUTH: Revoking all tickets\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\[\\d{4}\\.\\d{2}\\.\\d{2}-\\d{2}\\.\\d{2}\\.\\d{2}:\\d{3}\\]\\[.+\\d+\\]LogNet: Login request: (?:\\?Password=(?:.+)?\\?GameVersion=\\d+\\.\\d+\\.\\d+\\.\\d+)?\\?Name=(?P\u003cusername\u003e.+?)\\?\\?GameVersion=\\d+\\.\\d+\\.\\d+\\.\\d+ userId: STEAM:UNKNOWN \\[(?P\u003cuserid\u003e.+)\\] platform: STEAM$",
      "leave": "^\\[\\d{4}\\.\\d{2}\\.\\d{2}-\\d{2}\\.\\d{2}\\.\\d{2}:\\d{3}\\]\\[.+\\d+\\]LogNet: UChannel::Close: Sending CloseBunch. ChIndex == \\d+\\. Name: \\[UChannel\\] ChIndex: \\d+\\, Closing: \\d+ \\[UNetConnection\\] RemoteAddr: \\d+\\.\\d+\\.\\d+\\.\\d+\\:\\d+\\, Name: IpConnection_\\d+\\, Driver: GameNetDriver IpNetDriver_\\d+\\, IsServer: YES\\, PC: BP_PlayerController_C_\\d+\\, Owner: BP_PlayerController_C_\\d+\\, UniqueId: STEAM:UNKNOWN \\[(?P\u003cuserid\u003e.+)\\]$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2584780",
        "platform": "windows"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Game.ini Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/deadmattergame.ini",
        "target_path": "{{$FullBaseDir}}DeadMatter/Saved/Config/WindowsServer/"
      }
    ],
    "config_files": [
      "./DeadMatter/Saved/Config/WindowsServer/Game.ini"
    ],
    "art_steam_app_id": "2184150",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} DeadMatter -stdout -FullStdOutLogOutput -Port={{$GamePort}} -QueryPort={{$QueryPort}} {{$FormattedArgs}} {{hardcore}}{{heartbeat}}{{EnableVehiclesOnDedicated}}-Wait",
    "provenance": "deadmatter.kvp"
  },
  {
    "id": "deadpoly",
    "name": "DeadPoly",
    "description": "DeadPoly Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2208380",
      "game_app_id": "1621070",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogRedpointEOS: Verbose: CreateSession: Successfully created session '.*' with ID '.*'$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogNet: Login request: \\?Name=(?P\u003cusername\u003e.+?) userId: RedpointEOS:(?P\u003cuserid\u003e.+?) platform: RedpointEOS$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogNet: UChannel::Close: Sending CloseBunch\\.(?:.+?) UniqueId: RedpointEOS:(?P\u003cuserid\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2208380",
        "platform": "windows"
      }
    ],
    "config_files": [
      "DeadPoly/Saved/Config/WindowsServer/Game.ini"
    ],
    "art_steam_app_id": "1621070",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} DeadPoly -Port={{$GamePort}} {{$FormattedArgs}} -stdout -FullStdOutLogOutput -nosteam",
    "provenance": "deadpoly.kvp"
  },
  {
    "id": "deno-app-runner",
    "name": "Deno App Runner",
    "description": "Deno App Runner",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Main Port",
        "proto": "both",
        "port": 8000
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "App Download",
        "repo": "{{DownloadSource}}",
        "asset_regex": "{{DownloadFilename}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "App Download",
        "url": "{{DownloadSource}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "wine": false,
    "entrypoint_hint": "run {{DenoArgs}} {{ApplicationName}} {{CommandLineArgs}}",
    "provenance": "deno-app-runner.kvp"
  },
  {
    "id": "dont-starve-together",
    "name": "Don't Starve Together",
    "description": "Don't Starve Together Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "343050",
      "game_app_id": "322330"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 10999
      },
      {
        "name": "Auth Port",
        "proto": "udp",
        "port": 8766
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27016
      },
      {
        "name": "Master Port",
        "proto": "udp",
        "port": 10889
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "events": {
      "chat": "^\\[\\d+:\\d+:\\d+\\]: \\[Say\\] \\(.+\\) (?P\u003cusername\u003e.+?): (?P\u003cmessage\u003e.+?)$",
      "join": "^\\[\\d+:\\d+:\\d+\\]: \\[Join Announcement\\] (?P\u003cusername\u003e.+?)$",
      "leave": "^\\[\\d+:\\d+:\\d+\\]: \\[Leave Announcement\\] (?P\u003cusername\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "343050"
      }
    ],
    "config_files": [
      "dstserver/dstserver_config/Cluster_1/shard/server.ini",
      "dstserver/dstserver_config/Cluster_1/cluster.ini",
      "dstserver/dstserver_config/Cluster_1/cluster_token.txt"
    ],
    "art_steam_app_id": "322330",
    "wine": false,
    "entrypoint_hint": "-persistent_storage_root \"../dstserver\" -conf_dir \"dstserver_config\" -shard shard {{$FormattedArgs}}",
    "provenance": "dont-starve-together.kvp"
  },
  {
    "id": "doom2",
    "name": "DOOM II (Zandronum Mod)",
    "description": "DOOM II Dedicated Server using Zandronum Mod",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 10666
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^UDP Initialized\\.$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Doom II Client Download",
        "app_id": "2280",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server.cfg Download",
        "url": "https://raw.githubusercontent.com/tonytonyistony/Zandronum-Server-Config-Example/refs/heads/main/Zandronum-Server-Config-Example.cfg",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "2300",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -host -port {{$ServerPort}} -iwad \"{{IWADPath}}\" {{$FormattedArgs}} -useip {{$ApplicationIPBinding}} {{CustomArgs}} +exec server.cfg +exec maps.cfg",
    "provenance": "doom2.kvp"
  },
  {
    "id": "dota2",
    "name": "Dota 2",
    "description": "Dota 2 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "570",
      "game_app_id": "570"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^SV:  Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "570"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      }
    ],
    "steam_login_required": true,
    "art_steam_app_id": "570",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -dedicated -usercon -serverlogging -nobreakpad -allow_no_lobby_connect -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} {{insecure}}{{CustomParameters}} {{CustomConVars}} +sv_logfile 1 +rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}}",
    "provenance": "dota2.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "dotnet-app-runner",
    "name": "Dotnet App Runner",
    "description": "Dotnet App Runner",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Main Port",
        "proto": "both",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "App Download",
        "repo": "{{DownloadSource}}",
        "asset_regex": "{{DownloadFilename}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "App Download",
        "url": "{{DownloadSource}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "wine": false,
    "entrypoint_hint": "{{DotnetArgs}} {{ApplicationName}} {{CommandLineArgs}}",
    "provenance": "dotnet-app-runner.kvp"
  },
  {
    "id": "duneawakening",
    "name": "Dune Awakening",
    "description": "Dune Awakening Dedicated Server",
    "os": [
      "Linux"
    ],
    "ports": [
      {
        "name": "RabbitMQ Game (AMQPS)",
        "proto": "tcp",
        "port": 5673
      },
      {
        "name": "RabbitMQ Game (HTTP mgmt)",
        "proto": "tcp",
        "port": 15673
      },
      {
        "name": "UE5 game port pool",
        "proto": "udp",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[amp\\] \\[INFO\\] Dune Awakening server ready: success$",
    "events": {
      "chat": "^$",
      "join": "^.*LogNet: Log: Join request:.*?\\?Name=(?P\u003cusername\u003e[^?]+).*?\\?FLSPlayerIds_FlsID=(?P\u003cuserid\u003e[0-9A-Fa-f]+).*$",
      "leave": "^.*UNetConnection::Close:.*?UniqueId:\\s+Fls:(?P\u003cuserid\u003e[0-9A-Fa-f]+).*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download (Production)",
        "app_id": "4754530",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download (Public Test / PTC)",
        "app_id": "3104830",
        "conditional": true
      }
    ],
    "config_files": [
      "state/ue5-saved/UserSettings/UserEngine.ini",
      "state/ue5-saved/UserSettings/UserGame.ini",
      "state/ondemand.ini"
    ],
    "art_steam_app_id": "1172710",
    "wine": false,
    "entrypoint_hint": "{{$FullRootDir}}",
    "provenance": "duneawakening.kvp"
  },
  {
    "id": "eco",
    "name": "Eco",
    "description": "Eco Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 3000
      },
      {
        "name": "Web Port",
        "proto": "tcp",
        "port": 3001
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 3002
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^\\[\\d\\d:\\d\\d:\\d\\d\\] (Server Initialization\\s*\\.\\.\\.\\s+Finished in [\\d.,]*(ms| sec)|Initialisation du serveur\\s+\\.\\.\\.\\s+Terminé en [\\d.,]*\\s*(millisecondes|secondes)|Serverinitialisierung\\s*\\.\\.\\.\\s+Abgeschlossen in [\\d.,]*\\s*Sek)$",
    "events": {
      "join": "^\\[\\d\\d:\\d\\d:\\d\\d\\] \\[NidToolbox\\]: (?P\u003cusername\u003e.+?) has logged in with IP (?P\u003cendpoint\u003e.+)$",
      "leave": "^\\[\\d\\d:\\d\\d:\\d\\d\\] \\[NidToolbox\\]: (?P\u003cusername\u003e.+?) has logged out\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "739590",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "739590",
        "conditional": true
      }
    ],
    "config_files": [
      "Configs/Network.eco"
    ],
    "art_steam_app_id": "382310",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{AuthMode}}{{$FormattedArgs}}",
    "provenance": "eco.kvp"
  },
  {
    "id": "empyrion-galactic-survival",
    "name": "Empyrion Galactic Survival",
    "description": "Empyrion Galactic Survival Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "530870",
      "game_app_id": "383120",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port 1",
        "proto": "both",
        "port": 30000
      },
      {
        "name": "Steam Query Port",
        "proto": "both",
        "port": 30001
      },
      {
        "name": "Game Port 3",
        "proto": "both",
        "port": 30002
      },
      {
        "name": "Game Port 4",
        "proto": "both",
        "port": 30003
      },
      {
        "name": "Telnet Port",
        "proto": "tcp",
        "port": 30004
      }
    ],
    "rcon_adapter": "telnet",
    "admin_method": "TelnetRCON",
    "ready_pattern": "^.*-LOG- Server started listening on port .*$",
    "events": {
      "chat": " ",
      "join": "^.*-LOG-.*Player (?P\u003cuserid\u003e.+?)\\/'(?P\u003cusername\u003e.+?)' login ok.*$",
      "leave": "^.*-LOG-.*, (?P\u003cuserid\u003e.+?)\\/=\\/'(?P\u003cusername\u003e.+?)' disconnected$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "530870",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Base Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/empyriondedicated.yaml",
        "target_path": "./530870/"
      }
    ],
    "config_files": [
      "empyriondedicated.yaml"
    ],
    "art_steam_app_id": "383120",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -batchmode -nographics -dedicated empyriondedicated.yaml -logFile -",
    "ported": true,
    "module_id": "empyrion",
    "provenance": "empyrion-galactic-survival.kvp"
  },
  {
    "id": "enshrouded",
    "name": "Enshrouded",
    "description": "Enshrouded Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2278520",
      "game_app_id": "1203620",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Query Port",
        "proto": "both",
        "port": 15637
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*\\[Session\\] 'HostOnline' \\(up\\)!$",
    "events": {
      "chat": "^$",
      "join": "^.*\\[server\\] Player '(?P\u003cusername\u003e.+?)' logged in with Permissions:$",
      "leave": "^.*\\[server\\] Remove Player '(?P\u003cusername\u003e.+?)'$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2278520",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Enshrouded_server.json Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/enshroudedserver.json",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "enshrouded_server.json"
    ],
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "ported": true,
    "module_id": "enshrouded",
    "provenance": "enshrouded.kvp"
  },
  {
    "id": "et-legacy",
    "name": "ET: Legacy",
    "description": "ET: Legacy Dedicated Server - a Wolfenstein: Enemy Territory server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 27960
      }
    ],
    "rcon_adapter": "quake_rcon",
    "admin_method": "QuakeRCON",
    "ready_pattern": "^.*\\d+ Game Initialization completed in \\d+\\.\\d+ seconds$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Client Files Download",
        "url": "https://cdn.splashdamage.com/downloads/games/wet/WolfET_2_60b_custom.exe",
        "target_path": "{{$FullRootDir}}client",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Client Files Download",
        "url": "https://cdn.splashdamage.com/downloads/games/wet/et260b.x86_full.zip",
        "target_path": "{{$FullRootDir}}client",
        "conditional": true
      }
    ],
    "config_files": [
      "etmain/etl_server.cfg"
    ],
    "art_steam_app_id": "1873030",
    "wine": false,
    "entrypoint_hint": "+set fs_basepath \"{{$FullBaseDir}}\" +set fs_homepath \"{{$FullBaseDir}}data\" +exec etl_server.cfg +set fs_game \"{{mod}}\" +set net_port {{$ServerPort}} +set net_port6 {{$ServerPort}} +set net_ip \"{{$ApplicationIPBinding}}\" +set net_ip6 \"{{net_ip6}}\" +set rconpassword \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} {{$PlatformArgs}}",
    "provenance": "et-legacy.kvp"
  },
  {
    "id": "euro-truck-simulator-2",
    "name": "Euro Truck Simulator 2",
    "description": "Euro Truck Simulator 2 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Main Server Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "Query Dedicated Port",
        "proto": "udp",
        "port": 27016
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^\\[MP\\] (?P\u003cusername\u003e.+?) connected, client_id = (?P\u003csessionid\u003e\\d+).*$",
      "leave": "^\\[MP\\] (?P\u003cusername\u003e.+?) disconnected, client_id = (?P\u003csessionid\u003e\\d+).*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1948160",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1948160",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Settings Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/euro-truck-simulator-2.sii",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "Euro Truck Simulator 2/server_config.sii"
    ],
    "art_steam_app_id": "227300",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -nosingle {{$FormattedArgs}}",
    "provenance": "euro-truck-simulator-2.kvp"
  },
  {
    "id": "exfil",
    "name": "EXFIL",
    "description": "EXFIL Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "3093190",
      "game_app_id": "860020"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogBlueprintUserMessages: \\[.*\\] Started Dedicated Server Session$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogOnline: STEAM: Adding user (?P\u003cuserid\u003e.+?):\\d+ from RegisterConnection$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogOnline: STEAM: (?P\u003cuserid\u003e.+?) has been removed\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "3093190"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      }
    ],
    "config_files": [
      "Exfil/Saved/ServerSettings/DedicatedSettings.JSON"
    ],
    "art_steam_app_id": "860020",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} Exfil -Port={{$GamePort}} -QueryPort={{$QueryPort}} {{$FormattedArgs}} -stdout -FullStdOutLogOutput",
    "provenance": "exfil.kvp"
  },
  {
    "id": "eye-dc",
    "name": "E.Y.E: Divine Cybermancy",
    "description": "E.Y.E: Divine Cybermancy Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "91720",
      "game_app_id": "91700",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "91720",
        "platform": "windows"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/eye-dcserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "EYE/cfg/server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "91700",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -game EYE -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -insecure {{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +log on",
    "provenance": "eye-dc.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "factorio",
    "name": "Factorio",
    "description": "Factorio Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 34197
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 7777
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "$",
    "events": {
      "join": "^[\\d-]+ [\\d:]+ \\[JOIN\\] (?P\u003cusername\u003e.+?) joined the game$",
      "leave": "^[\\d-]+ [\\d:]+ \\[LEAVE\\] (?P\u003cusername\u003e.+?) left the game$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Factorio Download",
        "app_id": "427520",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "Factorio Download",
        "app_id": "427520",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Factorio Download",
        "url": "https://factorio.com/get-download/stable/headless/linux64",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Factorio Download",
        "url": "https://www.factorio.com/get-download/{{BetaBranch}}/headless/linux64",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "config_files": [
      "data/server-settings.json",
      "data/map-gen-settings.json",
      "data/map-settings.json",
      "config-path.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "427520",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{CustomArgs}} {{StartMode}} --bind {{$ApplicationIPBinding}}:{{$ServerPort}} --rcon-port {{$RCONPort}} --rcon-password {{$RemoteAdminPassword}} --server-settings data/server-settings.json --mod-directory mods --server-whitelist data/server-whitelist.json --server-banlist data/server-banlist.json --server-adminlist server-adminlist.json --console-log log.out {{$FormattedArgs}}",
    "ported": true,
    "module_id": "factorio",
    "provenance": "factorio.kvp",
    "notes": [
      "chat regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "fistful-of-frags",
    "name": "Fistful of Frags",
    "description": "Fistful of Frags Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "295230",
      "game_app_id": "265630"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^(?:L )?[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c{{UserIDRegex}}\u003e\u003c\u003e\" entered the game$",
      "leave": "^(?:L )?[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c{{UserIDRegex}}\u003e\u003c.*\u003e\" disconnected \\(reason \".*\"\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "295230"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/fistful-of-fragsserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "fof/cfg/server.cfg"
    ],
    "art_steam_app_id": "265630",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game fof -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} -tickrate {{tickrate}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "fistful-of-frags.kvp"
  },
  {
    "id": "fivem",
    "name": "FiveM - Grand Theft Auto V Server",
    "description": "FiveM Multiplayer Mod for Grand Theft Auto V",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 30120
      }
    ],
    "rcon_adapter": "quake_rcon",
    "admin_method": "QuakeRCON",
    "ready_pattern": "^\\[ citizen-server-impl\\] Authenticated with cfx\\.re Nucleus: .*$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "{{SpecificBuildVersionURL}}",
        "target_path": "{{$FullBaseDir}}server",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "{{SpecificBuildVersionURL}}",
        "target_path": "{{$FullBaseDir}}server",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/fivemserver.cfg",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "server-data/server.cfg"
    ],
    "art_steam_app_id": "271590",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{CustomArgs}} +set gamename gta5 +set rcon_password {{$RemoteAdminPassword}} +set serverProfile default {{$FormattedArgs}} +exec server.cfg",
    "provenance": "fivem.kvp"
  },
  {
    "id": "foundry",
    "name": "FOUNDRY",
    "description": "FOUNDRY Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2915550",
      "game_app_id": "983870",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 3724
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*Loading \\(\\d+\\/\\d+\\): Done! Dedicated server is now running!$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "FOUNDRY Download",
        "app_id": "2915550",
        "platform": "windows"
      }
    ],
    "config_files": [
      "app.cfg"
    ],
    "art_steam_app_id": "983870",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "foundry.kvp"
  },
  {
    "id": "foundry-vtt",
    "name": "Foundry Virtual Tabletop",
    "description": "Foundry Virtual Tabletop Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 30000
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^FoundryVTT \\| [\\d-]+ [\\d:]+ \\| \\[info\\] Server started and listening on port \\d+$",
    "events": {
      "chat": "^$",
      "join": "^FoundryVTT \\| [\\d-]+ [\\d:]+ \\| \\[info\\] Vended World data to User \\[(?P\u003cuserid\u003e.+?)\\] in .*$",
      "leave": "^FoundryVTT \\| [\\d-]+ [\\d:]+ \\| \\[info\\] Logged user (?P\u003cuserid\u003e.+?) out of active World$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "{{DownloadURL}}",
        "target_path": "{{$FullBaseDir}}server"
      }
    ],
    "config_files": [
      "data/Config/options.json"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{NodeArgs}} {{app}} --port={{$ServerPort}} --dataPath=\"{{$FullBaseDir}}data\" {{$FormattedArgs}}",
    "provenance": "foundry-vtt.kvp"
  },
  {
    "id": "frozen-flame",
    "name": "Frozen Flame",
    "description": "Frozen Flame Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1348640",
      "game_app_id": "715400"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 25575
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogRCon: \\([\\d\\.:]+:\\d+\\): started connection$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogGameEvent: Player \\((?P\u003cusername\u003e.+?):(?P\u003cuserid\u003e.+?)\\) Connected$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogGameEvent: Player \\((?P\u003cusername\u003e.+?):(?P\u003cuserid\u003e.+?)\\) Disconnected$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1348640"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "direct",
        "name": "Game.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/frozen-flamegame.ini",
        "target_path": "{{$FullBaseDir}}FrozenFlame/Saved/Config/WindowsServer/"
      },
      {
        "kind": "direct",
        "name": "Game.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/frozen-flamegame.ini",
        "target_path": "{{$FullBaseDir}}FrozenFlame/Saved/Config/LinuxServer/"
      },
      {
        "kind": "direct",
        "name": "GameModeSurvive.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/frozen-flamegamemodesurvive.ini",
        "target_path": "{{$FullBaseDir}}FrozenFlame/Saved/Config/WindowsServer/"
      },
      {
        "kind": "direct",
        "name": "GameModeSurvive.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/frozen-flamegamemodesurvive.ini",
        "target_path": "{{$FullBaseDir}}FrozenFlame/Saved/Config/LinuxServer/"
      },
      {
        "kind": "direct",
        "name": "HeavenNormal.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/frozen-flameheavennormal.ini",
        "target_path": "{{$FullBaseDir}}FrozenFlame/Saved/Config/WindowsServer/"
      },
      {
        "kind": "direct",
        "name": "HeavenNormal.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/frozen-flameheavennormal.ini",
        "target_path": "{{$FullBaseDir}}FrozenFlame/Saved/Config/LinuxServer/"
      }
    ],
    "config_files": [
      "FrozenFlame/Saved/Config/WindowsServer/Game.ini",
      "FrozenFlame/Saved/Config/LinuxServer/Game.ini",
      "FrozenFlame/Saved/Config/WindowsServer/GameModeSurvive.ini",
      "FrozenFlame/Saved/Config/LinuxServer/GameModeSurvive.ini",
      "FrozenFlame/Saved/Config/WindowsServer/HeavenNormal.ini",
      "FrozenFlame/Saved/Config/LinuxServer/HeavenNormal.ini"
    ],
    "art_steam_app_id": "715400",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -Port={{$GamePort}} -QueryPort={{$QueryPort}} -RconPort={{$RCONPort}} -RconPassword={{$RemoteAdminPassword}} -ip={{PublicIP}} {{noeac}}{{PublicServer}}{{$FormattedArgs}} -LOCALLOGTIMES",
    "provenance": "frozen-flame.kvp"
  },
  {
    "id": "garrys-mod",
    "name": "Garry's Mod",
    "description": "Garry's Mod Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "4020",
      "game_app_id": "4000"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Garry's Mod Server Download",
        "app_id": "4020"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/garrys-modserver1-1.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "steamcmd",
        "name": "CSS Content Download",
        "app_id": "232330",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "TF2 Content Download",
        "app_id": "232250",
        "conditional": true
      }
    ],
    "config_files": [
      "garrysmod/cfg/server.cfg",
      "garrysmod/lua/autorun/server/resource.lua"
    ],
    "art_steam_app_id": "4000",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game garrysmod -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +log on",
    "provenance": "garrys-mod.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "garrys-mod64",
    "name": "Garry's Mod (64 Bit)",
    "description": "Garry's Mod 64 bit Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "4020",
      "game_app_id": "4000"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Garry's Mod Server Download",
        "app_id": "4020"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/garrys-modserver1-1.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "steamcmd",
        "name": "CSS Content Download",
        "app_id": "232330",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "TF2 Content Download",
        "app_id": "232250",
        "conditional": true
      }
    ],
    "art_steam_app_id": "4000",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game garrysmod -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +log on",
    "provenance": "garrys-mod64.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "gatekeeperv2",
    "name": "GatekeeperV2 Bot (Deprecated)",
    "description": "AMP Discord Bot created by k8thekat - https://github.com/k8thekat/GatekeeperV2",
    "ports": [
      {
        "name": "Port",
        "proto": "both",
        "port": 4444
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "config_files": [
      "GatekeeperV2-main/tokens.py"
    ],
    "wine": true,
    "entrypoint_hint": "start.py -token {{dev}}{{debug}}{{discord}}{{super}}{{command}}",
    "provenance": "gatekeeperv2.kvp"
  },
  {
    "id": "geyser",
    "name": "Geyser",
    "description": "Geyser Minecraft Proxy",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 19132
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d:]+ INFO\\] Done \\([\\d.]+s\\)! Run \\/geyser help for help!$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d:]+ INFO\\] (?P\u003cusername\u003e.+?) \\(logged in as: .+\\) has connected to remote java server on address (?P\u003cip\u003e.+?)$",
      "leave": "^\\[[\\d:]+ INFO\\] (?P\u003cusername\u003e.+?) has disconnected from remote Java server on address (?P\u003cip\u003e.+?) because of (?P\u003creason\u003e.+)$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/standalone",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "wine": false,
    "entrypoint_hint": "-Xms{{MinMemory}}M -Xmx{{MaxMemory}}M {{CustomJavaArgs}} -jar Geyser.jar {{$PlatformArgs}} --bedrock.port={{$ServerPort}} {{$FormattedArgs}} nogui",
    "provenance": "geyser.kvp"
  },
  {
    "id": "ground-branch",
    "name": "Ground Branch",
    "description": "Ground Branch Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "476400",
      "game_app_id": "16900",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogWorld: Bringing up level for play took: \\d+\\.\\d+$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogNet: SteamSockets: New connection \\(\\d+\\) over listening socket accepted (?P\u003cuserid\u003e\\d+?):\\d+$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogNet: UChannel::CleanUp: ChIndex == \\d+\\. Closing connection\\. (?:.*?) RemoteAddr: (?P\u003cuserid\u003e\\d+?):\\d+, (?:.*?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Ground Branch SteamCMD Download",
        "app_id": "476400",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Server.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ground-branchserver.ini",
        "target_path": "{{$FullBaseDir}}GroundBranch/ServerConfig"
      },
      {
        "kind": "direct",
        "name": "Vote.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ground-branchvote.ini",
        "target_path": "{{$FullBaseDir}}GroundBranch/ServerConfig"
      },
      {
        "kind": "direct",
        "name": "TeamKill.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ground-branchteamkill.ini",
        "target_path": "{{$FullBaseDir}}GroundBranch/ServerConfig"
      }
    ],
    "config_files": [
      "./GroundBranch/ServerConfig/Server.ini",
      "./GroundBranch/ServerConfig/Vote.ini",
      "./GroundBranch/ServerConfig/Ban.ini",
      "./GroundBranch/ServerConfig/TeamKill.ini"
    ],
    "art_steam_app_id": "16900",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{ServerMap}}?Mission={{ServerMission}}?{{$FormattedArgs}}{{CustomServerArgs}} QueryPort={{$QueryPort}} MultiHome={{$ApplicationIPBinding}} -nohomedir -stdout -FullStdOutLogOutput",
    "provenance": "ground-branch.kvp"
  },
  {
    "id": "half-life",
    "name": "Half-Life",
    "description": "Half-Life Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "90",
      "game_app_id": "70"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "goldsrc_rcon",
    "admin_method": "GoldSrcRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$",
      "join": "^(?:L )?[\\d\\/]+ - [\\d:]+: .*\"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c\\d+\u003e\" entered the game$",
      "leave": "^(?:L )?[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c\\d+\u003e\" disconnected.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "90"
      },
      {
        "kind": "github",
        "name": "ReHLDS Download",
        "repo": "dreamstalker/rehlds",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/half-lifeserver.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Metamod Download",
        "url": "https://www.amxmodx.org/release/metamod-1.21.1-am.zip",
        "target_path": "{{$FullBaseDir}}valve",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "Metamod Download",
        "repo": "theAsmodai/metamod-r",
        "target_path": "{{$FullBaseDir}}valve",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-base-linux.tar.gz",
        "target_path": "{{$FullBaseDir}}valve",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-base-windows.zip",
        "target_path": "{{$FullBaseDir}}valve",
        "conditional": true
      }
    ],
    "config_files": [
      "valve/server.cfg",
      "valve/motd.txt"
    ],
    "art_steam_app_id": "70",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -console -game {{mod}} -port {{$GameRCONPort}} -sys_ticrate={{sys_ticrate}} -nobreakpad {{insecure}}{{pingboost}}{{CustomParameters}} {{CustomConVars}} +ip {{$ApplicationIPBinding}} +rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} +log on",
    "provenance": "half-life.kvp"
  },
  {
    "id": "half-life-deathmatch-source",
    "name": "Half-Life Deathmatch: Source",
    "description": "Half-Life Deathmatch: Source Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "255470",
      "game_app_id": "360"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "255470"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/half-life-deathmatch-sourceserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "hl1mp/cfg/server.cfg"
    ],
    "art_steam_app_id": "360",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game hl1mp -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} -tickrate {{tickrate}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "half-life-deathmatch-source.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "half-life-opposing-force",
    "name": "Half-Life: Opposing Force",
    "description": "Half-Life: Opposing Force Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "90",
      "game_app_id": "50"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "goldsrc_rcon",
    "admin_method": "GoldSrcRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$",
      "join": "^(?:L )?[\\d\\/]+ - [\\d:]+: .*\"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c(?P\u003cuserid\u003e\\d+?)\u003e\u003c.*\u003e\" entered the game$",
      "leave": "^(?:L )?[\\d\\/]+ - [\\d:]+: .*\"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c(?P\u003cuserid\u003e\\d+?)\u003e\u003c.*\u003e\" disconnected .*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "90"
      },
      {
        "kind": "github",
        "name": "ReHLDS Download",
        "repo": "dreamstalker/rehlds",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/half-life-opposing-forceserver.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Metamod Download",
        "url": "https://www.amxmodx.org/release/metamod-1.21.1-am.zip",
        "target_path": "{{$FullBaseDir}}gearbox",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "Metamod Download",
        "repo": "theAsmodai/metamod-r",
        "target_path": "{{$FullBaseDir}}gearbox",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-base-linux.tar.gz",
        "target_path": "{{$FullBaseDir}}gearbox",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-base-windows.zip",
        "target_path": "{{$FullBaseDir}}gearbox",
        "conditional": true
      }
    ],
    "config_files": [
      "gearbox/server.cfg",
      "gearbox/motd.txt"
    ],
    "art_steam_app_id": "50",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -console -game {{mod}} -port {{$GameRCONPort}} -sys_ticrate={{sys_ticrate}} -nobreakpad {{insecure}}{{pingboost}}{{CustomParameters}} {{CustomConVars}} +ip {{$ApplicationIPBinding}} +rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} +log on",
    "provenance": "half-life-opposing-force.kvp"
  },
  {
    "id": "half-life2dm",
    "name": "Half-Life 2: Deathmatch",
    "description": "Half-Life 2: Deathmatch Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "232370",
      "game_app_id": "320"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "232370"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/half-life2dmserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "hl2mp/cfg/server.cfg"
    ],
    "art_steam_app_id": "320",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game hl2mp -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} -tickrate {{tickrate}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "half-life2dm.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "humanitz",
    "name": "HumanitZ",
    "description": "HumanitZ Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2728330",
      "game_app_id": "1766060"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 8888
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogInit: Display: Engine is initialized\\. Leaving FEngineLoop::Init\\(\\)$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogKaiHelper: Player Connected (?P\u003cusername\u003e.+?) NetID\\((?P\u003cuserid\u003e.+?)\\)$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogKaiHelper: Player Disconnected (?P\u003cusername\u003e.+?) NetID\\((?P\u003cuserid\u003e.+?)\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2728330"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2728330"
      }
    ],
    "config_files": [
      "HumanitZServer/GameServerSettings.ini"
    ],
    "art_steam_app_id": "1766060",
    "wine": false,
    "entrypoint_hint": "HumanitZServer -Port={{$GamePort}} -QueryPort={{$QueryPort}} -SteamServerName=\"{{ServerName}}\" {{$FormattedArgs}} -stdout {{$PlatformArgs}}",
    "provenance": "humanitz.kvp"
  },
  {
    "id": "hurtworld",
    "name": "Hurtworld",
    "description": "Hurtworld Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "405100",
      "game_app_id": "393420"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 12871
      },
      {
        "name": "Query Port",
        "proto": "both",
        "port": 12881
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Changing state: Hosting from Ready$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "405100"
      }
    ],
    "config_files": [
      "autoexec.cfg"
    ],
    "art_steam_app_id": "405100",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -batchmode -nographics -exec \"host {{$GamePort}} {{map}};queryport {{$QueryPort}};{{$FormattedArgs}};{{CustomConVars}}\" -logfile -",
    "provenance": "hurtworld.kvp"
  },
  {
    "id": "hytale",
    "name": "Hytale",
    "description": "Hytale Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 5520
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\/]+ [\\d:]+\\s+INFO\\]\\s+\\[HytaleServer\\]\\s+Hytale Server Booted! \\[Multiplayer(?:, Fresh Universe)?\\] took .*$",
    "events": {
      "chat": "^\\[[\\d\\/]+\\s+[\\d:]+\\s+INFO\\]\\s+\\[Hytale\\]\\s+(?P\u003cusername\u003e[^ ]+?):\\s+(?P\u003cmessage\u003e.+?)$",
      "join": "^\\[[\\d\\/]+ [\\d:]+\\s+INFO\\]\\s+\\[HandshakeHandler\\]\\s+Mutual authentication complete for\\s+(?P\u003cusername\u003e[^ ]+?)\\s+\\((?P\u003cuserid\u003e.+?)\\)\\s+from\\s+.+?\\s+\\(\\/(?P\u003cendpoint\u003e(?:\\d{1,3}(?:\\.\\d{1,3}){3})|(?:[0-9a-fA-F:]+)):\\d+,\\s*streamId=\\d+\\)\\s*$",
      "leave": "^\\[[\\d\\/]+\\s+[\\d:]+\\s+INFO\\]\\s+(?:\\[Universe\\|P\\]\\s+Removing player\\s+'(?P\u003cusername\u003e[^ ]+?)'\\s+\\((?P\u003cuserid\u003e[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12})\\)|\\[Hytale\\]\\s+\\{Setup\\(null\\s+\\(null,\\s*streamId=\\d+\\)\\),\\s*(?P\u003cusername\u003e[^ ]+?),\\s*(?P\u003cuserid\u003e[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}),\\s*SECURE\\}\\s+was closed\\.)\\s*$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Hytale Downloader CLI Download",
        "url": "https://downloader.hytale.com/hytale-downloader.zip",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Hytale Downloader Script Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/hytaledownloaderscript.sh",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Default config.json File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/hytaleserverconfig.json",
        "target_path": "{{$FullBaseDir}}Server"
      },
      {
        "kind": "direct",
        "name": "Default Performance Saver plugin config.json File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/hytaleperformancesaverconfig.json",
        "target_path": "{{$FullBaseDir}}Server/mods/Nitrado_PerformanceSaver",
        "conditional": true
      }
    ],
    "config_files": [
      "Server/config.json"
    ],
    "wine": false,
    "entrypoint_hint": "-Xms{{MinMemory}}M -Xmx{{MaxMemory}}M {{EnableAOTCache}}{{JavaArgs}} -Dterminal.jline=false -Dterminal.ansi=true -jar {{StartupJar}} --assets ../Assets.zip --bind {{$ApplicationIPBinding}}:{{$ServerPort}} --backup-dir \"{{backup-dir}}\" {{accept-early-plugins}}{{allow-op}}{{backup}}{{disable-sentry}}{{$FormattedArgs}} {{CustomArgs}}",
    "provenance": "hytale.kvp"
  },
  {
    "id": "icarus",
    "name": "Icarus",
    "description": "Icarus Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2089300",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 17777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "admin_method": "TailLogFile",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogInit: Display: Game Engine Initialized\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogConnectedPlayers: Display: AddConnectedPlayer - UserId: (?P\u003cuserid\u003e.+?) \\| PlayerName: (?P\u003cusername\u003e.+)$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogOnline: STEAM: (?P\u003cuserid\u003e.+?) has been removed\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2089300",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/icarusserversettings.ini",
        "target_path": "{{$FullBaseDir}}Icarus/Saved/Config/WindowsServer"
      }
    ],
    "config_files": [
      "Icarus/Saved/Config/WindowsServer/ServerSettings.ini"
    ],
    "art_steam_app_id": "1149460",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -Port={{$GamePort}} -QueryPort={{$QueryPort}} {{StartupMode}}{{$FormattedArgs}} -log=Icarus.log",
    "provenance": "icarus.kvp"
  },
  {
    "id": "impostor",
    "name": "Impostor - Among Us Server",
    "description": "Impostor Dedicated Server - an open source private server implementation for Among Us",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game and HTTP Port",
        "proto": "both",
        "port": 22023
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[\\d+:\\d+:\\d+ INF\\] Application started\\. Press Ctrl\\+C to shut down\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\[\\d+:\\d+:\\d+ INF\\] (?:.+?) - Player (?P\u003cusername\u003e.+?) \\((?P\u003csessionid\u003e.+?)\\) is joining\\.$",
      "leave": "^\\[\\d+:\\d+:\\d+ INF\\] (?:.+?) - Player (?P\u003cusername\u003e.+?) \\((?P\u003csessionid\u003e.+?)\\) has left\\.$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Impostor Server Download",
        "url": "https://github.com/Impostor/Impostor/releases/download/v{{ServerVersion}}/Impostor-Server_{{ServerVersion}}_win-x64.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Impostor Server Download",
        "url": "https://github.com/Impostor/Impostor/releases/download/v{{ServerVersion}}/Impostor-Server_{{ServerVersion}}_linux-x64.tar.gz",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Impostor Server Download",
        "url": "https://github.com/Impostor/Impostor/releases/download/v{{ServerVersion}}/Impostor-Server_{{ServerVersion}}_linux-arm64.tar.gz",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Impostor Server Download",
        "url": "https://nightly.link/Impostor/Impostor/workflows/ci/master/Impostor-Server_{{ServerVersion}}_win-x64.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Impostor Server Download",
        "url": "https://nightly.link/Impostor/Impostor/workflows/ci/master/Impostor-Server_{{ServerVersion}}_linux-x64.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Impostor Server Download",
        "url": "https://nightly.link/Impostor/Impostor/workflows/ci/master/Impostor-Server_{{ServerVersion}}_linux-arm64.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Impostor.Http Plugin Download",
        "url": "https://github.com/Impostor/Impostor.Http/releases/download/v{{HttpPluginVersion}}/Impostor.Http.dll",
        "target_path": "{{$FullBaseDir}}plugins",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Impostor.Http Plugin Config File Download",
        "url": "https://raw.githubusercontent.com/Impostor/Impostor.Http/main/config_http.json",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "config_files": [
      "config.json",
      "config_http.json"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "945360",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "impostor.kvp"
  },
  {
    "id": "insurgencysandstorm",
    "name": "Insurgency Sandstorm",
    "description": "Insurgency Sandstorm Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "581330",
      "game_app_id": "581320"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 27102
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27131
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 27015
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogSession: Display: OnCreateSessionComplete:.*Result: \\(1\\)$",
    "events": {
      "chat": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogChat: Display: (?P\u003cusername\u003e.+?)\\((?P\u003cuserid\u003e.+)\\) .*Chat: (?P\u003cmessage\u003e.+)$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogNet: Login request: \\?Name=(?P\u003cusername\u003e.+?) userId: SteamNWI:(?P\u003cuserid\u003e.+) platform: SteamNWI$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogNet: UChannel::Close: Sending CloseBunch\\. ChIndex == \\d+\\. Name: \\[UChannel\\] ChIndex: \\d+, Closing: \\d+ \\[UNetConnection\\] RemoteAddr: \\d+\\.\\d+\\.\\d+\\.\\d+\\:\\d+, Name: IpConnection_\\d+, Driver: GameNetDriver IpNetDriver_\\d+\\, IsServer: YES, PC: INSPlayerController_\\d+, Owner: INSPlayerController_\\d+, UniqueId: SteamNWI:(?P\u003cuserid\u003e.+)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "581330"
      },
      {
        "kind": "direct",
        "name": "Base Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/insurgencysandstormgame.ini",
        "target_path": "{{$FullBaseDir}}Insurgency/Saved/Config/WindowsServer"
      },
      {
        "kind": "direct",
        "name": "Base Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/insurgencysandstormgame.ini",
        "target_path": "{{$FullBaseDir}}Insurgency/Saved/Config/LinuxServer"
      }
    ],
    "config_files": [
      "Insurgency/Saved/Config/WindowsServer/Game.ini",
      "Insurgency/Saved/Config/LinuxServer/Game.ini",
      "Insurgency/Config/Server/Motd.txt"
    ],
    "art_steam_app_id": "581320",
    "wine": false,
    "entrypoint_hint": "{{Map}}?Scenario=\"{{Scenario}}\"?Lighting=\"{{Lighting}}\"?Game=\"{{Game}}\"?Hostname=\"{{Hostname}}\"?MaxPlayers=\"{{$MaxUsers}}\"?password=\"{{password}}\" -Port={{$ApplicationPort1}} -QueryPort={{$ApplicationPort2}} -Rcon -RconPassword={{$RemoteAdminPassword}} -RconListenPort={{$RemoteAdminPort}} -log -GameStats -GameStatsToken={{GameStatsToken}} -GSLTToken={{GSLTToken}} {{Mods_enabled}} {{EnableCheats}}{{$FormattedArgs}}",
    "provenance": "insurgencysandstorm.kvp"
  },
  {
    "id": "java-app-runner",
    "name": "Java App Runner",
    "description": "Java App Runner",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Main Port",
        "proto": "both",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "App Download",
        "repo": "{{DownloadSource}}",
        "asset_regex": "{{DownloadFilename}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "App Download",
        "url": "{{DownloadSource}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "wine": false,
    "entrypoint_hint": "{{JavaArgs}} -jar {{JarName}} {{JarOptions}}",
    "provenance": "java-app-runner.kvp"
  },
  {
    "id": "jc3mp",
    "name": "Just Cause 3 Multiplayer Mod",
    "description": "Just Cause 3 Multiplayer Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "619960",
      "game_app_id": "619910"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "tcp",
        "port": 4200
      },
      {
        "name": "Query Port",
        "proto": "both",
        "port": 4201
      },
      {
        "name": "Steam Port",
        "proto": "both",
        "port": 4202
      },
      {
        "name": "HTTP Port",
        "proto": "both",
        "port": 4203
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\-]+ [\\d:]+\\]: Server successfully started up, awaiting connects\\.\\.\\.$",
    "events": {
      "chat": "^(?P\u003cusername\u003e.+?): (?P\u003cmessage\u003e.+)$",
      "join": "^(?P\u003cusername\u003e.+?) has joined\\.$",
      "leave": "^(?P\u003cusername\u003e.+?) has left\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "619960"
      },
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/jc3mpserverconfig.json",
        "target_path": "../"
      },
      {
        "kind": "direct",
        "name": "Download Default Packages",
        "url": "https://unlimitedjc.files.wordpress.com/2022/09/jc3mp-default-packages.zip",
        "target_path": "{{$FullBaseDir}}packages"
      }
    ],
    "config_files": [
      "config.json"
    ],
    "art_steam_app_id": "619910",
    "wine": false,
    "provenance": "jc3mp.kvp"
  },
  {
    "id": "jedi-academy",
    "name": "STAR WARS Jedi Knight - Jedi Academy",
    "description": "STAR WARS Jedi Knight - Jedi Academy Dedicated Server with OpenJK engine",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "6020",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 29070
      }
    ],
    "rcon_adapter": "quake_rcon",
    "admin_method": "QuakeRCON",
    "ready_pattern": "^[\\d-]+ [\\d:]+ --- Common Initialization Complete ---$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Game Files Download",
        "app_id": "6020",
        "platform": "windows"
      },
      {
        "kind": "github",
        "name": "OpenJK Download",
        "repo": "JACoders/OpenJK",
        "asset_regex": "OpenJK-windows-x86_64.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "github",
        "name": "OpenJK Download",
        "repo": "JACoders/OpenJK",
        "asset_regex": "OpenJK-linux-x86_64.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/jedi-academyserver.cfg",
        "target_path": "{{$FullBaseDir}}base"
      }
    ],
    "config_files": [
      "{{mod}}/base.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "6020",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} +set fs_homepath \".\" +set net_port {{$ServerPort}} +set net_ip {{$ApplicationIPBinding}} +set fs_game {{mod}} +{{map_type}} {{map}} {{$FormattedArgs}} +exec base.cfg",
    "provenance": "jedi-academy.kvp"
  },
  {
    "id": "kaboom",
    "name": "Kaboom!",
    "description": "Dedicated server for Kaboom! - AMP Exclusive",
    "os": [
      "Linux"
    ],
    "steam": {
      "app_id": "1007"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "both",
        "port": 40100
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Server started listening$",
    "events": {
      "join": "^Added Player \"(?P\u003cusername\u003e.+?)\" \\((?P\u003cuserid\u003e-?\\d+)\\) \\[::ffff:(?P\u003cendpoint\u003e.+?)\\]$",
      "leave": "^Removed Player \"(?P\u003cusername\u003e.+?)\" \\((?P\u003cuserid\u003e-?\\d+)\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Steam Common Components",
        "app_id": "1007"
      },
      {
        "kind": "steamcmd",
        "name": "Game Server Download",
        "app_id": "1574860"
      }
    ],
    "steam_login_required": true,
    "art_steam_app_id": "1574670",
    "wine": false,
    "entrypoint_hint": "+ip {{$ApplicationIPBinding}} +port {{$ApplicationPort1}} +queryport {{$ApplicationPort2}} {{$FormattedArgs}} +amptoken \"{{$AMPToken}}\"",
    "provenance": "kaboom.kvp"
  },
  {
    "id": "killing-floor",
    "name": "Killing Floor",
    "description": "Killing Floor Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "215350",
      "game_app_id": "1250"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7707
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 7708
      },
      {
        "name": "GameSpy Port",
        "proto": "udp",
        "port": 7717
      },
      {
        "name": "Web Admin Port",
        "proto": "tcp",
        "port": 8075
      },
      {
        "name": "Steam Port",
        "proto": "udp",
        "port": 20560
      },
      {
        "name": "Master Server Browser Port",
        "proto": "both",
        "port": 28852
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Bringing Level .* up for play \\(\\d+\\) appSeconds: \\d+\\.\\d+\\.\\.\\.$",
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "215350"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "215360"
      }
    ],
    "config_files": [
      "System/KillingFloor.ini"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "1250",
    "wine": false,
    "entrypoint_hint": "server {{Map}}{{CustomUrlArgs}}?game={{Game}}?VACSecured={{VACSecured}}?MaxPlayers={{$MaxUsers}}?multihome={{$ApplicationIPBinding}}?AdminName=admin?AdminPassword={{AdminPassword}} -Port={{$GamePort}} -QueryPort={{$QueryPort}} -WebAdminPort={{$WebAdminPort}} -nohomedir -log=server.log {{$FormattedArgs}} {{CustomSwitches}}",
    "provenance": "killing-floor.kvp"
  },
  {
    "id": "killing-floor-2",
    "name": "Killing Floor 2",
    "description": "Killing Floor 2 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "232130",
      "game_app_id": "232090"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 9080
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[\\d*\\.\\d*\\] Log: Steam game server UID: \\d*$",
    "events": {
      "join": "^\\[\\d*\\.\\d*\\] DevNet: Join succeeded: (?P\u003cusername\u003e.+?) playerid=(?P\u003cuserid\u003e.+?)$",
      "leave": "^\\[\\d*\\.\\d*\\] DevNet: CleanUp: clean up connection: RemoteAddr: .*, PlayerId: (?P\u003cuserid\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "232130"
      }
    ],
    "config_files": [
      "./KFGame/Config/PCServer-KFGame.ini",
      "./KFGame/Config/LinuxServer-KFGame.ini",
      "./KFGame/Config/KFWeb.ini"
    ],
    "art_steam_app_id": "232090",
    "wine": false,
    "entrypoint_hint": "{{Map}}{{CustomUrlArgs}}?Game={{Game}}?MaxPlayers={{$MaxUsers}} -Port={{$ApplicationPort1}} -QueryPort={{$ApplicationPort2}} -WebAdminPort={{$RemoteAdminPort}} -Multihome={{$ApplicationIPBinding}} {{$FormattedArgs}} {{CustomSwitches}}",
    "provenance": "killing-floor-2.kvp"
  },
  {
    "id": "last-oasis",
    "name": "Last Oasis",
    "description": "Last Oasis Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "920720",
      "game_app_id": "903950"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 5555
      },
      {
        "name": "Game Port +1",
        "proto": "udp",
        "port": 5556
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(LogInit: Display: Starting Game\\.)|(LogOnline: GotoState: NewState: Playing)$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "920720"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      }
    ],
    "art_steam_app_id": "903950",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} Mist -force_steamclient_link -messaging -NoLiveServer -EnableCheats -backendapiurloverride=\"{{backendapiurloverride}}\" -slots={{$MaxUsers}} -port={{$ApplicationPort1}} -QueryPort={{$ApplicationPort2}} {{OverrideConnectionAddress}} {{noeac}}{{noupnp}}{{$FormattedArgs}}",
    "provenance": "last-oasis.kvp"
  },
  {
    "id": "left-4-dead",
    "name": "Left 4 Dead",
    "description": "Left 4 Dead Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "222840",
      "game_app_id": "500"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$",
      "join": "^[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c{{UserIDRegex}}\u003e\u003c\u003e\" entered the game$",
      "leave": "^[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c{{UserIDRegex}}\u003e\u003c.*\u003e\" disconnected \\(reason \".*\"\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "222840"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/left-4-deadserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "left4dead/cfg/server.cfg"
    ],
    "art_steam_app_id": "500",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game left4dead -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "left-4-dead.kvp"
  },
  {
    "id": "left-4-dead2",
    "name": "Left 4 Dead 2",
    "description": "Left 4 Dead 2 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "222860",
      "game_app_id": "550"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$",
      "join": "^[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c{{UserIDRegex}}\u003e\u003c\u003e\" entered the game$",
      "leave": "^[\\d\\/]+ - [\\d:]+: \"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003c{{UserIDRegex}}\u003e\u003c.*\u003e\" disconnected \\(reason \".*\"\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "222860"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/left-4-dead2server.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "left4dead2/cfg/server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "550",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game left4dead2 -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "left-4-dead2.kvp"
  },
  {
    "id": "longvinter",
    "name": "Longvinter",
    "description": "Longvinter Dedicated Server",
    "os": [
      "Windows"
    ],
    "steam": {
      "app_id": "1639880",
      "game_app_id": "1635450"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogWorld: Bringing up level for play took: \\d+\\.\\d+$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1639880"
      },
      {
        "kind": "direct",
        "name": "Game.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/longvintergame.ini",
        "target_path": "{{$FullBaseDir}}Longvinter/Saved/Config/WindowsServer"
      },
      {
        "kind": "direct",
        "name": "Game.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/longvintergame.ini",
        "target_path": "{{$FullBaseDir}}Longvinter/Saved/Config/LinuxServer"
      }
    ],
    "config_files": [
      "Longvinter/Saved/Config/WindowsServer/Game.ini",
      "Longvinter/Saved/Config/LinuxServer/Game.ini"
    ],
    "art_steam_app_id": "1635450",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -Port={{$GamePort}} -MultiHome={{$ApplicationIPBinding}} {{$FormattedArgs}}",
    "provenance": "longvinter.kvp"
  },
  {
    "id": "longvinter-wine",
    "name": "Longvinter (Linux Wine)",
    "description": "Longvinter Dedicated Server (for Linux using Wine)",
    "os": [
      "Linux"
    ],
    "steam": {
      "app_id": "1639880",
      "game_app_id": "1635450",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogWorld: Bringing up level for play took: \\d+\\.\\d+$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1639880",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Game.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/longvintergame.ini",
        "target_path": "{{$FullBaseDir}}Longvinter/Saved/Config/WindowsServer"
      }
    ],
    "config_files": [
      "Longvinter/Saved/Config/WindowsServer/Game.ini"
    ],
    "art_steam_app_id": "1635450",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -Port={{$GamePort}} {{$FormattedArgs}}",
    "provenance": "longvinter-wine.kvp"
  },
  {
    "id": "lotr-moria",
    "name": "The Lord of the Rings: Return to Moria",
    "description": "The Lord of the Rings: Return to Moria Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "3349480",
      "game_app_id": "2933130",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 7777
      }
    ],
    "admin_method": "TailLogFile",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\].*Started hosting the game\\. Invite code:.*$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\].*Login request.*Name=(?P\u003cusername\u003e.+)\\?Profile.*userId: .*EOS:\\|(?P\u003cuserid\u003e.+?) .*$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\].*UNetConnection::Close.*UniqueId: EOS:\\|(?P\u003cuserid\u003e.+?),.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "3349480",
        "platform": "windows"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "direct",
        "name": "MoriaServerConfig.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/lotr-moriaserverconfig.ini",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "MoriaServerConfig.ini"
    ],
    "art_steam_app_id": "2933130",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} Moria -log",
    "provenance": "lotr-moria.kvp"
  },
  {
    "id": "luanti",
    "name": "Luanti",
    "description": "Luanti Dedicated Server (versions 5.10.0+)",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 30000
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d-]+ [\\d:]+: ACTION\\[Main\\]: Server for gameid=\".*\" listening on [\\[\\]\\d\\.]+:\\d+\\.$",
    "events": {
      "chat": "^[\\d-]+ [\\d:]+: ACTION\\[Server\\]: CHAT: \u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.*)$",
      "join": "^[\\d-]+ [\\d:]+: ACTION\\[Server\\]: (?P\u003cusername\u003e.+?) \\[[\\w:\\.]+\\] joins game\\. List of players:.*$",
      "leave": "^[\\d-]+ [\\d:]+: ACTION\\[Server\\]: (?P\u003cusername\u003e.+?) leaves game\\. List of players:.*$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Luanti Download",
        "url": "https://github.com/minetest/minetest/releases/download/{{ServerVersion}}/luanti-{{ServerVersion}}-win64.zip",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "minetest.conf"
    ],
    "steam_login_required": true,
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} --port {{$ServerPort}} --config \"{{$FullBaseDir}}minetest.conf\" --world \"{{$FullBaseDir}}worlds/{{worldname}}\" {{$FormattedArgs}}",
    "provenance": "luanti.kvp"
  },
  {
    "id": "mariadb",
    "name": "MariaDB",
    "description": "MariaDB Service Instance",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 3306
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(?:Your MariaDB connection id is \\d+|CPID: \\d+)$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "config_files": [
      "my.cnf"
    ],
    "wine": false,
    "entrypoint_hint": "{{CustomClientOptions}} {{$PlatformArgs}} --reconnect --force {{$FormattedArgs}}",
    "provenance": "mariadb.kvp"
  },
  {
    "id": "mindustry",
    "name": "Mindustry",
    "description": "Mindustry Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 6567
      },
      {
        "name": "Socket Input Port",
        "proto": "tcp",
        "port": 6569
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d-]+ [\\d:]+\\] \\[I\\] Server loaded\\. Type 'help' for help\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d-]+ [\\d:]+\\] \\[I\\] (?P\u003cusername\u003e.+?) has connected\\. \\[(?P\u003csessionid\u003e.+?)\\]$",
      "leave": "^\\[[\\d-]+ [\\d:]+\\] \\[I\\] (?P\u003cusername\u003e.+?) has disconnected\\. \\[(?P\u003csessionid\u003e.+?)\\] \\(.*\\)$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "Server Download",
        "repo": "Anuken/Mindustry",
        "asset_regex": "server-release.jar",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "art_steam_app_id": "1127400",
    "wine": false,
    "entrypoint_hint": "{{CustomJavaArgs}} -jar server-release.jar config port {{$ServerPort}},config socketInputPort {{$SocketInputPort}},{{host}}{{$FormattedArgs}}",
    "provenance": "mindustry.kvp"
  },
  {
    "id": "minecraft-bedrock",
    "name": "Minecraft Bedrock",
    "description": "Minecraft Bedrock Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server IPv4 Port",
        "proto": "udp",
        "port": 19132
      },
      {
        "name": "Server IPv6 Port",
        "proto": "udp",
        "port": 19133
      },
      {
        "name": "Debugger Port",
        "proto": "udp",
        "port": 19144
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(?:NO LOG FILE! - )?\\[[\\d-]+ [\\d:]+ INFO\\] Server started\\.$",
    "events": {
      "chat": "^$",
      "join": "^(?:NO LOG FILE! - )?\\[[\\d-]+ [\\d:]+ INFO\\] Player connected: (?P\u003cusername\u003e.+?), xuid: (?P\u003cuserid\u003e\\d+?)$",
      "leave": "^(?:NO LOG FILE! - )?\\[[\\d-]+ [\\d:]+ INFO\\] Player disconnected: (?P\u003cusername\u003e.+?), xuid: (?P\u003cuserid\u003e.+?), pfid: .*$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://www.minecraft.net/bedrockdedicatedserver/bin-win/bedrock-server-{{SpecificServerVersion}}.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://www.minecraft.net/bedrockdedicatedserver/bin-linux/bedrock-server-{{SpecificServerVersion}}.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://www.minecraft.net/bedrockdedicatedserver/bin-win-preview/bedrock-server-{{SpecificServerVersion}}.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://www.minecraft.net/bedrockdedicatedserver/bin-linux-preview/bedrock-server-{{SpecificServerVersion}}.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "config_files": [
      "server.properties"
    ],
    "wine": false,
    "ported": true,
    "module_id": "minecraft-bedrock",
    "provenance": "minecraft-bedrock.kvp"
  },
  {
    "id": "minetest",
    "name": "Minetest (Legacy)",
    "description": "Minetest (Legacy) Dedicated Server for versions up to 5.9.1",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 30000
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d-]+ [\\d:]+: ACTION\\[Main\\]: Server for gameid=\".*\" listening on [\\[\\]\\d\\.]+:\\d+\\.$",
    "events": {
      "chat": "^[\\d-]+ [\\d:]+: ACTION\\[Server\\]: CHAT: \u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.*)$",
      "join": "^[\\d-]+ [\\d:]+: ACTION\\[Server\\]: (?P\u003cusername\u003e.+?) \\[[\\w:\\.]+\\] joins game\\. List of players:.*$",
      "leave": "^[\\d-]+ [\\d:]+: ACTION\\[Server\\]: (?P\u003cusername\u003e.+?) leaves game\\. List of players:.*$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Minetest Download",
        "url": "https://github.com/minetest/minetest/releases/download/{{ServerVersion}}/minetest-{{ServerVersion}}-win64.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Minetest Download",
        "url": "https://github.com/An0n3m0us/Minetest-AppImages/releases/download/{{ServerVersion}}/Minetest-{{ServerVersion}}-x86_64.AppImage",
        "target_path": "{{$FullRootDir}}.appimage"
      },
      {
        "kind": "direct",
        "name": "Game Config File Download",
        "url": "https://raw.githubusercontent.com/minetest/minetest/master/minetest.conf.example",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "minetest.conf"
    ],
    "steam_login_required": true,
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} --port {{$ServerPort}} --config \"{{$FullBaseDir}}minetest.conf\" --world \"{{$FullBaseDir}}worlds/{{worldname}}\" {{$FormattedArgs}}",
    "provenance": "minetest.kvp"
  },
  {
    "id": "miscreated",
    "name": "Miscreated",
    "description": "Miscreated Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "302200",
      "game_app_id": "299740",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 64090
      },
      {
        "name": "Steam Port",
        "proto": "udp",
        "port": 64091
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 64092
      },
      {
        "name": "VOIP Port",
        "proto": "udp",
        "port": 64093
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 64094
      }
    ],
    "admin_method": "TailLogFile",
    "ready_pattern": "^\\\u003c[\\d:]+\\\u003e CGame::OnPolicyResponse - LoggedOn: 1, Secure: 1, SteamID: \\d+$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "302200",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Settings Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/miscreatedhosting.cfg",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "hosting.cfg"
    ],
    "art_steam_app_id": "299740",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -sv_port {{$GamePort}} -sv_bind {{$ApplicationIPBinding}} -mis_gameserverid {{mis_gameserverid}} {{http_startserver}}{{mis_whitelist}}{{$FormattedArgs}}",
    "provenance": "miscreated.kvp"
  },
  {
    "id": "mongodb",
    "name": "MongoDB",
    "description": "MongoDB Service Instance",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 27017
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Current Mongosh Log ID:\\t\\w+$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "config_files": [
      "mongod.conf"
    ],
    "wine": false,
    "entrypoint_hint": "\"mongodb://127.0.0.1:{{$ServerPort}}/admin\" {{CustomClientOptions}} --username admin --password {{AdminPassword}} --authenticationDatabase admin {{$FormattedArgs}}",
    "provenance": "mongodb.kvp"
  },
  {
    "id": "mordhau",
    "name": "Mordhau",
    "description": "Mordhau Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "629800",
      "game_app_id": "629760"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "Beacon Port",
        "proto": "both",
        "port": 15000
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 7778
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^.*LogInit\\: Display\\: Starting Game.$",
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "629800"
      }
    ],
    "config_files": [
      "Mordhau/Saved/Config/WindowsServer/Game.ini",
      "Mordhau/Saved/Config/LinuxServer/Game.ini"
    ],
    "art_steam_app_id": "629760",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{map}} -Port={{$ApplicationPort1}} -RconPort={{$RemoteAdminPort}} -QueryPort={{$ApplicationPort2}} -BeaconPort={{$ApplicationPort3}} {{$FormattedArgs}}",
    "provenance": "mordhau.kvp"
  },
  {
    "id": "mount-and-blade2",
    "name": "Mount \u0026 Blade II: Bannerlord",
    "description": "Mount \u0026 Blade II: Bannerlord Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1863440",
      "game_app_id": "261550"
    },
    "ports": [
      {
        "name": "Game and Web Admin Port",
        "proto": "both",
        "port": 7210
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1863440"
      }
    ],
    "art_steam_app_id": "261550",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}} /LogOutputPath \"{{$FullBaseDir}}\" {{CustomArgs}} -log _MODULES_*{{Modules}}*_MODULES_",
    "provenance": "mount-and-blade2.kvp"
  },
  {
    "id": "mta-sa",
    "name": "Multi Theft Auto: San Andreas",
    "description": "Multi Theft Auto: San Andreas Multiplayer Mod for Grand Theft Auto: San Andreas",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 22003
      },
      {
        "name": "ASE Port",
        "proto": "udp",
        "port": 22126
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d:]+\\] Server started and is ready to accept connections!$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d:]+\\] JOIN: (?P\u003cusername\u003e.+) joined the game \\(IP: (?P\u003cendpoint\u003e.+?)\\)$",
      "leave": "^\\[[\\d:]+\\] QUIT: (?P\u003cusername\u003e.+) left the game \\[.*\\]$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://mirror-cdn.multitheftauto.com/mtasa/main/mtasa-1.6.exe",
        "target_path": "{{$FullRootDir}}setup"
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://linux.multitheftauto.com/dl/multitheftauto_linux_x64.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://linux.multitheftauto.com/dl/multitheftauto_linux_arm64.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Default Config Files Download",
        "url": "https://linux.multitheftauto.com/dl/baseconfig.tar.gz",
        "target_path": "{{$FullBaseDir}}mods/deathmatch"
      },
      {
        "kind": "direct",
        "name": "Default Resources Download",
        "url": "https://mirror-cdn.multitheftauto.com/mtasa/resources/mtasa-resources-latest.zip",
        "target_path": "{{$FullBaseDir}}mods/deathmatch/resources"
      }
    ],
    "config_files": [
      "mods/deathmatch/mtaserver.conf"
    ],
    "art_steam_app_id": "12120",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -u -n --port {{$ServerPort}} --httpport {{$ServerPort}} --httpserver {{httpserver}} --maxplayers {{$MaxUsers}} {{$FormattedArgs}}",
    "provenance": "mta-sa.kvp"
  },
  {
    "id": "mxbikes",
    "name": "MX Bikes",
    "description": "MX Bikes Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 54210
      },
      {
        "name": "Live Port",
        "proto": "udp",
        "port": 54211
      },
      {
        "name": "Remote Admin Port",
        "proto": "udp",
        "port": 54212
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "MX Bikes Game Files Download",
        "app_id": "655500",
        "platform": "windows",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "MX Bikes Server Patch Download",
        "url": "http://www.mx-bikes.com/downloads/mxbikes.exe",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/mxbikesdedicated.ini",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "dedicated.ini",
      "core.ini"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "655500",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -dedicated {{$GamePort}} -set params dedicated.ini {{$FormattedArgs}}",
    "provenance": "mxbikes.kvp"
  },
  {
    "id": "mysql",
    "name": "MySQL",
    "description": "MySQL Service Instance",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 3306
      },
      {
        "name": "Server X Port",
        "proto": "tcp",
        "port": 33060
      },
      {
        "name": "Admin Port",
        "proto": "tcp",
        "port": 33062
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(?:Your MySQL connection id is \\d+|CPID: \\d+)$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "config_files": [
      "my.cnf"
    ],
    "wine": false,
    "entrypoint_hint": "{{CustomClientOptions}} {{$PlatformArgs}} --reconnect --force {{$FormattedArgs}}",
    "provenance": "mysql.kvp"
  },
  {
    "id": "myth-of-empires",
    "name": "Myth of Empires",
    "description": "Myth of Empires Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1794810",
      "game_app_id": "1371580",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 7778
      },
      {
        "name": "Remote Management Port",
        "proto": "tcp",
        "port": 7779
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogSG: PostLogin Account: (?P\u003cuserid\u003e\\d+?)$",
      "leave": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogSG: Logout Account: (?P\u003cuserid\u003e\\d+?)\\. Replaced:\\d+$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1794810",
        "platform": "windows"
      }
    ],
    "art_steam_app_id": "1371580",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} MOE {{Map}} -game -server -DataLocalFile -NotCheckServerSteamAuth -stdout -FullStdOutLogOutput log={{ServerListId}}.log -LOCALLOGTIMES -PrivateServer -Port={{$GamePort}} -QueryPort={{$QueryPort}} -ShutDownServicePort={{$RCONPort}} -bStartShutDownServiceInPrivateServer=true -MultiHome={{$ApplicationIPBinding}} -ShutDownServiceIP={{$ApplicationIPBinding}} -OutAddress={{OutAddress}} -SessionName=\"{{SessionName}}\" -SteamServerName=\"{{SessionName}}\" -ShutDownServiceKey=\"{{$RemoteAdminPassword}}\" -pakdir=\"{{$FullBaseDir}}MOE/{{ServerListId}}Mods\" {{UseACE}}{{ForceSteamNet}}{{$FormattedArgs}} {{CustomArgs}}",
    "provenance": "myth-of-empires.kvp"
  },
  {
    "id": "nebulous-fleet-command",
    "name": "NEBULOUS: Fleet Command",
    "description": "NEBULOUS: Fleet Command Dedicated Server",
    "os": [
      "Linux"
    ],
    "steam": {
      "app_id": "2353090",
      "game_app_id": "887570"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "tcp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27016
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*- Log - Dedicated server startup completed$",
    "events": {
      "chat": "^$",
      "join": "^.*- Log - GameManager::OnServerAddPlayer: Adding player: (?P\u003csessionid\u003e\\d+?)$",
      "leave": "^.*- Log - GameManager::OnServerDisconnect: Removing player (?P\u003csessionid\u003e\\d+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2353090"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/nebulous-fleet-commanddedicatedserverconfig.xml",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "./AMPServerConfig.xml"
    ],
    "art_steam_app_id": "887570",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -nographics -batchmode -serverConfig ./AMPServerConfig.xml {{$FormattedArgs}} -logFile -",
    "provenance": "nebulous-fleet-command.kvp"
  },
  {
    "id": "necesse",
    "name": "Necesse",
    "description": "Necesse is a top-down sandbox action-adventure game in a procedurally generated world. Progress your character's gear and settlement through fighting, mining, exploring, crafting, trading and more!",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1169370",
      "game_app_id": "1169040"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 14159
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\-]+ [\\d:]+\\] Started server using port \\d+ with \\d+ slots on world \".+\"( with password \".+\")?, game version .+$",
    "events": {
      "chat": "^\\[[\\d\\-]+ [\\d:]+\\] \\((?P\u003cusername\u003e.+)\\): (?P\u003cmessage\u003e.+)$",
      "join": "^\\[[\\d\\-]+ [\\d:]+\\] Client \"(?P\u003cusername\u003e.+?)\" connected on slot (.+)\\.$",
      "leave": "^\\[[\\d\\-]+ [\\d:]+\\] Player \\d+ \\(\"(?P\u003cusername\u003e.+)\"\\) disconnected with message: .+$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1169370"
      },
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/necesse1-3server.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "cfg/server.cfg"
    ],
    "art_steam_app_id": "1169040",
    "wine": false,
    "entrypoint_hint": "-jar Server.jar -nogui -localdir -port {{$GamePort}} -ip {{$ApplicationIPBinding}} {{$FormattedArgs}}",
    "provenance": "necesse.kvp"
  },
  {
    "id": "night-of-the-dead",
    "name": "Night of the Dead",
    "description": "Night of the Dead Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1420710",
      "game_app_id": "1377380",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogBlueprintUserMessages: \\[BP_LFGameMode_C_\\d+\\] Session Update success$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogOnline: STEAM: Adding user (?P\u003cuserid\u003e.+?):\\d+ from RegisterConnection$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogOnline: STEAM: (?P\u003cuserid\u003e.+?) has been removed\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1420710",
        "platform": "windows"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007",
        "platform": "windows"
      }
    ],
    "config_files": [
      "LF/Saved/Config/ServerSettings.ini",
      "ServerSettings.ini"
    ],
    "art_steam_app_id": "1377380",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} ?listen -Port={{$GamePort}} -QueryPort={{$QueryPort}} -MultiHome={{$ApplicationIPBinding}} {{DisableAntiCheat}}{{$FormattedArgs}} -stdout -FullStdOutLogOutput -CRASHREPORTS",
    "provenance": "night-of-the-dead.kvp"
  },
  {
    "id": "nightingale",
    "name": "Nightingale",
    "description": "Nightingale Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "3796810",
      "game_app_id": "1928980"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Status Port",
        "proto": "tcp",
        "port": 7778
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogNWXGameMode: GameModeAwaiter became ready\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogNWXPlayerController: Received initial persistence data from client (?P\u003cuserid\u003e.+?), loading into controller\\.$",
      "leave": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogSocial: EndPlay: (?P\u003cuserid\u003e.+?) stop listening for events$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "3796810"
      }
    ],
    "config_files": [
      "NWX/Config/ServerSettings.ini"
    ],
    "art_steam_app_id": "1928980",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} NWX -port={{$GamePort}} -statusPort={{$StatusPort}} -multihome={{$ApplicationIPBinding}} -ini:Engine:[HTTPServer.Listeners]:+ListenerOverrides=(Port={{$StatusPort}},BindAddress={{$ApplicationIPBinding}}) -ini:Game:[/Script/Engine.GameSession]:MaxPlayers={{$MaxUsers}} -ini:ServerSettings:[/Script/NWX.NWXServerSettings]:StartingDifficulty={{StartingDifficulty}} {{$FormattedArgs}} {{EnableCheats}}-stdout -FullStdOutLogOutput",
    "provenance": "nightingale.kvp"
  },
  {
    "id": "no-more-room-in-hell",
    "name": "No More Room in Hell",
    "description": "No More Room in Hell Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "317670",
      "game_app_id": "224260"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "317670"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/no-more-room-in-hellserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "nmrih/cfg/server.cfg"
    ],
    "art_steam_app_id": "224260",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game nmrih -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} -tickrate {{tickrate}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "no-more-room-in-hell.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "no-one-survived",
    "name": "No One Survived",
    "description": "No One Survived Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2329680",
      "game_app_id": "1963370",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogSteamSocketsAPI: Verbose: SteamSockets API: Log AuthStatus \\(steamid:\\d+\\):\\s+OK\\s+\\(OK\\)$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogNet: Login request: \\?Name=(?P\u003cusername\u003e.+?) userId: STEAM:UNKNOWN \\[(?P\u003cuserid\u003e.+?)\\] platform: STEAM$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogNet: UChannel::Close: Sending CloseBunch\\.(?:.+?) UniqueId: STEAM:UNKNOWN \\[(?P\u003cuserid\u003e.+?)\\]$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2329680",
        "platform": "windows"
      }
    ],
    "config_files": [
      "WRSH/Saved/Config/WindowsServer/Game.ini",
      "WRSH/Saved/Config/WindowsServer/Engine.ini"
    ],
    "art_steam_app_id": "1963370",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} WRSH -server -stdout -FullStdOutLogOutput -Port={{$GamePort}} -QueryPort={{$QueryPort}} -MultiHome={{$ApplicationIPBinding}} {{$FormattedArgs}}",
    "provenance": "no-one-survived.kvp"
  },
  {
    "id": "node",
    "name": "Node.js App Runner",
    "description": "Node.js App Runner",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Main Port",
        "proto": "both",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "App Download",
        "repo": "{{DownloadSource}}",
        "asset_regex": "{{DownloadFilename}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "App Download",
        "url": "{{DownloadSource}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "wine": false,
    "entrypoint_hint": "{{NodeArgs}} {{ApplicationName}} {{CommandLineArgs}}",
    "provenance": "node.kvp"
  },
  {
    "id": "nuclear-option",
    "name": "Nuclear Option",
    "description": "Nuclear Option Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "3930080",
      "game_app_id": "2168680"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 7778
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\d+\\.\\d+: \\[NetworkManagerNuclearOption\\] Server finished loading$",
    "events": {
      "chat": "^$",
      "join": "^\\d+\\.\\d+: \\[NetworkManagerNuclearOption\\] Player connected: connection\\(SteamConnection\\((?P\u003cuserid\u003e.+)\\)\\)$",
      "leave": "^\\d+\\.\\d+: \\[NetworkManagerNuclearOption\\] Player disconnected: connection\\(SteamConnection\\((?P\u003cuserid\u003e.+)\\)\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "3930080"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/nuclear-optiondedicatedserverconfig.json",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "DedicatedServerConfig.json"
    ],
    "art_steam_app_id": "2168680",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -logFile - {{$FormattedArgs}}",
    "provenance": "nuclear-option.kvp"
  },
  {
    "id": "nukkit",
    "name": "Nukkit",
    "description": "Cloudburst Nukkit Server for Minecraft Bedrock",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 19132
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d:]+ \\[INFO \\] (Done \\(\\d+\\.\\d+s\\)! For help, type \"help\" or \"\\?\"|起動完了\\(\\d+\\.\\d+秒\\)！ \"help\"または\"\\?\"でヘルプを表示|启动完成 \\(\\d+\\.\\d+s\\)！如需帮助，请输入 \"help\" 或 \"\\?\"|讀取完成 \\(\\d+\\.\\d+s\\)！如需幫助，請輸入 \"help\" 或 \"\\?|Загружено \\(\\d+\\.\\d+ секунд\\)! Для справки введите \"help\" или \"\\?\"|Listo \\(\\d+\\.\\d+s\\)! Escribe \"help\" o \"\\?\" para recibir ayuda|Ukonczono w \\(\\d+\\.\\d+ sekund\\)! Aby uzyskac pomoc wpisz help lub \\?|Finalizado \\(\\d+\\.\\d+s\\)! Para ver a ajuda, escreva \"help\" ou \"\\?\"|완료 \\(\\d+\\.\\d+초\\)! 도움말을 참조하시려면 \"help\" 또는 \"\\?\"를 입력해주세요|Готово \\(\\d+\\.\\d+с\\)! Для допомоги, наберіть \"help\" або \"\\?\"|Fertig! \\(\\d+\\.\\d+s\\)! Für Hilfe, tippe \"help\" oder \"\\?\"|Baigta \\(\\d+\\.\\d+s\\)! Jeigu reikia pagalbos, rašykite \"help\" arba \"\\?\"|Hotovo \\(\\d+\\.\\d+s\\)! Pro pomoc, napis \"help\" nebo \"\\?\"|Valmis \\(\\d+\\.\\d+s\\)! Kirjoita \"help\" tai \"\\?\" saadaksesi apua)$",
    "events": {
      "chat": "^$",
      "join": "^[\\d:]+ \\[INFO \\] (?P\u003cusername\u003e.+?)\\s*(joined the game|加入了游戏|加入了遊戲|がゲームに参加しました|присоединился к игре|se ha conectado|dolaczyl do gry|entrou no jogo|님이 게임에 참여했습니다|приєднався|betrat das Spiel|prisijungė į žaidimą|masuk ke permainan|se připojil do hry|oyuna katıldı|liittyi peliin|دخل الى اللعبه)$",
      "leave": "^[\\d:]+ \\[INFO \\] (?P\u003cusername\u003e.+?)\\s*(left the game|退出了游戏|離開了遊戲|が退出しました|вышел из игры|dejó el juego|opuscil gre|saiu do jogo|님이 게임을 떠났습니다|покидає гру|hat das Spiel verlassen|atsijungė nuo žaidimo|keluar dari permainan|opustil hru|oyunu terk etti|poistui pelistä|خرج من اللعبه)$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Nukkit Download",
        "url": "https://repo.opencollab.dev/api/maven/latest/file/maven-snapshots/cn/nukkit/nukkit/1.0-SNAPSHOT?extension=jar",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "server.properties",
      "nukkit.yml"
    ],
    "wine": false,
    "entrypoint_hint": "-Xms{{MinMemory}}M -Xmx{{MaxMemory}}M -Dfile.encoding=UTF-8 {{AdditionalJavaArgs}} -jar nukkit.jar {{JarOptions}}",
    "provenance": "nukkit.kvp"
  },
  {
    "id": "open-mp",
    "name": "open.mp - Grand Theft Auto: San Andreas Server",
    "description": "open.mp Multiplayer Mod for Grand Theft Auto: San Andreas",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d-]+T[\\d:]+(\\+|-)\\d+\\] \\[Info\\] Legacy Network started on .*\\.$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "open.mp Download",
        "repo": "openmultiplayer/open.mp",
        "asset_regex": "open.mp-win-x86.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "github",
        "name": "open.mp Download",
        "repo": "openmultiplayer/open.mp",
        "asset_regex": "open.mp-linux-x86.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "config.json"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "12120",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "open-mp.kvp"
  },
  {
    "id": "open-world",
    "name": "Open World - RimWorld Server",
    "description": "Open World - a free multiplayer mod for RimWorld",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 25555
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d:]+\\] \\| Server Launched$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "Open World Download",
        "repo": "D12-Dev/OpenWorld",
        "asset_regex": "win-x64.zip",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "github",
        "name": "Open World Download",
        "repo": "D12-Dev/OpenWorld",
        "asset_regex": "linux-x64.zip",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "github",
        "name": "Open World Download",
        "repo": "D12-Dev/OpenWorld",
        "asset_regex": "linux-arm64.zip",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Config.json File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/open-worldserverconfig.json",
        "target_path": "{{$FullBaseDir}}Data"
      }
    ],
    "config_files": [
      "Data/Config.json",
      "Data/Deep Config.json",
      "Data/Values.json",
      "Data/Difficulty.json"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "294100",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "open-world.kvp"
  },
  {
    "id": "openra-dune-2000",
    "name": "OpenRA - Dune 2000",
    "description": "OpenRA Dedicated Server for Dune 2000",
    "os": [
      "Windows",
      "Linux"
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[.*\\] Master server communication established\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\[.*\\] (?P\u003cusername\u003e.+?) has joined the game\\.$",
      "leave": "^\\[.*\\] (?P\u003cusername\u003e.+?) has (disconnected|left)\\.$"
    },
    "steam_login_required": true,
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} Engine.EngineDir=\".\" Engine.SupportDir=\"{{$FullBaseDir}}Support\" Server.ListenPort=\"{{$ServerPort}}\" Game.Mod=\"d2k\" {{$FormattedArgs}}",
    "provenance": "openra-dune-2000.kvp"
  },
  {
    "id": "openra-red-alert",
    "name": "OpenRA - Red Alert",
    "description": "OpenRA Dedicated Server for Command \u0026 Conquer: Red Alert",
    "os": [
      "Windows",
      "Linux"
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[.*\\] Master server communication established\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\[.*\\] (?P\u003cusername\u003e.+?) has joined the game\\.$",
      "leave": "^\\[.*\\] (?P\u003cusername\u003e.+?) has (disconnected|left)\\.$"
    },
    "steam_login_required": true,
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} Engine.EngineDir=\".\" Engine.SupportDir=\"{{$FullBaseDir}}Support\" Server.ListenPort=\"{{$ServerPort}}\" Game.Mod=\"ra\" {{$FormattedArgs}}",
    "provenance": "openra-red-alert.kvp"
  },
  {
    "id": "openra-tiberian-dawn",
    "name": "OpenRA - Tiberian Dawn",
    "description": "OpenRA Dedicated Server for Command \u0026 Conquer: Tiberian Dawn",
    "os": [
      "Windows",
      "Linux"
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[.*\\] Master server communication established\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\[.*\\] (?P\u003cusername\u003e.+?) has joined the game\\.$",
      "leave": "^\\[.*\\] (?P\u003cusername\u003e.+?) has (disconnected|left)\\.$"
    },
    "steam_login_required": true,
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} Engine.EngineDir=\".\" Engine.SupportDir=\"{{$FullBaseDir}}Support\" Server.ListenPort=\"{{$ServerPort}}\" Game.Mod=\"cnc\" {{$FormattedArgs}}",
    "provenance": "openra-tiberian-dawn.kvp"
  },
  {
    "id": "openrct2",
    "name": "OpenRCT2",
    "description": "OpenRCT2 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "tcp",
        "port": 11753
      },
      {
        "name": "LAN Port",
        "proto": "udp",
        "port": 11754
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Listening for clients on .*:\\d+$",
    "events": {
      "chat": "^.*\\[CHAT\\] \\(\\d+\\) \u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "RCT2 Game Files Download",
        "app_id": "285330",
        "platform": "windows",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "RCT1 Game Files Download",
        "app_id": "285310",
        "platform": "windows",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Config.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/openrct2config.ini",
        "target_path": "{{$FullBaseDir}}user-data"
      },
      {
        "kind": "direct",
        "name": "Groups.json File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/openrct2groups.json",
        "target_path": "{{$FullBaseDir}}user-data"
      }
    ],
    "config_files": [
      "user-data/config.ini"
    ],
    "steam_login_required": true,
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{HostMode}} --headless --port={{$GamePort}} --user-data-path=./user-data --rct2-data-path=./rct2game --rct1-data-path=./rct1game {{$FormattedArgs}}",
    "provenance": "openrct2.kvp"
  },
  {
    "id": "openstarbound",
    "name": "OpenStarbound",
    "description": "OpenStarbound Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "211820"
    },
    "ports": [
      {
        "name": "Game and Query Port",
        "proto": "both",
        "port": 21025
      },
      {
        "name": "RCON Port",
        "proto": "both",
        "port": 21026
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^\\[Info\\] UniverseServer\\: listening for incoming TCP connections on [\\d\\.:]+:\\d+$",
    "events": {
      "chat": "^\\[Info\\] Chat: \\\u003c(?P\u003cusername\u003e.+?)\\\u003e (?P\u003cmessage\u003e.+?)$",
      "join": "^\\[Info\\] UniverseServer\\: Logged in account.*as player '(?P\u003cusername\u003e.+?)' from address.*$",
      "leave": "^\\[Info\\] UniverseServer\\: Client '(?P\u003cusername\u003e.+?)'.*disconnected for reason.*$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "OpenStarbound Download",
        "repo": "OpenStarbound/OpenStarbound",
        "asset_regex": "OpenStarbound-Windows-Server.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "github",
        "name": "OpenStarbound Download",
        "repo": "OpenStarbound/OpenStarbound",
        "asset_regex": "OpenStarbound-Linux-Clang-Server.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "steamcmd",
        "name": "Starbound Download",
        "app_id": "211820"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/openstarbound_server.config",
        "target_path": "{{$FullBaseDir}}storage"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/openstarboundmanagemods.sh",
        "target_path": "{{$FullInstanceDir}}"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/openstarboundmanagemods.ps1",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "storage/starbound_server.config"
    ],
    "steam_login_required": true,
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "openstarbound.kvp"
  },
  {
    "id": "openttd",
    "name": "OpenTTD",
    "description": "OpenTTD Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1536610",
      "game_app_id": "1536610"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 3979
      },
      {
        "name": "Server Admin Port",
        "proto": "tcp",
        "port": 3977
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(?:\\[[\\d-]+ [\\d:]+\\] )?dbg: \\[net(?::\\d+)?\\] Listening on [\\d.:]+ \\(IPv4\\)$",
    "events": {
      "chat": "^$",
      "join": "^‎\\*\\*\\* (?P\u003cusername\u003e.+?) has joined the game \\(Client #(?P\u003cuserid\u003e\\d+?)\\)$",
      "leave": "^‎\\*\\*\\* (?P\u003cusername\u003e.+?) has left the game \\((?:.+?)\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1536610"
      },
      {
        "kind": "direct",
        "name": "Openttd.cfg Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/openttdopenttd.cfg",
        "target_path": "{{$FullBaseDir}}config"
      },
      {
        "kind": "direct",
        "name": "Private.cfg Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/openttdprivate.cfg",
        "target_path": "{{$FullBaseDir}}config"
      },
      {
        "kind": "direct",
        "name": "Secrets.cfg Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/openttdsecrets.cfg",
        "target_path": "{{$FullBaseDir}}config"
      }
    ],
    "config_files": [
      "config/openttd.cfg",
      "config/private.cfg",
      "config/secrets.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "1536610",
    "wine": false,
    "entrypoint_hint": "-D {{$ApplicationIPBinding}}:{{$ServerPort}} -c config/openttd.cfg {{$FormattedArgs}}",
    "provenance": "openttd.kvp"
  },
  {
    "id": "operation-harsh-doorstop",
    "name": "Operation: Harsh Doorstop",
    "description": "Operation: Harsh Doorstop Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27005
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 7779
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogWorld: Bringing up level for play took: \\d+\\.\\d+$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogOnline: STEAM: AUTH HANDLER: Sending auth result to user (?P\u003cuserid\u003e\\d+?) with flag success\\? 1$",
      "leave": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogOnline: STEAM: (?P\u003cuserid\u003e\\d+?) has been removed\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "950900",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "1316480",
        "conditional": true
      }
    ],
    "config_files": [
      "HarshDoorstop/Saved/Config/WindowsServer/Game.ini"
    ],
    "art_steam_app_id": "736590",
    "wine": false,
    "entrypoint_hint": "HarshDoorstop {{Map}}?{{$FormattedArgs}}{{bDisableKitRestrictions}}{{bBotAutofill}}{{CustomOptions}} -QueryPort={{$QueryPort}} -RCONPort={{$RCONPort}} -EnableRCON -MultiHome={{$ApplicationIPBinding}} -RCONIP={{$ApplicationIPBinding}} -RCONPassword={{$RemoteAdminPassword}} -SteamServerName=\"{{ServerName}}\" {{CustomFlags}} -stdout {{$PlatformArgs}}",
    "provenance": "operation-harsh-doorstop.kvp"
  },
  {
    "id": "palworld",
    "name": "Palworld",
    "description": "Palworld Dedicated Server with Steam Workshop and legacy Unreal Engine 4/5 Scripting System modding support for Windows",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2394010",
      "game_app_id": "1623730"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 8211
      },
      {
        "name": "REST API Port",
        "proto": "tcp",
        "port": 8212
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 25575
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*Running Palworld dedicated server on :\\d+$",
    "events": {
      "chat": "^(?:\\[[\\d-]+ [\\d:]+\\] \\[CHAT\\] )?\u003c(?P\u003cusername\u003e.+)\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^(?:\\[[\\d-]+ [\\d:]+\\] \\[LOG\\] )?(?P\u003cusername\u003e.+) (?P\u003cendpoint\u003e.+?) connected the server\\. \\(User id: (?P\u003cuserid\u003e.+?)\\)$",
      "leave": "^(?:\\[[\\d-]+ [\\d:]+\\] \\[LOG\\] )?(?P\u003cusername\u003e.+) left the server\\. \\(User id: (?P\u003cuserid\u003e.+?)\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2394010"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/palworld19templatesettings.ini",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "UE4SS Download",
        "url": "https://github.com/UE4SS-RE/RE-UE4SS/releases/download/experimental/UE4SS_{{UE4SSExperimentalVersion}}.zip",
        "target_path": "{{$FullBaseDir}}Pal/Binaries/Win64",
        "conditional": true
      }
    ],
    "config_files": [
      "Pal/Saved/Config/WindowsServer/PalWorldSettings.ini",
      "Pal/Saved/Config/LinuxServer/PalWorldSettings.ini",
      "Pal/Binaries/Win64/UE4SS-settings.ini",
      "Pal/Binaries/Win64/ue4ss/UE4SS-settings.ini",
      "steamapps/workshop/content/1623730/3625223587/UE4SS-settings.ini",
      "Mods/PalModSettings.ini"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{CommunityServer}}-Port={{$GamePort}} -QueryPort={{$QueryPort}} -RCONPort={{$RCONPort}} -players={{$MaxUsers}} {{MultiThread}}{{$FormattedArgs}} {{CustomArgs}}",
    "ported": true,
    "module_id": "palworld",
    "provenance": "palworld.kvp"
  },
  {
    "id": "palworld-modded",
    "name": "Palworld (Modded)",
    "description": "Palworld Dedicated Server with Steam Workshop and legacy Unreal Engine 4/5 Scripting System modding support",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2394010",
      "game_app_id": "1623730",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 8211
      },
      {
        "name": "REST API Port",
        "proto": "tcp",
        "port": 8212
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 25575
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*Running Palworld dedicated server on :\\d+$",
    "events": {
      "chat": "^$",
      "join": "^(?:\\[[\\d-]+ [\\d:]+\\] \\[LOG\\] )?(?P\u003cusername\u003e.+) joined the server\\. \\(User id: (?P\u003cuserid\u003e.+?)\\)|(?:\\[[\\d:]+\\]\\s?\\[info\\] )?'(?P\u003cusername\u003e.+)' \\(UserId=(?P\u003cuserid\u003e.+?)(, IP=(?P\u003cendpoint\u003e.+?))?\\) has logged in\\.$",
      "leave": "^(?:\\[[\\d-]+ [\\d:]+\\] \\[LOG\\] )?(?P\u003cusername\u003e.+) left the server\\. \\(User id: (?P\u003cuserid\u003e.+?)\\)|(?:\\[[\\d:]+\\]\\s?\\[info\\] )?'(?P\u003cusername\u003e.+)' \\(UserId=(?P\u003cuserid\u003e.+?)(, IP=(?P\u003cendpoint\u003e.+?))?\\) has logged out\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2394010",
        "platform": "windows"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/palworld19templatesettings.ini",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "UE4SS Download",
        "url": "https://github.com/UE4SS-RE/RE-UE4SS/releases/download/experimental/UE4SS_{{UE4SSExperimentalVersion}}.zip",
        "target_path": "{{$FullBaseDir}}Pal/Binaries/Win64",
        "conditional": true
      }
    ],
    "config_files": [
      "Pal/Saved/Config/WindowsServer/PalWorldSettings.ini",
      "Pal/Binaries/Win64/UE4SS-settings.ini",
      "Pal/Binaries/Win64/ue4ss/UE4SS-settings.ini",
      "steamapps/workshop/content/1623730/3625223587/UE4SS-settings.ini",
      "Mods/PalModSettings.ini"
    ],
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{CommunityServer}}-Port={{$GamePort}} -QueryPort={{$QueryPort}} -RCONPort={{$RCONPort}} -players={{$MaxUsers}} {{MultiThread}}{{$FormattedArgs}} {{CustomArgs}}",
    "ported": true,
    "module_id": "palworld",
    "provenance": "palworld-modded.kvp"
  },
  {
    "id": "path-of-titans",
    "name": "Path of Titans",
    "description": "Path of Titans Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Reserved Port",
        "proto": "both",
        "port": 7778
      },
      {
        "name": "Stats Port",
        "proto": "both",
        "port": 7780
      },
      {
        "name": "RCON Port",
        "proto": "both",
        "port": 7779
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 7781
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^(?:\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\])?LogGameMode: Display: Match State Changed from WaitingToStart to InProgress$",
    "events": {
      "chat": "^(?:\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\])?TitansOnline: Chat: \\[(?:.+?)\\] (?P\u003cusername\u003e.+?) \\((?:.+?)\\): (?P\u003cmessage\u003e.+)$",
      "join": "^(?:\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\])?AlderonLog: IAlderonCommon:RegisterPlayer\\(\\) Request: {\"player_id\":(?P\u003cuserid\u003e\\d+),\"platform\":\"(?:.+?)\"(?:.*?)}$",
      "leave": "^(?:\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\])?AlderonLog: IAlderonCommon:UnregisterPlayer\\(\\) Request: {\"player_id\":(?P\u003cuserid\u003e.+?),\"platform\":\"(?:.+?)\"(?:.*?)}$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "AlderonGamesCmd Download",
        "url": "https://launcher-cdn.alderongames.com/AlderonGamesCmd-Win64.exe",
        "target_path": "{{$FullInstanceDir}}"
      },
      {
        "kind": "direct",
        "name": "AlderonGamesCmd Download",
        "url": "https://launcher-cdn.alderongames.com/AlderonGamesCmd-Linux-x64",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "PathOfTitans/Saved/Config/WindowsServer/Game.ini",
      "PathOfTitans/Saved/Config/LinuxServer/Game.ini",
      "PathOfTitans/Saved/MOTD.txt",
      "PathOfTitans/Saved/Rules.txt"
    ],
    "wine": false,
    "entrypoint_hint": "PathOfTitans {{ServerMap}}?listen?MaxPlayers={{$MaxUsers}} {{$PlatformArgs}} -log -Port={{$GamePort}} -QueryPort={{$QueryPort}} -RconPort={{$RCONPort}} -RconPassword=\"{{$RemoteAdminPassword}}\" -MultiHome={{$ApplicationIPBinding}} -ServerName={{ServerName}} {{$FormattedArgs}}",
    "provenance": "path-of-titans.kvp"
  },
  {
    "id": "pavlov-vr",
    "name": "Pavlov VR",
    "description": "Pavlov VR Dedicated Server",
    "os": [
      "Linux"
    ],
    "steam": {
      "app_id": "622970",
      "game_app_id": "555160"
    },
    "ports": [
      {
        "name": "Main Game Port",
        "proto": "both",
        "port": 7777
      },
      {
        "name": "Secondary Game Port",
        "proto": "both",
        "port": 8177
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 9100
      }
    ],
    "rcon_adapter": "telnet",
    "admin_method": "TelnetRCON",
    "ready_pattern": "^\\[[\\d.]+-[\\d.]+:\\d+\\]\\[[\\d ]+\\](LogGameState|LogGameMode: Display): Match State Changed from WaitingToStart to InProgress$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d.]+-[\\d.]+:\\d+\\]\\[[\\d ]+\\]PavlovLog: Player (?P\u003cuserid\u003e.+?) Joined, current bot Num = \\d+$",
      "leave": "^\\[[\\d.]+-[\\d.]+:\\d+\\]\\[[\\d ]+\\]LogNet: UChannel::Close: Sending CloseBunch\\. (?:.*?) UniqueId: NULL:(?P\u003cuserid\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "622970"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/pavlov-vrconfigfile.ini",
        "target_path": "{{$FullBaseDir}}Pavlov/Saved/Config/LinuxServer"
      }
    ],
    "config_files": [
      "Pavlov/Saved/Config/LinuxServer/Game.ini",
      "Pavlov/Saved/Config/RconSettings.txt"
    ],
    "art_steam_app_id": "555160",
    "wine": false,
    "entrypoint_hint": "Pavlov -PORT={{$ApplicationPort1}} {{$FormattedArgs}} -stdout -forcelogflush",
    "provenance": "pavlov-vr.kvp"
  },
  {
    "id": "pirates-vikings-knights2",
    "name": "Pirates, Vikings, \u0026 Knights II",
    "description": "Pirates, Vikings, \u0026 Knights II Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "17575",
      "game_app_id": "17570"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "17575"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/pirates-vikings-knights2server.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "pvkii/cfg/server.cfg"
    ],
    "art_steam_app_id": "17570",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game pvkii -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} -tickrate {{tickrate}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "pirates-vikings-knights2.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "pixark",
    "name": "PixARK",
    "description": "PixARK Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "824360",
      "game_app_id": "593600",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 27020
      },
      {
        "name": "Cube Port",
        "proto": "tcp",
        "port": 14999
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^[\\d\\.]+_[\\d\\.]+:( | )(?P\u003cusername\u003e.+?)( | )\\((?:.+?)\\): (?P\u003cmessage\u003e.+)\\n \\n $",
      "join": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) joined this ARK!\\n \\n $",
      "leave": "^[\\d\\.]+_[\\d\\.]+: (?P\u003cusername\u003e.+?) left this ARK!\\n \\n $"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "824360",
        "platform": "windows"
      }
    ],
    "art_steam_app_id": "593600",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{Map}}?listen?DelayRegisterServer=True?bRawSockets=True?Port={{$GamePort}}?QueryPort={{$QueryPort}}?RCONEnabled=True?RCONPort={{$RCONPort}}?SessionName=\"{{SessionName}}\"?MultiHome={{$ApplicationIPBinding}}?{{$FormattedArgs}}?ServerAdminPassword={{$RemoteAdminPassword}}{{CustomOptions}} -Seed={{Seed}} -CULTUREFORCOOKING=en -NoBattlEye -CubePort={{$CubePort}} -cubeworld={{cubeworld}} -nosteamclient -NoHangDetection {{NoTransferFromFiltering}}-ClusterDirOverride=\"{{ClusterDirOverride}}\" -clusterid={{clusterid}} -server {{CustomFlags}} -gameplaylogging -log",
    "provenance": "pixark.kvp"
  },
  {
    "id": "plains-of-pain",
    "name": "Plains of Pain",
    "description": "Plains of Pain Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2227360",
      "game_app_id": "2218970"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27016
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(Set Game State: RUNNING|Server Ready)$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2227360"
      }
    ],
    "config_files": [
      "configs/default.json"
    ],
    "art_steam_app_id": "2218970",
    "wine": false,
    "entrypoint_hint": "-nographics -batchmode -ignorecompilererrors -port {{$ServerPort}} -queryPort {{$QueryPort}} -userdir ./PlainsOfPain -namespace \"main\" -serverName \"{{serverName}}\" {{cc}}{{$FormattedArgs}} -ttr 0 {{$PlatformArgs}}",
    "provenance": "plains-of-pain.kvp"
  },
  {
    "id": "pocketmine-mp",
    "name": "PocketMine-MP",
    "description": "PocketMine-MP Server for Minecraft Bedrock",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server IPv4 Port",
        "proto": "udp",
        "port": 19132
      },
      {
        "name": "Server IPv6 Port",
        "proto": "udp",
        "port": 19133
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d:\\.]+\\] \\[Server thread\\/INFO\\]: (Done \\(\\d+\\.\\d+s\\)! For help, type \"help\" or \"\\?\"|Fertig! \\(\\d+\\.\\d+s\\)! Für Hilfe, tippe \"help\" oder \"\\?\"|Fini \\(\\d+\\.\\d+s\\)! Pour afficher l'aide, tapez \"help\" ou \"\\?\"|完了 \\(\\d+\\.\\d+ 秒\\)! ヘルプを表示するには、「help」または「?」と入力してください|완료\\(\\d+\\.\\d+초\\)! 도움말을 보려면 \"help\" 또는 \"\\?\"를 입력하세요|Pabeigts \\(\\d+\\.\\d+ sekundēs\\)! Priekš palīdzības, ierakstiet \"help\" vai \"\\?\"|Gereed \\(\\d+\\.\\d+\\)! Voor hulp, typ \"help\" of \"\\?\"|Загружено \\(\\d+\\.\\d+ сек\\.\\)! Для справки, введите \"help\" или \"\\?\"|¡Listo \\(\\d+\\.\\d+s\\)! Escribe \"help\" o \"\\?\" para recibir ayuda|Xong \\(\\d+\\.\\d+s\\)! Để được trợ giúp, hãy nhập \"help\" hoặc \"\\?\")$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d:\\.]+\\] \\[Server thread\\/INFO\\]: (?P\u003cusername\u003e.+?)\\s*(joined the game|hat das Spiel betreten|a rejoint la partie|si è unito alla partita|がゲームに参加しました|이(가) 게임에 참여했습니다|pievienojās spēlei|is verbonden met de server|присоединился к игре|se ha conectado|đã tham gia trò chơi)$",
      "leave": "^\\[[\\d:\\.]+\\] \\[Server thread\\/INFO\\]: (?P\u003cusername\u003e.+?)\\s*(left the game|hat das Spiel verlassen|a quitté la partie|ha lasciato la partita|がゲームを退出しました|이(가) 게임을 떠났습니다|pameta spēli|heeft het spel verlaten|вышел из игры|dejó el juego|đã rời trò chơi)$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "PocketMine-MP Installation",
        "repo": "pmmp/PocketMine-MP",
        "asset_regex": "PocketMine-MP.phar",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "server.properties"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} PocketMine-MP.phar {{$FormattedArgs}}",
    "provenance": "pocketmine-mp.kvp"
  },
  {
    "id": "portal-knights",
    "name": "Portal Knights",
    "description": "Portal Knights Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "374040",
      "game_app_id": "374040",
      "platform": "windows"
    },
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*\\'ReadyToServe\\'\\:\\:Execute .*$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "374040",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/portal-knightsserver_config.json",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "server_config.json"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "374040",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -config \"{{$FullBaseDir}}server_config.json\" -log Server.log",
    "provenance": "portal-knights.kvp",
    "notes": [
      "ports.json unparseable: json: cannot unmarshal number into Go struct field ampPort.Protocol of type string"
    ]
  },
  {
    "id": "post-scriptum",
    "name": "Squad 44",
    "description": "Squad 44 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "746200",
      "game_app_id": "736220"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27025
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 25575
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^(LogInit: Display: Starting Game\\.)|(LogOnline: GotoState: NewState: Playing)$",
    "events": {
      "chat": "^\\[Chat.*\\] \\[SteamID\\:(?P\u003cuserid\u003e-?\\d+)\\] (?P\u003cusername\u003e.+?) \\: (?P\u003cmessage\u003e.+)$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "746200"
      }
    ],
    "config_files": [
      "./PostScriptum/ServerConfig/Server.cfg"
    ],
    "art_steam_app_id": "736220",
    "wine": false,
    "entrypoint_hint": "MULTIHOME={{$ApplicationIPBinding}} Port={{$GamePort}} QueryPort={{$QueryPort}} RCONPORT={{$RCONPort}} RCONPASSWORD={{$RemoteAdminPassword}} FIXEDMAXTICKRATE={{MaxTPS}} RANDOM={{MapRandom}} -log -fullcrashdump",
    "provenance": "post-scriptum.kvp"
  },
  {
    "id": "postgresql",
    "name": "PostgreSQL",
    "description": "PostgreSQL Service Instance",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 5432
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(Type \"help\" for help\\.|CPID: \\d+)$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "wine": false,
    "entrypoint_hint": "{{CustomClientOptions}} {{$PlatformArgs}} --username=amp --pset=pager=off {{$FormattedArgs}}",
    "provenance": "postgresql.kvp"
  },
  {
    "id": "pre-fortress2",
    "name": "Pre-Fortress 2",
    "description": "Pre-Fortress 2 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "244310",
      "game_app_id": "243750"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^[\\d\\/]+ - [\\d:]+: Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Source SDK Base 2013 Download",
        "app_id": "244310"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/pre-fortress2server.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "pf2/cfg/server.cfg"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game pf2 -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +log on",
    "provenance": "pre-fortress2.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "project-zomboid",
    "name": "Project Zomboid",
    "description": "Project Zomboid Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Steam Port",
        "proto": "udp",
        "port": 16261
      },
      {
        "name": "Direct Port",
        "proto": "udp",
        "port": 16262
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^LOG\\s+: Network\\s+.*\u003e \\*+ SERVER STARTED \\*+$",
    "events": {
      "chat": "^$",
      "join": "^LOG\\s+: (Network\\s+.*\u003e ConnectionManager: \\[fully-connected\\] (?:.+?) steam-id=(?P\u003cuserid\u003e.+?) (?:.+?) username=\"(?P\u003cusername\u003e.+?)\" (?:.+?)|Multiplayer\\s+.*\u003e connection: guid=(?P\u003cuserid\u003e.+?) \\[fully-connected\\] \"\")$",
      "leave": "^LOG\\s+: (Network\\s+.*\u003e Disconnected player \"(?P\u003cusername\u003e.+?)\" (?P\u003cuserid\u003e.+?)|Multiplayer\\s+.*\u003e connection: guid=(?P\u003cuserid\u003e.+?) \\[disconnect\\] \"receive-disconnect\")$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "380870",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "380870",
        "conditional": true
      }
    ],
    "config_files": [
      "Zomboid/Server/{{servername}}.ini"
    ],
    "art_steam_app_id": "108600",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{JavaClass}} -port {{$ApplicationPort1}} -udpport {{$ApplicationPort2}} {{CustomServerArgs}} {{$FormattedArgs}}",
    "ported": true,
    "module_id": "project-zomboid",
    "provenance": "project-zomboid.kvp"
  },
  {
    "id": "project5-sightseer",
    "name": "Project 5: Sightseer",
    "description": "Project 5: Sightseer Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "655780",
      "game_app_id": "655780"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "tcp",
        "port": 5190
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\/]+ [\\d:]+\\] Game server started on port \\d+ using protocol version \\d+$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\/]+ [\\d:]+\\] (?P\u003cusername\u003e.+?) \\((?:[\\d\\.:]+?), (?:.+?), (?P\u003cuserid\u003e.+?)\\): Passed a ban check: (?:.+)$",
      "leave": "^\\[[\\d\\/]+ [\\d:]+\\] (?P\u003cusername\u003e.+?) \\((?:[\\d\\.:]+?)\\): Disconnected \\[\\d+\\]$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "655780"
      }
    ],
    "steam_login_required": true,
    "art_steam_app_id": "655780",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -port {{$GamePort}} -http -localPath {{$FormattedArgs}} {{public}}",
    "provenance": "project5-sightseer.kvp"
  },
  {
    "id": "puck",
    "name": "Puck",
    "description": "Puck Dedicated Server",
    "os": [
      "Linux",
      "Windows"
    ],
    "steam": {
      "app_id": "3481440",
      "game_app_id": "2994020"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 30609
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*\\[INFO\\] \\[SceneManager\\] Scene load event completed on server$",
    "events": {
      "chat": "^$",
      "join": "^\\[Player]\\s+Received\\s+subscription\\s+from\\s+(?P\u003cusername\u003e\\w+)\\s*\\((?P\u003csessionid\u003e\\d+)\\).*$",
      "leave": "^\\[ServerManagerController]\\s+Client\\s+disconnected\\s+\\((?P\u003csessionid\u003e\\d+)\\).*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "3481440"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "direct",
        "name": "Server_config.json Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/puckserver_config.json",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "server_config.json"
    ],
    "art_steam_app_id": "2994020",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "puck.kvp"
  },
  {
    "id": "pumpkin",
    "name": "Pumpkin",
    "description": "The world's fastest Minecraft server. Pumpkin is in early development. Built with Rust for maximum performance.",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Java Edition Port",
        "proto": "both",
        "port": 25565
      },
      {
        "name": "Bedrock Edition Port",
        "proto": "udp",
        "port": 19132
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 25575
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*?Server is now running\\..*$",
    "events": {
      "chat": "^.*?\u003cchat\u003e\\s+(?P\u003cusername\u003e[a-zA-Z0-9_]+):\\s+(?P\u003cmessage\u003e.+)$",
      "join": "^.*?\\s+(?P\u003cusername\u003e[a-zA-Z0-9_]+) joined the game$",
      "leave": "^.*?\\s+(?P\u003cusername\u003e[a-zA-Z0-9_]+) left the game$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Download Server",
        "url": "https://github.com/Pumpkin-MC/Pumpkin/releases/download/nightly/pumpkin-X64-Linux",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Download Server",
        "url": "https://github.com/Pumpkin-MC/Pumpkin/releases/download/nightly/pumpkin-ARM64-Linux",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Download Server",
        "url": "https://github.com/Pumpkin-MC/Pumpkin/releases/download/nightly/pumpkin-X64-Windows.exe",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Download Config File",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/pumpkin.toml",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "pumpkin.toml"
    ],
    "steam_login_required": true,
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "pumpkin.kvp"
  },
  {
    "id": "python-app-runner",
    "name": "Python App Runner",
    "description": "Python App Runner",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Main Port",
        "proto": "both",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "App Download",
        "repo": "{{DownloadSource}}",
        "asset_regex": "{{DownloadFilename}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "App Download",
        "url": "{{DownloadSource}}",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "wine": false,
    "entrypoint_hint": "-u {{AppRunMode}} {{CommandLineArgs}}",
    "provenance": "python-app-runner.kvp"
  },
  {
    "id": "quake-live",
    "name": "Quake Live",
    "description": "Quake Live Dedicated Server",
    "os": [
      "Linux"
    ],
    "steam": {
      "app_id": "349090",
      "game_app_id": "282440"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 27960
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 28960
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^--- Common Initialization Complete ---$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "349090"
      }
    ],
    "config_files": [
      "baseq3/server.cfg"
    ],
    "art_steam_app_id": "282440",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} +set net_strict 1 +set fs_homepath \"{{$FullBaseDir}}\" +set sv_master {{sv_master}} +set net_port {{$ServerPort}} +set zmq_stats_port {{$ServerPort}} +set zmq_rcon_port {{$RCONPort}} +set net_ip {{$ApplicationIPBinding}} +set zmq_stats_ip {{$ApplicationIPBinding}} +set zmq_rcon_ip {{$ApplicationIPBinding}} +set zmq_stats_enable {{zmq_stats_enable}} +set zmq_stats_password \"{{zmq_stats_password}}\" +set zmq_rcon_enable {{zmq_rcon_enable}} +set zmq_rcon_password \"{{zmq_rcon_password}}\" {{$FormattedArgs}}",
    "provenance": "quake-live.kvp"
  },
  {
    "id": "quake3-arena",
    "name": "Quake III Arena",
    "description": "Quake III Arena Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 27960
      }
    ],
    "rcon_adapter": "quake_rcon",
    "admin_method": "QuakeRCON",
    "ready_pattern": "^AAS initialized\\.$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://files.ioquake3.org/Windows.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://files.ioquake3.org/Linux.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Game Download",
        "app_id": "2200",
        "platform": "windows",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Patch Files Download",
        "url": "https://files.ioquake3.org/quake3-latest-pk3s.zip",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/quake3-arenaserver.cfg",
        "target_path": "{{$FullBaseDir}}baseq3"
      }
    ],
    "config_files": [
      "{{mod}}/base.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "2200",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} +set fs_homepath \"{{$FullBaseDir}}\" +set net_port {{$ServerPort}} +set net_ip {{$ApplicationIPBinding}} +set fs_game {{mod}} +{{map_type}} {{map_name}} +set rconpassword \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} +exec base.cfg",
    "provenance": "quake3-arena.kvp"
  },
  {
    "id": "ragemp",
    "name": "RAGE:MP - Grand Theft Auto V Server",
    "description": "RAGE:MP Dedicated Server for GTA V",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 22005
      },
      {
        "name": "HTTP Port",
        "proto": "tcp",
        "port": 22006
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[DONE\\] The server is ready to accept connections\\.$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ragempconf.json",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "conf.json"
    ],
    "art_steam_app_id": "271590",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "ragemp.kvp"
  },
  {
    "id": "redm",
    "name": "RedM - Red Dead Redemption 2 Server",
    "description": "RedM Multiplayer Mod for Red Dead Redemption 2",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 30120
      }
    ],
    "rcon_adapter": "quake_rcon",
    "admin_method": "QuakeRCON",
    "ready_pattern": "^\\[ citizen-server-impl\\] Authenticated with cfx\\.re Nucleus: .*$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "{{SpecificBuildVersionURL}}",
        "target_path": "{{$FullBaseDir}}server",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "{{SpecificBuildVersionURL}}",
        "target_path": "{{$FullBaseDir}}server",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/redmserver.cfg",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "server-data/server.cfg"
    ],
    "art_steam_app_id": "1174180",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{CustomArgs}} +set gamename rdr3 +set rcon_password {{$RemoteAdminPassword}} +set serverProfile default {{$FormattedArgs}} +exec server.cfg",
    "provenance": "redm.kvp"
  },
  {
    "id": "reign-of-kings",
    "name": "Reign Of Kings",
    "description": "Reign Of Kings Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "381690",
      "game_app_id": "344760",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game and Ping Port",
        "proto": "both",
        "port": 7350
      },
      {
        "name": "Auth and RCON Port",
        "proto": "both",
        "port": 27015
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Initialize engine version:.*$",
    "events": {
      "chat": "^$",
      "join": "^Authentication verified for (?P\u003cusername\u003e.+?) \\((?P\u003cuserid\u003e\\d+?)\\)\\.$",
      "leave": "^(?P\u003cusername\u003e.+?) has disconnected\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "381690",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "ServerSettings.cfg File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/reign-of-kingsserversettings.cfg",
        "target_path": "{{$FullBaseDir}}Configuration"
      },
      {
        "kind": "github",
        "name": "uMod/Oxide Download",
        "repo": "OxideMod/Oxide.ReignOfKings",
        "asset_regex": "Oxide.ReignOfKings.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "config_files": [
      "Configuration/ServerSettings.cfg",
      "Configuration/ConsoleSettings.cfg"
    ],
    "art_steam_app_id": "344760",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -batchmode -nographics -silent-crashes {{$FormattedArgs}}",
    "provenance": "reign-of-kings.kvp"
  },
  {
    "id": "renown",
    "name": "Renown",
    "description": "Renown Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1512690",
      "game_app_id": "1488310"
    },
    "ports": [
      {
        "name": "Main Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "Beacon Port",
        "proto": "udp",
        "port": 9999
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 25575
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogGameState: Match State Changed from WaitingToStart to InProgress$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogBlueprintUserMessages:.*[\\d-]+T[\\d\\.:]+Z\\* (?P\u003cusername\u003e.+?) has joined the server\\. (?P\u003cuserid\u003e\\d+?)$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogBlueprintUserMessages:.*\\*Chat\\*System \\d+:\\d+(?:am|pm) .* \\d+ (?P\u003cusername\u003e.+?) has left the server\\.- \\((?P\u003cuserid\u003e\\d+?)\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1512690"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "direct",
        "name": "Game.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/renowngame.ini",
        "target_path": "{{$FullBaseDir}}Renown_Combat/Saved/Config/LinuxServer"
      },
      {
        "kind": "direct",
        "name": "Game.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/renowngame.ini",
        "target_path": "{{$FullBaseDir}}Renown_Combat/Saved/Config/WindowsServer"
      }
    ],
    "config_files": [
      "Renown_Combat/Saved/Config/LinuxServer/Game.ini",
      "Renown_Combat/Saved/Config/WindowsServer/Game.ini"
    ],
    "art_steam_app_id": "1488310",
    "wine": false,
    "entrypoint_hint": "Renown_Combat -Port={{$GamePort}} -QueryPort={{$QueryPort}} -BeaconPort={{$BeaconPort}} -RCONPort={{$RCONPort}} -RCONPassword=\"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} {{$PlatformArgs}} -ini:Engine:[EpicOnlineServices]:DedicatedServerClientId=xyza78917DzEE5Ey0isciVt66QDm5IzM -ini:Engine:[EpicOnlineServices]:DedicatedServerClientSecret=m/mrnywFCdeA1mW3ZSvv3qcVlQlfwi1a+7Z63Q44EGU",
    "provenance": "renown.kvp"
  },
  {
    "id": "rimworld-together",
    "name": "Rimworld Together - RimWorld Server",
    "description": "Rimworld Together - a free multiplayer mod for RimWorld",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 25555
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d:]+\\] \\| Server launched$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d:]+\\] \\| \\[Chat - SERVER\\] \u003e (?P\u003cuserid\u003e.+?) has joined the server!$",
      "leave": "^\\[[\\d:]+\\] \\| \\[Chat - SERVER\\] \u003e (?P\u003cuserid\u003e.+?) has left the server!$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "Rimworld Together Download",
        "repo": "RimworldTogether/Rimworld-Together",
        "asset_regex": "win-x64.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "github",
        "name": "Rimworld Together Download",
        "repo": "RimworldTogether/Rimworld-Together",
        "asset_regex": "linux-x64.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "github",
        "name": "Rimworld Together Download",
        "repo": "RimworldTogether/Rimworld-Together",
        "asset_regex": "linux-arm64.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "ServerConfig.json File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/rimworld-togetherserverconfig.json",
        "target_path": "{{$FullBaseDir}}Configs"
      }
    ],
    "config_files": [
      "Configs/ServerConfig.json",
      "Configs/WhitelistConfig.json",
      "Configs/ServerBrowserConfig.json",
      "Configs/ChatConfig.json",
      "Configs/BackupConfig.json",
      "Configs/ActionConfig.json",
      "Configs/RoadConfig.json"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "294100",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "rimworld-together.kvp"
  },
  {
    "id": "rising-storm2-vietnam",
    "name": "Rising Storm 2: Vietnam",
    "description": "Rising Storm 2: Vietnam Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "418480",
      "game_app_id": "418460",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 7787
      },
      {
        "name": "Web Admin Port",
        "proto": "tcp",
        "port": 8190
      },
      {
        "name": "Query Port",
        "proto": "both",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server SteamCMD Download",
        "app_id": "418480",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Game.ini Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/rising-storm2-vietnamgame.ini",
        "target_path": "{{$FullBaseDir}}ROGame/Config"
      }
    ],
    "config_files": [
      "ROGame/Config/ROGame.ini",
      "ROGame/Config/ROWeb.ini"
    ],
    "art_steam_app_id": "418460",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{ServerMap}}?AdminName={{AdminName}}?AdminPassword={{AdminPassword}}?MaxPlayers={{$MaxUsers}}?Difficulty={{Difficulty}}?{{$FormattedArgs}}{{CustomServerOptions}} -Port={{$GamePort}} -QueryPort={{$QueryPort}} -WebAdminPort={{$WebAdminPort}} -MultiHome={{$ApplicationIPBinding}} {{CustomServerSwitches}} -stdout -FullStdOutLogOutput",
    "provenance": "rising-storm2-vietnam.kvp"
  },
  {
    "id": "rising-world",
    "name": "Rising World (Unity Version)",
    "description": "Rising World Unity Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "339010",
      "game_app_id": "324080"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 4255
      },
      {
        "name": "Query Port",
        "proto": "tcp",
        "port": 4254
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 4253
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Dedicated server is ready! \\(\\d+\\.\\d+ s\\)$",
    "events": {
      "chat": "^$",
      "join": "^\\[?[\\d:]+\\]? - PLAYER CONNECT: (?P\u003cusername\u003e.+?) \\(ID: (?P\u003csessionid\u003e\\d+?)\\)$",
      "leave": "^\\[[\\d:]+\\] :+SERVER: CLIENT (?P\u003csessionid\u003e\\d+?) DISCONNECTED$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "339010"
      }
    ],
    "config_files": [
      "server.properties"
    ],
    "art_steam_app_id": "324080",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} +Server_Port={{$ServerPort}} +RCON_Port={{$RCONPort}} +Server_IP={{$ApplicationIPBinding}} {{$FormattedArgs}}",
    "provenance": "rising-world.kvp"
  },
  {
    "id": "risk-of-rain-2",
    "name": "Risk of Rain 2",
    "description": "Risk of Rain 2 Dedicated Server",
    "steam": {
      "app_id": "632360",
      "game_app_id": "632360",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "Steam Query Port",
        "proto": "both",
        "port": 27016
      },
      {
        "name": "Steam Port",
        "proto": "both",
        "port": 27017
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*Press Enter to chat.*$",
    "events": {
      "chat": "^\\[\\d\\d:\\d\\d:\\d\\d\\] \\[CHAT\\] \u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^.*NetworkManagerSystem\\.AddPlayerInternal\\(conn=hostId: \\d+ connectionId: (?P\u003csessionid\u003e\\d+) .*$",
      "leave": "^.*Log: connection \\{(?P\u003csessionid\u003e\\d+)\\} has been disconnected by timeout.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "632360",
        "platform": "windows"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1007",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Server Config Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/risk-of-rain-2server.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "Risk of Rain 2_Data/Config/server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "632360",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}}",
    "provenance": "risk-of-rain-2.kvp"
  },
  {
    "id": "romestead",
    "name": "Romestead",
    "description": "Romestead Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "4763510",
      "game_app_id": "1805320"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 8050
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Server ready\\.\\.\\.$",
    "events": {
      "chat": "^\\[CHAT\\]\\[[\\d:\\.]+\\] (?P\u003cusername\u003e.+?): (?P\u003cmessage\u003e.*?)$",
      "join": "^Character '(?P\u003cusername\u003e.+?)' \\(Peer \\d+ - (?P\u003cuserid\u003e.+?)\\) logged in with external id '.*', assigned to player id \\d+$",
      "leave": "^Peer (?P\u003cuserid\u003e.+?) disconnected - .*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "4763510"
      },
      {
        "kind": "direct",
        "name": "Config.json Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/romesteadserverconfig.json",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "config.json"
    ],
    "art_steam_app_id": "1805320",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "romestead.kvp"
  },
  {
    "id": "runescape-dragonwilds",
    "name": "RuneScape: Dragonwilds",
    "description": "RuneScape: Dragonwilds Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "4019830",
      "game_app_id": "1374490"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogDomMatcherSession: UPDATE SESSION - complete$",
    "events": {
      "chat": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogChat: (?P\u003cusername\u003e.+?): (?P\u003cmessage\u003e.*)$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogDomMatcherSession:\\s+Player\\s+ADDED\\s+to\\s+session\\s+\\[(?P\u003csessionid\u003e.+?)\\]-\\[(?P\u003cusername\u003e.+?)\\]$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogDomMatcherSession:\\s+Player\\s+Removed\\s+from\\s+session\\s+\\[(?P\u003csessionid\u003e.+?)\\]-\\[(?P\u003cusername\u003e.+?)\\]$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "4019830"
      }
    ],
    "config_files": [
      "RSDragonwilds/Saved/Config/LinuxServer/DedicatedServer.ini",
      "RSDragonwilds/Saved/Config/WindowsServer/DedicatedServer.ini"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} RSDragonwilds -Port={{$GamePort}} {{$FormattedArgs}} -stdout -FullStdOutLogOutput",
    "ported": true,
    "module_id": "dragonwilds",
    "provenance": "runescape-dragonwilds.kvp"
  },
  {
    "id": "sa-mp",
    "name": "San Andreas Multiplayer",
    "description": "San Andreas Multiplayer Mod for Grand Theft Auto: San Andreas",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Number of vehicle models: \\d+$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://files.samp-sc.com/downloader.php?filename=samp037_svr_R2-1-1_win32.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://files.samp-sc.com/downloader.php?filename=samp037svr_R2-1.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/sa-mpserver.cfg",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "server.cfg"
    ],
    "art_steam_app_id": "12120",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "sa-mp.kvp"
  },
  {
    "id": "sapiens",
    "name": "Sapiens",
    "description": "Sapiens Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2886350",
      "game_app_id": "1060230"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 16161
      },
      {
        "name": "Steam Port",
        "proto": "udp",
        "port": 16162
      },
      {
        "name": "HTTP Port",
        "proto": "tcp",
        "port": 16168
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(?:INFO: )?Server is running and ready for connections$",
    "events": {
      "chat": "^$",
      "join": "^(?:INFO: )?\\d+\\.\\d+:client connected: (?P\u003cusername\u003e.+) clientID:(?P\u003csessionid\u003e.+?) tribeID:.*$",
      "leave": "^(?:INFO: )?\\d+\\.\\d+:client disconnected: (?P\u003csessionid\u003e.+?)\\s*:\\s*(?P\u003cusername\u003e.+)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "2886350"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      }
    ],
    "art_steam_app_id": "1060230",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{ProvideLogs}}{{Advertise}}--server-id \"AMPServer\" {{StartupMode}} --port \"{{$ServerPort}}\" --http-port \"{{$HTTPPort}}\" --savedir \".\" {{$FormattedArgs}}",
    "provenance": "sapiens.kvp"
  },
  {
    "id": "satisfactory",
    "name": "Satisfactory",
    "description": "Satisfactory Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1690800",
      "game_app_id": "526870"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 7777
      },
      {
        "name": "Reliable Port",
        "proto": "tcp",
        "port": 8888
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^LogInit: Display: Game Engine Initialized\\.$",
    "events": {
      "chat": "^$",
      "join": "^LogNet: Login request: \\?ClientIdentity=.+\\?EntryTicket=.+?EncryptionToken=.+\\?Name=(?P\u003cusername\u003e.+?) userId: .+\\(ForeignId=\\[Type=.+ Handle=.+ RepData=\\[(?P\u003cuserid\u003e.+)\\]\\) platform: .+$",
      "leave": "^LogNet: UChannel\\:\\:Close\\: Sending CloseBunch\\. ChIndex == .+\\. Name: \\[UChannel\\] ChIndex: .+\\, Closing: .+ \\[UNetConnection\\] RemoteAddr: .+\\, Name: .+, Driver: .+\\, IsServer: YES\\, PC: .+\\, Owner: .+\\, UniqueId: .+ \\(ForeignId=\\[Type=.+ Handle=.+ RepData=\\[(?P\u003cuserid\u003e.+)\\]\\)"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1690800"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      }
    ],
    "art_steam_app_id": "526870",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} FactoryGame -Port={{$ApplicationPort1}} -ReliablePort={{$ApplicationPort2}} -MultiHome={{$ApplicationIPBinding}} -ini:Engine:[HTTPServer.Listeners]:DefaultBindAddress={{$ApplicationIPBinding}}{{DisableSeasonalEvents}} {{$FormattedArgs}} {{CustomArgs}} -stdout -FullStdOutLogOutput -unattended",
    "ported": true,
    "module_id": "satisfactory",
    "provenance": "satisfactory.kvp"
  },
  {
    "id": "scp-secret-laboratory",
    "name": "SCP: Secret Laboratory",
    "description": "SCP: Secret Laboratory Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "996560",
      "game_app_id": "700330"
    },
    "ports": [
      {
        "name": "Game and Query Port",
        "proto": "both",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d-]+ [\\d:.]+ (\\+|-)[\\d:]+\\] Waiting for players\\.\\.\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d-]+ [\\d:.]+ (\\+|-)[\\d:]+\\] Nickname of (?P\u003cuserid\u003e.+?)@steam is now (?P\u003cusername\u003e.+?)\\.$",
      "leave": "^\\[[\\d-]+ [\\d:.]+ (\\+|-)[\\d:]+\\] (?P\u003cusername\u003e.+?) \\((?P\u003cuserid\u003e.+?)@steam\\) disconnected from IP address (?P\u003cendpoint\u003e.+?)\\. Last class: (?:.*?)\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "996560"
      },
      {
        "kind": "github",
        "name": "Download EXILED",
        "repo": "ExMod-Team/EXILED",
        "asset_regex": "Exiled.tar.gz",
        "target_path": "{{$FullBaseDir}}AppData",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "EXILED Loader Config.yml Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/scp-secret-laboratoryexiledconfig.yml",
        "target_path": "{{$FullBaseDir}}AppData/SCP Secret Laboratory/LabAPI/configs/{{$GamePort}}/Exiled Loader",
        "conditional": true
      }
    ],
    "config_files": [
      "AppData/config/{{$GamePort}}/config_gameplay.txt",
      "AppData/config/{{$GamePort}}/config_remoteadmin.txt",
      "AppData/SCP Secret Laboratory/LabAPI/configs/{{$GamePort}}/Exiled Loader/config.yml",
      "AppData/SCP Secret Laboratory/LabAPI/configs/{{$GamePort}}/Exiled Loader/properties.yml"
    ],
    "art_steam_app_id": "700330",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$GamePort}} --useDefault --skipHomeCheck --noSetCursor {{CustomLocalAdminArgs}} -- -silent-crashes {{CustomServerArgs}} {{$FormattedArgs}}",
    "provenance": "scp-secret-laboratory.kvp"
  },
  {
    "id": "scum",
    "name": "SCUM",
    "description": "SCUM Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "3792580",
      "game_app_id": "513710",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Client Port",
        "proto": "tcp",
        "port": 7779
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "admin_method": "TailLogFile",
    "ready_pattern": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogSCUM: Global Stats:.*$",
    "events": {
      "chat": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]$",
      "join": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogSCUM: '(?P\u003cendpoint\u003e.*?) (?P\u003cuserid\u003e\\d+?):(?P\u003cusername\u003e.*?)\\(\\d+\\)' logged in at:.*$",
      "leave": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogSCUM: Warning: Prisoner logging out: (?P\u003cusername\u003e.*?) \\((?P\u003cuserid\u003e\\d+?)\\)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SCUM Download",
        "app_id": "3792580",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "ServerSettings.ini File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/scumserversettings.ini",
        "target_path": "{{$FullBaseDir}}SCUM/Saved/Config/WindowsServer"
      }
    ],
    "config_files": [
      "SCUM/Saved/Config/WindowsServer/ServerSettings.ini"
    ],
    "art_steam_app_id": "513710",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} SCUM -Port={{$ServerPort}} -QueryPort={{$QueryPort}} -MaxPlayers={{$MaxUsers}} {{nobattleye}}{{$FormattedArgs}} {{CustomArgs}}",
    "provenance": "scum.kvp"
  },
  {
    "id": "seven-days-to-die",
    "name": "Seven Days To Die",
    "description": "Seven Days to Die Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "294420",
      "game_app_id": "251570"
    },
    "ports": [
      {
        "name": "Server and Steam Port",
        "proto": "both",
        "port": 26900
      },
      {
        "name": "Server Port +1",
        "proto": "udp",
        "port": 26901
      },
      {
        "name": "Server Port +2",
        "proto": "udp",
        "port": 26902
      },
      {
        "name": "Server Port +3",
        "proto": "udp",
        "port": 26903
      },
      {
        "name": "Control Panel Port",
        "proto": "tcp",
        "port": 26904
      },
      {
        "name": "Telnet Port",
        "proto": "tcp",
        "port": 26905
      },
      {
        "name": "Allocs Mod Port",
        "proto": "tcp",
        "port": 26906
      }
    ],
    "rcon_adapter": "telnet",
    "admin_method": "TelnetRCON",
    "ready_pattern": "^.*Logon successful.$|^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2} [\\d.]+ INF StartGame done$",
    "events": {
      "chat": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2} [\\d.]+ INF Chat \\(from '(?P\u003cuserid\u003e-?.*)', entity id '.*', to '.*'\\): .*'(?P\u003cusername\u003e.+?)': (?P\u003cmessage\u003e.+)$",
      "join": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2} [\\d.]+ INF PlayerSpawnedInWorld \\(reason: JoinMultiplayer.*OwnerID='(?P\u003cuserid\u003e-?.*)'.*PlayerName='(?P\u003cusername\u003e.+?)'.*$|^.*INF PlayerSpawnedInWorld \\(reason: EnterMultiplayer.*OwnerID='(?P\u003cuserid\u003e-?.*)'.*PlayerName='(?P\u003cusername\u003e.+?)'.*$",
      "leave": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2} [\\d.]+ INF Player (?P\u003cusername\u003e.+?) disconnected after.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "294420"
      },
      {
        "kind": "direct",
        "name": "Download Undead Legacy Stable",
        "url": "https://ul.subquake.com/dl?v=stable",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Download Undead Legacy Experimental",
        "url": "https://ul.subquake.com/dl?v=exp",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Download Darkness Falls",
        "url": "https://gitlab.com/KhaineGB/darkness-falls-a20/-/archive/main/darkness-falls-a20-main.zip",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Download Darkness Falls",
        "url": "https://dev.azure.com/KhaineUK/292933d3-b55a-46b5-9fbc-f4e138ad47a4/_apis/git/repositories/0571597f-cf8c-42cd-8e35-7e799218cfe7/items?path=/\u0026versionDescriptor%5BversionOptions%5D=0\u0026versionDescriptor%5BversionType%5D=0\u0026versionDescriptor%5Bversion%5D=master\u0026resolveLfs=true\u0026%24format=zip\u0026api-version=5.0\u0026download=true",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Download Darkness Falls",
        "url": "https://dev.azure.com/KhaineUK/f8438d9f-d741-420b-9429-f0838ed77e7f/_apis/git/repositories/80d717da-eb1e-4211-b0c2-eae2d478e749/items?path=/\u0026versionDescriptor%5BversionOptions%5D=0\u0026versionDescriptor%5BversionType%5D=0\u0026versionDescriptor%5Bversion%5D=main\u0026resolveLfs=true\u0026%24format=zip\u0026api-version=5.0\u0026download=true",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      }
    ],
    "config_files": [
      "serverconfig.xml"
    ],
    "art_steam_app_id": "251570",
    "wine": false,
    "entrypoint_hint": "-logFile - -quit -batchmode -nographics -dedicated -configfile=serverconfig.xml -UserDataFolder=User {{ModMode}}{{$FormattedArgs}}",
    "ported": true,
    "module_id": "7dtd",
    "provenance": "seven-days-to-die.kvp"
  },
  {
    "id": "sinusbot",
    "name": "SinusBot",
    "description": "SinusBot - TeamSpeak 3/6 and Discord music bot",
    "os": [
      "Linux"
    ],
    "ports": [
      {
        "name": "Listen Port",
        "proto": "tcp",
        "port": 9087
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d\\/]+ [\\d:]+ \\[GENERAL\\/!+\\] NOTICE You may now configure and launch the bots from the webinterface.*$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Download SinusBot",
        "url": "https://michael.frie.se/sinusbot-1.1f-amd64.tar.bz2"
      },
      {
        "kind": "direct",
        "name": "Download Text-To-Speech",
        "url": "https://chromium.googlesource.com/chromiumos/platform/assets/+archive/master/speech_synthesis/patts.tar.gz",
        "target_path": "{{$FullBaseDir}}tts/download"
      },
      {
        "kind": "direct",
        "name": "Download yt-dlp",
        "url": "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp",
        "target_path": "{{$FullBaseDir}}yt-dlp"
      },
      {
        "kind": "direct",
        "name": "Config.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/sinusbotconfig.ini",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "config.ini"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "sinusbot.kvp"
  },
  {
    "id": "skyrim-together-reborn",
    "name": "Skyrim Together Reborn",
    "description": "Skyrim Together Reborn Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 10578
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\u003e Server started, type \\/help for a list of commands\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d:]+\\] \\[info\\] New player '(?P\u003cusername\u003e.+?)' \\[(?P\u003csessionid\u003e.+?)\\] connected.*$",
      "leave": "^\\[[\\d:]+\\] \\[info\\] Connection ended (?P\u003csessionid\u003e.+?) - '(?P\u003cusername\u003e.+?)' disconnected$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "{{DownloadURL}}",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "SkyrimTogetherReborn/config/STServer.ini"
    ],
    "art_steam_app_id": "489830",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "skyrim-together-reborn.kvp"
  },
  {
    "id": "smalland",
    "name": "Smalland: Survive the Wilds",
    "description": "Smalland: Survive the Wilds Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "808040",
      "game_app_id": "768200"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogLoad: Took \\d+.\\d+ seconds to LoadMap\\(\\/Game\\/Maps\\/WorldGame\\/WorldGame_Smalland\\)$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "808040"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      }
    ],
    "art_steam_app_id": "768200",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} SMALLAND /Game/Maps/WorldGame/WorldGame_Smalland{{FRIENDLYFIRE}}{{PEACEFULMODE}}{{KEEPINVENTORY}}{{NODETERIORATION}}{{PRIVATE}}{{TAMEDCREATURESIMMORTAL}}{{CROSSPLAY}}?{{$FormattedArgs}}{{CustomOptions}}?SESSIONPLATFORM=pc -ini:Engine:[EpicOnlineServices]:DeploymentId=50f2b148496e4cbbbdeefbecc2ccd6a3 -ini:Engine:[EpicOnlineServices]:DedicatedServerClientId=xyza78918KT08TkA6emolUay8yhvAAy2 -ini:Engine:[EpicOnlineServices]:DedicatedServerClientSecret=aN2GtVw7aHb6hx66HwohNM+qktFaO3vtrLSbGdTzZWk -Port={{$ServerPort}} -NOSTEAM -stdout -FullStdOutLogOutput",
    "provenance": "smalland.kvp"
  },
  {
    "id": "soldat",
    "name": "Soldat",
    "description": "Soldat Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "638500",
      "game_app_id": "638490"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 23073
      },
      {
        "name": "Files Port",
        "proto": "tcp",
        "port": 23083
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\s*\\[\\*\\] Done$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "638500"
      }
    ],
    "config_files": [
      "soldat.ini"
    ],
    "art_steam_app_id": "638490",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -p {{$ServerPort}} -b \"{{$ApplicationIPBinding}}\" -l {{$MaxUsers}} -k \"{{Game_Password}}\" -c soldat.ini {{$FormattedArgs}}",
    "provenance": "soldat.kvp"
  },
  {
    "id": "sons-of-the-forest",
    "name": "Sons Of The Forest",
    "description": "Sons Of The Forest Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2465200",
      "game_app_id": "1326470",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 8766
      },
      {
        "name": "Steam Query Port",
        "proto": "udp",
        "port": 27016
      },
      {
        "name": "Blob Sync Port",
        "proto": "udp",
        "port": 9700
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(?:#DSL )?Dedicated server loaded\\.|(?:#DSE )?\\[Self-Tests\\] Please restart the server\\.$",
    "events": {
      "chat": "^$",
      "join": "^(?:#DSL )?Steam auth successful for client \\d+ with steam id (?P\u003cuserid\u003e.+?)[\\.,] username (?P\u003cusername\u003e.+?)$",
      "leave": "^(?:#DSL )?Unregistering client \\d+ with steam id (?P\u003cuserid\u003e.+?)[\\.,] username (?P\u003cusername\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2465200",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Base Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/sons-of-the-forestdedicatedserver.cfg",
        "target_path": "{{$FullBaseDir}}saves"
      }
    ],
    "config_files": [
      "saves/dedicatedserver.cfg"
    ],
    "art_steam_app_id": "1326470",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -dedicatedserver.IpAddress \"{{$ApplicationIPBinding}}\" -dedicatedserver.GamePort \"{{$GamePort}}\" -dedicatedserver.QueryPort \"{{$SteamQueryPort}}\" -dedicatedserver.BlobSyncPort \"{{$BlobSyncPort}}\" -userdatapath \"{{$FullBaseDir}}saves\" {{$FormattedArgs}}",
    "ported": true,
    "module_id": "sons-of-the-forest",
    "provenance": "sons-of-the-forest.kvp"
  },
  {
    "id": "soulmask",
    "name": "Soulmask",
    "description": "Soulmask Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "3017310",
      "game_app_id": "2646460"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 8777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "Telnet Port",
        "proto": "tcp",
        "port": 18888
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 19000
      },
      {
        "name": "Cluster Broadcast Port",
        "proto": "tcp",
        "port": 20000
      }
    ],
    "rcon_adapter": "telnet",
    "admin_method": "TelnetRCON",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogOnlineGame: Display: OnCreateSessionComplete GameSession bSuccess: 1$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]logStoreGamemode: player ready\\. Addr:(?P\u003cendpoint\u003e.*?), Netuid:(?P\u003cuserid\u003e\\d+?), Name:(?P\u003cusername\u003e.+)$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]logStoreGamemode: Display: player leave world\\. (?P\u003cuserid\u003e\\d+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "3017310"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "3017300"
      }
    ],
    "art_steam_app_id": "2646460",
    "wine": false,
    "entrypoint_hint": "WS {{Map}}{{CustomGameMode}} -server -SteamServerName=\"{{ServerName}}\" -Port={{$ServerPort}} -QueryPort={{$QueryPort}} -EchoPort={{$EchoPort}} -RconPort={{$RCONPort}} -RconAddr={{$ApplicationIPBinding}} -UTF8Output -MultiHome={{$ApplicationIPBinding}} -forcepassthrough {{PvEPvPMode}}{{initbackup}}{{$FormattedArgs}} -mod=\\\"{{mod}}\\\" {{ClusterMode}}{{CustomParameters}} {{$PlatformArgs}}",
    "ported": true,
    "module_id": "soulmask",
    "provenance": "soulmask.kvp"
  },
  {
    "id": "space-engineers-generic",
    "name": "Space Engineers",
    "description": "Space Engineers Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "298740",
      "game_app_id": "244850",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 27016
      },
      {
        "name": "Steam Port",
        "proto": "udp",
        "port": 8766
      },
      {
        "name": "Remote API Port",
        "proto": "both",
        "port": 8777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\d+\\-\\d+\\-\\d+ \\d+\\:\\d+\\:\\d+.\\d+\\: Game ready.*$",
    "events": {
      "chat": "^\\[\\d\\d:\\d\\d:\\d\\d\\] \\[CHAT\\] \u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^\\d+\\-\\d+\\-\\d+ \\d+\\:\\d+\\:\\d+.\\d+\\: World request received: (?P\u003cusername\u003e.+?)$",
      "leave": "^\\d+\\-\\d+\\-\\d+ \\d+\\:\\d+\\:\\d+.\\d+\\: User left (?P\u003cusername\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "298740",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Base Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/space-engineers-dedicated.cfg",
        "target_path": "{{$FullBaseDir}}servers"
      },
      {
        "kind": "direct",
        "name": "Winescript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/space-engineers-genericwinescript.sh",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "servers/SpaceEngineers-Dedicated.cfg",
      "servers/Saves/{{WorldName}}/Sandbox_config.sbc"
    ],
    "art_steam_app_id": "244850",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -noconsole -path \"{{$FullBaseDir}}servers\" {{$FormattedArgs}}",
    "provenance": "space-engineers-generic.kvp"
  },
  {
    "id": "space-engineers-torch",
    "name": "Space Engineers (Torch)",
    "description": "Space Engineers Dedicated Server with Torch API",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "298740",
      "game_app_id": "244850",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 27016
      },
      {
        "name": "Steam Port",
        "proto": "udp",
        "port": 8766
      },
      {
        "name": "Remote API Port",
        "proto": "both",
        "port": 8777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\d+:\\d+:\\d+\\.\\d+ \\[INFO\\]\\s+Keen:\\s+Game ready\\.\\.\\.\\s*$",
    "events": {
      "chat": "^\\d+:\\d+:\\d+\\.\\d+ \\[INFO\\] Chat: \\[(Global:0|Private:\\d+|Faction:\\d+)\\] (?P\u003cusername\u003e[^:]+?): (?P\u003cmessage\u003e.+)$",
      "join": "^\\d+:\\d+:\\d+\\.\\d+ \\[INFO\\]\\s+Keen:\\s+World request received: (?P\u003cusername\u003e.+?)$",
      "leave": "^\\d+:\\d+:\\d+\\.\\d+ \\[INFO\\]\\s+Keen:\\s+User left (?P\u003cusername\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "298740",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Base Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/space-engineers-dedicated.cfg",
        "target_path": "{{$FullBaseDir}}servers"
      },
      {
        "kind": "direct",
        "name": "Torch Download",
        "url": "https://build.torchapi.com/job/Torch/job/master/lastSuccessfulBuild/artifact/bin/torch-server.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Torch.cfg Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/space-engineers-torchtorch.cfg",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Torch Console Plugin Download",
        "url": "https://torchapi.com/plugin/download/5c14d8ea-7032-4db1-a2e6-9134ef6cb8d9",
        "target_path": "{{$FullBaseDir}}Plugins"
      },
      {
        "kind": "direct",
        "name": "Winescript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/space-engineers-torchwinescript.sh",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "servers/SpaceEngineers-Dedicated.cfg",
      "servers/Saves/{{WorldName}}/Sandbox_config.sbc",
      "Torch.cfg"
    ],
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -instancename Server -instancepath \"{{$FullBaseDir}}servers\" -noupdate -autostart -nogui -plugins 5c14d8ea-7032-4db1-a2e6-9134ef6cb8d9 {{plugins}} -console {{$FormattedArgs}}",
    "provenance": "space-engineers-torch.kvp"
  },
  {
    "id": "spellmasons",
    "name": "Spellmasons",
    "description": "Spellmasons Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 9876
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Headless Server Started at port\\s+\\d+$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "art_steam_app_id": "1618380",
    "wine": false,
    "entrypoint_hint": "src/HeadlessServer.js",
    "provenance": "spellmasons.kvp"
  },
  {
    "id": "squad-dedicated-server",
    "name": "Squad",
    "description": "Squad Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "403240",
      "game_app_id": "393380"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7787
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27165
      },
      {
        "name": "Beacon Port",
        "proto": "udp",
        "port": 15000
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 21114
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(LogInit: Display: Starting Game\\.)|(LogOnline: GotoState: NewState: Playing)$",
    "events": {
      "chat": "^\\[Chat.*\\] \\[SteamID\\:(?P\u003cuserid\u003e-?\\d+)\\] (?P\u003cusername\u003e.+?) \\: (?P\u003cmessage\u003e.+)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "403240"
      }
    ],
    "config_files": [
      "./SquadGame/ServerConfig/Server.cfg",
      "./SquadGame/ServerConfig/VoteConfig.cfg"
    ],
    "art_steam_app_id": "393380",
    "wine": false,
    "entrypoint_hint": "MULTIHOME={{$ApplicationIPBinding}} Port={{$ApplicationPort1}} QueryPort={{$ApplicationPort2}} RCONPORT={{$RemoteAdminPort}} RCONPASSWORD={{$RemoteAdminPassword}} FIXEDMAXTICKRATE={{MaxTPS}} -beaconport={{$ApplicationPort3}} -log -fullcrashdump {{CustomArgs}}",
    "provenance": "squad-dedicated-server.kvp"
  },
  {
    "id": "star-rupture",
    "name": "StarRupture",
    "description": "StarRupture Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "3809400",
      "game_app_id": "1631270",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogGlobalStatus: UEngine::LoadMap Load map complete /Game/.*/Maps/DedicatedServerStart$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.]+:\\d+\\]\\[[\\d ]+\\]LogNet: Login request: \\?IdToken=.*\\?Name=(?P\u003cusername\u003e.+?) userId: EOS:\\|(?P\u003cuserid\u003e.+?) platform: EOSPlus$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.]+:\\d+\\]\\[[\\d ]+\\]LogNet: UChannel::Close: Sending CloseBunch\\.(?:.+?) UniqueId: EOS:\\|(?P\u003cuserid\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "3809400",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "DSSettings.txt Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/star-rupturedssettings.txt",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Password.json Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/star-rupturepassword.json",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "PlayerPassword.json Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/star-ruptureplayerpassword.json",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "DSSettings.txt",
      "Password.json",
      "PlayerPassword.json"
    ],
    "art_steam_app_id": "1631270",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} StarRupture -port={{$ServerPort}} {{multihome}}-stdout -FullStdOutLogOutput {{$FormattedArgs}} -RCWebControlDisable -RCWebInterfaceDisable",
    "provenance": "star-rupture.kvp"
  },
  {
    "id": "starbound",
    "name": "Starbound",
    "description": "Starbound Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "211820",
      "game_app_id": "211820"
    },
    "ports": [
      {
        "name": "Game and Query Port",
        "proto": "both",
        "port": 21025
      },
      {
        "name": "RCON Port",
        "proto": "both",
        "port": 21026
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^\\[Info\\] UniverseServer\\: listening for incoming TCP connections on [\\d\\.:]+:\\d+$",
    "events": {
      "chat": "^\\[Info\\] Chat: \\\u003c(?P\u003cusername\u003e.+?)\\\u003e (?P\u003cmessage\u003e.+?)$",
      "join": "^\\[Info\\] UniverseServer\\: Logged in account.*as player '(?P\u003cusername\u003e.+?)' from address.*$",
      "leave": "^\\[Info\\] UniverseServer\\: Client '(?P\u003cusername\u003e.+?)'.*disconnected for reason.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Starbound Download",
        "app_id": "211820"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/starbound_server.config",
        "target_path": "{{$FullBaseDir}}storage"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/starboundmanagemods.sh",
        "target_path": "{{$FullInstanceDir}}"
      },
      {
        "kind": "direct",
        "name": "Modscript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/starboundmanagemods.ps1",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "storage/starbound_server.config"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "211820",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "starbound.kvp"
  },
  {
    "id": "stardew-valley",
    "name": "Stardew Valley",
    "description": "Stardew Valley Dedicated Server using SMAPI and Dedicated Server Mod",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "413150",
      "game_app_id": "413150"
    },
    "ports": [
      {
        "name": "Server Port (24642 only)",
        "proto": "udp",
        "port": 24642
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[DedicatedServer\\] (Failed to find farm slot\\. Creating new farm \".*\" and hosting on co-op|Hosting .* on co-op)$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Game Download",
        "app_id": "413150"
      }
    ],
    "config_files": [
      "Mods/DedicatedServer/config.json"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "413150",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "stardew-valley.kvp"
  },
  {
    "id": "starmade",
    "name": "Starmade",
    "description": "Starmade Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 4242
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[SERVER\\] SERVER INIT FINISHED$",
    "events": {
      "chat": "^\\[CHANNELROUTER\\] RECEIVED MESSAGE ON Server\\(\\d+\\): \\[CHAT\\]\\[sender=(?P\u003cusername\u003e.+?)\\].*\\[message=(?P\u003cmessage\u003e.+?)\\]$",
      "join": "^\\[CONTROLLER\\]\\[ADD-UNIT\\] \\(Server\\(\\d+\\)\\): PlS\\[(?P\u003cusername\u003e.+?) ; id.*Added to controllers: PlayerCharacter\\[\\(ENTITY_PLAYERCHARACTER.*\\)\\(\\d+\\)\\]$",
      "leave": "^\\[SERVERLOG\\] \\[DISCONNECT\\] Client 'RegisteredClient: (?P\u003cusername\u003e.+?) \\(\\d+\\).*HAS BEEN DISCONNECTED.*$"
    },
    "steam_login_required": true,
    "art_steam_app_id": "244770",
    "wine": false,
    "entrypoint_hint": "-Xmx{{MaxHeap}}M --add-opens=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED -javaagent:StarMade.jar -jar StarMade.jar -server",
    "provenance": "starmade.kvp"
  },
  {
    "id": "stationeers",
    "name": "Stationeers",
    "description": "Stationeers Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "600760",
      "game_app_id": "544550"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 27016
      },
      {
        "name": "Update Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(?:\u003e )*?[\\d:]+ (started Server |registered with session #)\\d+$",
    "events": {
      "chat": "^$",
      "join": "^(?:\u003e )*?[\\d:]+ Client (?P\u003cusername\u003e.+?) \\((?P\u003cuserid\u003e.+?)\\) is ready(?:!)?$",
      "leave": "^(?:\u003e )*?[\\d:]+ Client disconnected: .* \\| (?P\u003cusername\u003e.+?)\\s+connectTime: \\d+.\\d+s, ClientId: (?P\u003cuserid\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "600760"
      }
    ],
    "config_files": [
      "setting.xml"
    ],
    "art_steam_app_id": "544550",
    "wine": false,
    "entrypoint_hint": "{{LoadingMode}} -noclear -settings StartLocalHost true GamePort {{$GamePort}} UpdatePort {{$UpdatePort}} LocalIpAddress \"{{$ApplicationIPBinding}}\" {{$PlatformArgs}}",
    "provenance": "stationeers.kvp"
  },
  {
    "id": "staxel",
    "name": "Staxel",
    "description": "Staxel Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "405710",
      "game_app_id": "405710",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 38465
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Server ready\\.$",
    "events": {
      "chat": "^\\([\\d:]+\\)\\\u003c(?P\u003cusername\u003e.+?)\\\u003e: (?P\u003cmessage\u003e.*)$",
      "join": "^Assigning client '(?P\u003cusername\u003e.+?)' new entity id (?P\u003cuserid\u003e\\d+?)$",
      "leave": "^Removing disconnected client entity id (?P\u003cuserid\u003e\\d+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "405710",
        "platform": "windows"
      }
    ],
    "steam_login_required": true,
    "art_steam_app_id": "405710",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} --port={{$ServerPort}} --interface={{$ApplicationIPBinding}} {{$FormattedArgs}}",
    "provenance": "staxel.kvp"
  },
  {
    "id": "stay-in-tarkov",
    "name": "Stay In Tarkov",
    "description": "Stay In Tarkov Dedicated Server (NON COMMERCIAL USE ONLY)",
    "ports": [
      {
        "name": "Game Port",
        "proto": "tcp",
        "port": 6969
      },
      {
        "name": "TCP Relay Port",
        "proto": "tcp",
        "port": 6970
      },
      {
        "name": "TCP NAT Helper Port",
        "proto": "tcp",
        "port": 6971
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*Server is running, do not close while playing SPT.*$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "7-Zip Download",
        "url": "https://www.7-zip.org/a/7zr.exe",
        "target_path": "{{$FullRootDir}}7-Zip"
      },
      {
        "kind": "direct",
        "name": "7-Zip Download",
        "url": "https://www.7-zip.org/a/7z2301-linux-x64.tar.xz",
        "target_path": "{{$FullRootDir}}7-Zip"
      },
      {
        "kind": "direct",
        "name": "Download SPT AKI",
        "url": "https://spt-releases.modd.in/SPT-{{SPTVersion}}.7z",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "SIT Server Mod Download",
        "url": "https://github.com/stayintarkov/SIT.Aki-Server-Mod/releases/download/{{SITVersion}}-win.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "SIT Server Mod Download",
        "url": "https://github.com/stayintarkov/SIT.Aki-Server-Mod/releases/download/{{SITVersion}}-linux.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "Aki_Data/Server/configs/http.json",
      "user/mods/SITCoop/config/coopConfig.json",
      "user/mods/SITCoop/config/SITConfig.json"
    ],
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "stay-in-tarkov.kvp"
  },
  {
    "id": "stormworks",
    "name": "Stormworks",
    "description": "Stormworks Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "573090",
      "game_app_id": "573090",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 25564
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 25565
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Server\\s+Version\\s+:\\s+v\\d+\\.\\d+\\.\\d+$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Update",
        "app_id": "573090",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/stormworksserver_config.xml",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "server_config.xml"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "573090",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} +server_dir \"./\" {{$FormattedArgs}}",
    "provenance": "stormworks.kvp"
  },
  {
    "id": "subnautica-legacy",
    "name": "Subnautica (Legacy Nitrox Mod)",
    "description": "Nitrox Multiplayer Mod for Subnautica (Legacy)",
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 11000
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d:\\.]+\\] Server started \\([\\d\\.]+s\\)$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Nitrox Download",
        "url": "https://github.com/SubnauticaNitrox/Nitrox/releases/download/1.7.1.0/Nitrox_1.7.1.0.zip",
        "target_path": "{{$FullBaseDir}}nitrox"
      },
      {
        "kind": "direct",
        "name": "Server.cfg File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/subnautica-legacyserver.cfg",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "264710",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "subnautica-legacy.kvp"
  },
  {
    "id": "subnautica2",
    "name": "Subnautica (Nitrox Mod)",
    "description": "Nitrox Multiplayer Mod for Subnautica",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 11000
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d:\\.]+\\] Server started \\([\\d\\.]+s\\)$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Subnautica Download",
        "app_id": "264710",
        "platform": "windows",
        "conditional": true
      }
    ],
    "config_files": [
      "NitroxData/saves/{{save}}/server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "264710",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} --data-path \"{{$FullBaseDir}}NitroxData\" --game-path \"{{ClientFilesLocationMode}}\" {{$FormattedArgs}}",
    "provenance": "subnautica2.kvp"
  },
  {
    "id": "subsistence",
    "name": "Subsistence",
    "description": "Subsistence Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1362640",
      "game_app_id": "418030",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "Web API Port",
        "proto": "tcp",
        "port": 8000
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1362640",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Winescript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/subsistencewinescript.sh",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "UDKGame/Config/UDKDedServerSettings.ini",
      "UDKGame/Config/UDKEngine.ini",
      "UDKGame/Config/UDKWeb.ini"
    ],
    "art_steam_app_id": "418030",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} server coldmap1?steamsockets -Port={{$GamePort}} -ini:UDKEngine:OnlineSubsystemSteamworks.OnlineSubsystemSteamworks.QueryPort={{$QueryPort}} {{$FormattedArgs}}",
    "provenance": "subsistence.kvp"
  },
  {
    "id": "sunkenland",
    "name": "Sunkenland",
    "description": "Sunkenland Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2667530",
      "game_app_id": "2080690",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "admin_method": "TailLogFile",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2667530",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Default World Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/sunkenlandworld.zip",
        "target_path": "{{$FullBaseDir}}Worlds"
      }
    ],
    "art_steam_app_id": "2080690",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -nographics -batchmode -logFile \"./server.log\" -port \"{{$ServerPort}}\" -publicPort \"{{$ServerPort}}\" -ip \"{{$ApplicationIPBinding}}\" {{$FormattedArgs}} {{makeSessionInvisible}}{{CustomArgs}}",
    "provenance": "sunkenland.kvp"
  },
  {
    "id": "sven-co-op",
    "name": "Sven Co-op",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "276060",
      "game_app_id": "225840"
    },
    "ports": [
      {
        "name": "Server and RCON Port",
        "proto": "both",
        "port": 27015
      }
    ],
    "rcon_adapter": "goldsrc_rcon",
    "admin_method": "GoldSrcRCON",
    "ready_pattern": "^Connection to Steam servers successful.*$",
    "events": {
      "chat": "^\"(?P\u003cusername\u003e.+?)\u003c.*\" say \"(?P\u003cmessage\u003e.+)\"$",
      "join": "^(?:L )?[\\d\\/]+ - [\\d:]+: .*\"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c.*\u003e\" has entered the game$",
      "leave": "^(?:L )?[\\d\\/]+ - [\\d:]+: .*\"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c.*\u003e\" disconnected.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Sven Co-op Download",
        "app_id": "276060"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/sven-co-opserver.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "steamcmd",
        "name": "Half-Life: Opposing Force Download",
        "app_id": "50",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "Half-Life: Blue Shift Download",
        "app_id": "130",
        "conditional": true
      }
    ],
    "config_files": [
      "svencoop/server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "225840",
    "wine": false,
    "entrypoint_hint": "-console -game {{mod}} -port {{$ApplicationPort1}} -nobreakpad {{insecure}}{{CustomParameters}} {{CustomConVars}} +ip {{$ApplicationIPBinding}} +rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} +log on",
    "provenance": "sven-co-op.kvp"
  },
  {
    "id": "swords-n-magic-and-stuff",
    "name": "Swords 'n Magic and Stuff",
    "description": "Swords 'n Magic and Stuff Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2058450",
      "game_app_id": "810040",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogSnMDedicatedServer: Succeeded to create Steam session with ID: .*$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "2058450",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Winescript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/swords-n-magic-and-stuffwinescript.sh",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "SNM2020/Saved/Config/WindowsServer/Game.ini",
      "SNM2020/Saved/Config/WindowsServer/Engine.ini"
    ],
    "art_steam_app_id": "810040",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} SNM2020 -Port={{$GamePort}} -QueryPort={{$QueryPort}} -stdout -FullStdOutLogOutput",
    "provenance": "swords-n-magic-and-stuff.kvp"
  },
  {
    "id": "synergy",
    "name": "Synergy",
    "description": "Synergy Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "17520",
      "game_app_id": "17520"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Synergy Download",
        "app_id": "17520"
      },
      {
        "kind": "steamcmd",
        "name": "Half-Life 2 Download",
        "app_id": "220"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Components Download",
        "app_id": "1007"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/synergyserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "synergy/cfg/server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "17520",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game synergy -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} -tickrate {{tickrate}} {{insecure}}{{pingboost}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "synergy.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "tarkov-fika",
    "name": "Tarkov (Fika Mod) (Legacy)",
    "description": "Tarkov Dedicated Server using SPT-AKI v3.11.4 and the Fika Server Mod v2.4.8",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "SPT-AKI Server Port",
        "proto": "tcp",
        "port": 6969
      },
      {
        "name": "NAT Punch Server Port",
        "proto": "udp",
        "port": 6970
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^.*(Server is running, do not close while playing SPT|Der Server läuft\\. Schließen Sie ihn nicht, während Sie SPT spielen|Server is gestart, Veel plezier!!).*$",
    "events": {
      "chat": "^$",
      "join": "^\\[WS\\] Player: (?P\u003cusername\u003e.+) \\((?P\u003cuserid\u003e.+?)\\) has connected$",
      "leave": "^Coop session (?P\u003cuserid\u003e.+?) has ended: .*$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "Fika Server Tools Download",
        "repo": "project-fika/Fika-ServerTools",
        "asset_regex": "FikaServerTools_main-windows64.zip",
        "target_path": "{{$FullBaseDir}}user/mods/fika-server",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "Fika Server Tools Download",
        "repo": "project-fika/Fika-ServerTools",
        "asset_regex": "FikaServerTools_main-linux64.zip",
        "target_path": "{{$FullBaseDir}}user/mods/fika-server",
        "conditional": true
      }
    ],
    "config_files": [
      "SPT_Data/Server/configs/http.json",
      "Aki_Data/Server/configs/http.json",
      "user/mods/fika-server/assets/configs/fika.jsonc"
    ],
    "art_steam_app_id": "2247310",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "tarkov-fika.kvp"
  },
  {
    "id": "tarkov-fika-new",
    "name": "Tarkov (Fika Mod) 4.0.0+",
    "description": "Tarkov Dedicated Server using SPT v4.0.0+ and the Fika Server Mod",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "SPT Server Port",
        "proto": "tcp",
        "port": 6969
      },
      {
        "name": "NAT Punch Server Port",
        "proto": "udp",
        "port": 6970
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(Server has started, happy playing|Server běží, příjemnou zábavu|Serwer wystartował, miłej gry|Sunucu başladı, iyi oyunlar|Server is gestart, veel plezier met spelen|Il server è stato avviato con successo, buona partita|서버가 시작되었습니다, 즐거운 시간 되세요\\.|Le serveur a démarré\\. Bonne partie!|Сервер увімкнено, приємної гри|Сервер запущен, приятной игры|Ο διακομιστής έχει ξεκινήσει, να έχετε ένα χαρούμενο παιχνίδι|服务端已开启，游戏愉快|El servidor ha sido iniciado, feliz juego|O servidor iniciou\\. Bom jogo)$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "github",
        "name": "Fika Server Mod Download",
        "repo": "project-fika/Fika-Server-CSharp",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "SPT/SPT_Data/configs/http.json",
      "SPT/user/mods/fika-server/assets/configs/fika.jsonc"
    ],
    "art_steam_app_id": "2247310",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "tarkov-fika-new.kvp"
  },
  {
    "id": "team-fortress-classic",
    "name": "Team Fortress Classic",
    "description": "Team Fortress Classic Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "90",
      "game_app_id": "20"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "udp",
        "port": 27015
      }
    ],
    "rcon_adapter": "goldsrc_rcon",
    "admin_method": "GoldSrcRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$",
      "join": "^(?:L )?[\\d\\/]+ - [\\d:]+: .*\"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c.*\u003e\" entered the game$",
      "leave": "^(?:L )?[\\d\\/]+ - [\\d:]+: .*\"(?P\u003cusername\u003e.+?)\u003c\\d+\u003e\u003cSTEAM_\\d+:\\d+:(?P\u003cuserid\u003e\\d+?)\u003e\u003c.*\u003e\" disconnected.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "90"
      },
      {
        "kind": "github",
        "name": "ReHLDS Download",
        "repo": "dreamstalker/rehlds",
        "target_path": "{{$FullBaseDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/team-fortress-classicserver.cfg",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Metamod Download",
        "url": "https://www.amxmodx.org/release/metamod-1.21.1-am.zip",
        "target_path": "{{$FullBaseDir}}tfc",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "Metamod Download",
        "repo": "theAsmodai/metamod-r",
        "target_path": "{{$FullBaseDir}}tfc",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-base-linux.tar.gz",
        "target_path": "{{$FullBaseDir}}tfc",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "AMX Mod X Plugin Download",
        "url": "https://www.amxmodx.org/release/amxmodx-1.8.2-base-windows.zip",
        "target_path": "{{$FullBaseDir}}tfc",
        "conditional": true
      }
    ],
    "config_files": [
      "tfc/server.cfg",
      "tfc/motd.txt"
    ],
    "art_steam_app_id": "20",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -console -game {{mod}} -port {{$GameRCONPort}} -sys_ticrate={{sys_ticrate}} -nobreakpad {{insecure}}{{pingboost}}{{CustomParameters}} {{CustomConVars}} +ip {{$ApplicationIPBinding}} +rcon_password \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} +log on",
    "provenance": "team-fortress-classic.kvp"
  },
  {
    "id": "team-fortress2",
    "name": "Team Fortress 2",
    "description": "Team Fortress 2 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "232250",
      "game_app_id": "440"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "232250"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/team-fortress2server.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "tf/cfg/server.cfg",
      "tf/cfg/mapcycle.txt"
    ],
    "art_steam_app_id": "440",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game tf -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "team-fortress2.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "team-fortress2-64",
    "name": "Team Fortress 2 (64 Bit)",
    "description": "Team Fortress 2 64 bit Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "art_steam_app_id": "440",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game tf -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "team-fortress2-64.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "team-fortress2-classified",
    "name": "Team Fortress 2 Classified",
    "description": "Team Fortress 2 Classified Dedicated Server",
    "os": [
      "Linux"
    ],
    "steam": {
      "app_id": "232250",
      "game_app_id": "3545060"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^Connection to Steam servers successful\\.$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "TF2 Server Download",
        "app_id": "232250"
      },
      {
        "kind": "steamcmd",
        "name": "TF2 Classified Server Download",
        "app_id": "3557020"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/team-fortress2-classifiedserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "tf2classified/cfg/server.cfg",
      "tf2classified/cfg/mapcycle.txt"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game tf2classified -tf_path \"{{$FullRootDir}}232250\" -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "team-fortress2-classified.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  },
  {
    "id": "teamspeak3",
    "name": "TeamSpeak 3",
    "description": "TeamSpeak 3 Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Voice Port",
        "proto": "udp",
        "port": 9987
      },
      {
        "name": "File Transfer Port",
        "proto": "tcp",
        "port": 30033
      },
      {
        "name": "Telnet Port",
        "proto": "tcp",
        "port": 10011
      },
      {
        "name": "SSH Port",
        "proto": "tcp",
        "port": 10022
      },
      {
        "name": "HTTP Port",
        "proto": "tcp",
        "port": 10080
      },
      {
        "name": "HTTPS Port",
        "proto": "tcp",
        "port": 10443
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "TeamSpeak 3 Server Download",
        "url": "https://files.teamspeak-services.com/releases/server/{{SpecificServerVersion}}/teamspeak3-server_win64-{{SpecificServerVersion}}.zip",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "TeamSpeak 3 Server Download",
        "url": "https://files.teamspeak-services.com/releases/server/{{SpecificServerVersion}}/teamspeak3-server_linux_amd64-{{SpecificServerVersion}}.tar.bz2",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/teamspeak3server.ini",
        "target_path": "{{$FullBaseDir}}teamspeak3-server_win64/"
      }
    ],
    "config_files": [
      "teamspeak3-server_win64/teamspeak3server.ini"
    ],
    "steam_login_required": true,
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} inifile=teamspeak3server.ini license_accepted=1 {{$FormattedArgs}}",
    "provenance": "teamspeak3.kvp"
  },
  {
    "id": "teamspeak6",
    "name": "TeamSpeak 6",
    "description": "TeamSpeak 6 Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Voice Port",
        "proto": "udp",
        "port": 9987
      },
      {
        "name": "File Transfer Port",
        "proto": "tcp",
        "port": 30033
      },
      {
        "name": "SSH Query Port",
        "proto": "tcp",
        "port": 10022
      },
      {
        "name": "HTTP Query Port",
        "proto": "tcp",
        "port": 10080
      },
      {
        "name": "HTTPS Query Port",
        "proto": "tcp",
        "port": 10443
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d-]+ [\\d:\\.]+\\|INFO\\s+\\|VirtualServerBase\\|\\d+\\s+\\|listening on .*$",
    "events": {
      "chat": "^$",
      "join": "^[\\d-]+ [\\d:\\.]+\\|INFO\\s+\\|VirtualServerBase\\|\\d+\\s+\\|client connected '(?P\u003cusername\u003e.+?)'\\(id:(?P\u003csessionid\u003e\\d+?)\\) using a myTeamSpeak ID \\((?P\u003cuserid\u003e.+?)\\) from (?P\u003cendpoint\u003e(?:\\d{1,3}(?:\\.\\d{1,3}){3})|(?:[0-9a-fA-F:]+)):\\d+$",
      "leave": "^[\\d-]+ [\\d:\\.]+\\|INFO\\s+\\|VirtualServerBase\\|\\d+\\s+\\|client disconnected '(?P\u003cusername\u003e.+?)'\\(id:(?P\u003csessionid\u003e\\d+?)\\) reason '.*'$"
    },
    "steam_login_required": true,
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} --accept-license=1 --default-voice-port={{$VoicePort}} --filetransfer-port={{$FileTransferPort}} --query-http-port={{$HTTPQueryPort}} --query-ssh-port={{$SSHQueryPort}} --query-https-port={{$HTTPSQueryPort}} --voice-ip=[{{$ApplicationIPBinding}},{{IPv6Binding}}] --filetransfer-ip=[{{$ApplicationIPBinding}},{{IPv6Binding}}] --query-http-ip=[{{$ApplicationIPBinding}},{{IPv6Binding}}] --query-ssh-ip=[{{$ApplicationIPBinding}},{{IPv6Binding}}] --query-https-ip=[{{$ApplicationIPBinding}},{{IPv6Binding}}] --config-file=tsserver.yaml {{$FormattedArgs}}",
    "provenance": "teamspeak6.kvp"
  },
  {
    "id": "teaspeak",
    "name": "TeaSpeak",
    "description": "TeaSpeak Server",
    "os": [
      "Linux"
    ],
    "ports": [
      {
        "name": "Voice and Web Port",
        "proto": "both",
        "port": 9987
      },
      {
        "name": "Query Port",
        "proto": "tcp",
        "port": 10101
      },
      {
        "name": "File Port",
        "proto": "tcp",
        "port": 30303
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d-]+ [\\d:]+\\] \\[INFO \\] GLOBL \\| Loaded \\d+ servers within \\d+ms\\..*$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Download TeaSpeak",
        "url": "https://repo.teaspeak.de/server/linux/amd64_stable/TeaSpeak-1.5.6.tar.gz"
      },
      {
        "kind": "direct",
        "name": "Download yt-dlp",
        "url": "https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp",
        "target_path": "{{$FullBaseDir}}providers/bin"
      }
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} --property:binding.query.port={{$QueryPort}} --property:binding.file.port={{$FilePort}} --property:voice.default_port={{$ServerPort}} --property:binding.query.host={{$ApplicationIPBinding}} --property:binding.file.host={{$ApplicationIPBinding}} --property:binding.voice.default_host=\"{{$ApplicationIPBinding}}\" --property:binding.web.default_host={{$ApplicationIPBinding}} --property:query.motd=\"{{motd}}\" {{$FormattedArgs}}",
    "provenance": "teaspeak.kvp"
  },
  {
    "id": "teeworlds",
    "name": "Teeworlds",
    "description": "Teeworlds Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 8303
      },
      {
        "name": "Console Port",
        "proto": "tcp",
        "port": 8304
      }
    ],
    "rcon_adapter": "telnet",
    "admin_method": "TelnetRCON",
    "ready_pattern": "^\\[[\\d-]+ [\\d:]+\\]\\[server\\]: version .*$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://github.com/teeworlds/teeworlds/releases/download/0.7.5/teeworlds-0.7.5-win64.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://github.com/teeworlds/teeworlds/releases/download/0.7.5/teeworlds-0.7.5-linux_x86_64.tar.gz",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Serverconfig.cfg File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/teeworldsserverconfig.cfg",
        "target_path": "{{$FullBaseDir}}user"
      }
    ],
    "config_files": [
      "user/serverconfig.cfg"
    ],
    "art_steam_app_id": "380840",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -f serverconfig.cfg",
    "provenance": "teeworlds.kvp"
  },
  {
    "id": "terraria",
    "name": "Terraria",
    "description": "Terraria generic module with support for various options.",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Main Game Port",
        "proto": "tcp",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Listening on port (\\d+)$",
    "events": {
      "chat": "^\u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^(?P\u003cusername\u003e.+?) has joined\\.$",
      "leave": "^(?P\u003cusername\u003e.+?) has left\\.$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/terrariaserverconfig.txt",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "105600",
        "conditional": true
      }
    ],
    "config_files": [
      "terrariaserverconfig.txt"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "105600",
    "wine": false,
    "entrypoint_hint": "-server {{$FormattedArgs}} -players {{$MaxUsers}} -port {{$ApplicationPort1}} -config terrariaserverconfig.txt",
    "ported": true,
    "module_id": "terraria",
    "provenance": "terraria.kvp"
  },
  {
    "id": "terratech-worlds",
    "name": "TerraTech Worlds",
    "description": "TerraTech Worlds Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2533070",
      "game_app_id": "2313330",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogWorld: Bringing up level for play took: \\d+\\.\\d+$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\].*Login request.*Name=(?P\u003cusername\u003e.+)\\?Profile.*userId: .*EOS:\\|(?P\u003cuserid\u003e.+?) .*$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\].*UNetConnection::Close.*UniqueId: EOS:\\|(?P\u003cuserid\u003e.+?),.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "2533070",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/terratech-worldsdedicated_server_config.json",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "Winescript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/terratech-worldswinescript.sh",
        "target_path": "{{$FullInstanceDir}}"
      }
    ],
    "config_files": [
      "dedicated_server_config.json"
    ],
    "art_steam_app_id": "2313330",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} TT2 -stdout -FullStdOutLogOutput",
    "provenance": "terratech-worlds.kvp"
  },
  {
    "id": "tes3mp",
    "name": "TES3MP - The Elder Scrolls III: Morrowind Server",
    "description": "TES3MP and OpenMW Engine for The Elder Scrolls III: Morrowind Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Main Game Port",
        "proto": "udp",
        "port": 25565
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d-]+ [\\d:]+\\] \\[INFO\\]: \\[Script\\]: Called \"OnServerPostInit\"$",
    "events": {
      "chat": "^$",
      "join": "^\\[Script\\]: - New player is named (?P\u003cusername\u003e.+?)$",
      "leave": "^\\[[\\d-]+ [\\d:]+\\] \\[INFO\\]: \\[Script\\]: Called \"OnPlayerDisconnect\" for (?P\u003cusername\u003e.+?) \\(\\d+\\)$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "TES3MP Download",
        "url": "https://github.com/TES3MP/TES3MP/releases/download/tes3mp-0.8.1/tes3mp.Win64.release.0.8.1.zip",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "direct",
        "name": "TES3MP Download",
        "url": "https://github.com/TES3MP/TES3MP/releases/download/tes3mp-0.8.1/tes3mp-server-GNU+Linux-x86_64-release-0.8.1-68954091c5-6da3fdea59.tar.gz",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "tes3mp-server-default.cfg"
    ],
    "art_steam_app_id": "22320",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "tes3mp.kvp"
  },
  {
    "id": "the-forest",
    "name": "The Forest",
    "description": "The Forest Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "556450",
      "game_app_id": "242760",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Main Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "Steam Main Port",
        "proto": "both",
        "port": 8766
      },
      {
        "name": "Steam Query Port",
        "proto": "both",
        "port": 27016
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^GameServer init success.*$",
    "events": {
      "chat": " ",
      "join": " ",
      "leave": " "
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "556450",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Base Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/the-forestserver.cfg",
        "target_path": "./556450/"
      }
    ],
    "config_files": [
      "the-forestserver.cfg"
    ],
    "art_steam_app_id": "242760",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -showlogs -batchmode -configfilepath the-forestserver.cfg -savefolderpath saves {{$FormattedArgs}}",
    "provenance": "the-forest.kvp"
  },
  {
    "id": "the-front",
    "name": "The Front",
    "description": "The Front Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2612550",
      "game_app_id": "2285150"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 5001
      },
      {
        "name": "Steam Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "Beacon Port",
        "proto": "udp",
        "port": 5002
      },
      {
        "name": "Shutdown Service Port",
        "proto": "tcp",
        "port": 5003
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogLoad: \\(Engine Initialization\\) Total time: \\d+\\.\\d+ seconds$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogPlayer: load role data success, account=STEAM:(?P\u003cuserid\u003e\\d+?), guid=(?P\u003csessionid\u003e.+?), character guid=.*, save game=.*$",
      "leave": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogPlayer: player leave game, account=STEAM:(?P\u003cuserid\u003e\\d+?), guid=(?P\u003csessionid\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "2612550"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "2334200"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/the-frontserverconfig_AMP.ini",
        "target_path": "{{$FullBaseDir}}TheFrontManager"
      }
    ],
    "config_files": [
      "TheFrontManager/ServerConfig_AMP.ini"
    ],
    "art_steam_app_id": "2285150",
    "wine": false,
    "entrypoint_hint": "ProjectWar ProjectWar_Start?DedicatedServer?MaxPlayers={{$MaxUsers}}{{UseSteamSocket}} -server -game -ConfigServerName=\"AMP\" -Port={{$GamePort}} -QueryPort={{$SteamQueryPort}} -BeaconPort={{$BeaconPort}} -ShutDownServicePort={{$ShutDownServicePort}} -OutIPAddress={{PublicIP}} -QueueThreshold={{$MaxUsers}} -ServerAdminAccounts={{ServerAdminAccounts}} -EnableParallelCharacterMovementTickFunction -EnableParallelCharacterTickFunction -UseDynamicPhysicsScene -fullcrashdumpalways -Game.PhysicsVehicle={{GamePhysicsVehicle}} -ansimalloc -Game.MaxFrameRate={{GameMaxFrameRate}} -MaxQueueSize=50 -QueueValidTime=120 -UseEAC={{UseEAC}} {{$FormattedArgs}} {{CustomServerArgs}} {{$PlatformArgs}}",
    "provenance": "the-front.kvp"
  },
  {
    "id": "theisle-evrima",
    "name": "The Isle (EVRIMA)",
    "description": "The Isle (EVRIMA) Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "Queue Port",
        "proto": "tcp",
        "port": 10000
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 8888
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]*-[\\d.]*:\\d*\\]\\[[\\d ]*\\]LogLoad: Took \\d+\\.\\d+ seconds to LoadMap\\((?:.+)\\)$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d.]*-[\\d.]*:\\d*\\]\\[[\\d ]*\\]LogTheIsleJoinData: Verbose: \\[[\\d: ]+\\] (?P\u003cusername\u003e.+?) \\[(?P\u003cuserid\u003e\\d+?)\\] Joined The Server.*$",
      "leave": "^\\[[\\d.]*-[\\d.]*:\\d*\\]\\[[\\d ]*\\]LogTheIsleJoinData: Verbose: \\[[\\d: ]+\\] (?P\u003cusername\u003e.+?) \\[(?P\u003cuserid\u003e\\d+?)\\] Left The Server.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "412680",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007",
        "conditional": true
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "412680",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Game Config Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/theisle-evrima1-5game.ini",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "TheIsle/Saved/Config/WindowsServer/Game.ini",
      "TheIsle/Saved/Config/LinuxServer/Game.ini"
    ],
    "art_steam_app_id": "376210",
    "wine": false,
    "entrypoint_hint": "TheIsle {{$PlatformArgs}} ?Port={{$GamePort}}?QueryPort={{$QueryPort}}?MaxPlayers={{$MaxUsers}} {{$FormattedArgs}} -stdout -FullStdOutLogOutput -ini:Engine:[EpicOnlineServices]:DedicatedServerClientId=xyza7891gk5PRo3J7G9puCJGFJjmEguW -ini:Engine:[EpicOnlineServices]:DedicatedServerClientSecret=pKWl6t5i9NJK8gTpVlAxzENZ65P8hYzodV8Dqe5Rlc8",
    "provenance": "theisle-evrima.kvp"
  },
  {
    "id": "theisle-legacy",
    "name": "The Isle (Legacy)",
    "description": "The Isle (Legacy) Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "412680",
      "game_app_id": "376210",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "both",
        "port": 7778
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]*-[\\d.]*:\\d*\\]\\[[\\d ]*\\]LogGameState: Match State Changed from WaitingToStart to InProgress$",
    "events": {
      "chat": "^(?:\\[[\\d.]*-[\\d.]*:\\d*\\]\\[[\\d ]*\\])?LogIChat: \\[[\\d\\:]+\\] (\\(.*\\) )?(?P\u003cusername\u003e.+?): (?P\u003cmessage\u003e.+)$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "412680",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Game Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/theisle-legacygame.ini",
        "target_path": "{{$FullBaseDir}}TheIsle/Saved/Config/WindowsServer/"
      }
    ],
    "config_files": [
      "TheIsle/Saved/Config/WindowsServer/Game.ini",
      "TheIsle/Saved/Config/WindowsServer/GameUserSettings.ini",
      "TheIsle/Saved/Config/WindowsServer/Engine.ini",
      "TheIsle/Saved/MOTD.txt"
    ],
    "art_steam_app_id": "376210",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} TheIsle {{Map}}?game={{GameMode}} -Port={{$ApplicationPort1}} -QueryPort={{$ApplicationPort2}} {{$FormattedArgs}} -stdout -FullStdOutLogOutput",
    "provenance": "theisle-legacy.kvp"
  },
  {
    "id": "titanfall2",
    "name": "Titanfall 2",
    "description": "Northstar Dedicated Server Mod for Titanfall 2, with NSWrap wrapper on Linux",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 37015
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(?:\\[[\\d:]+\\] \\[NORTHSTAR\\] \\[info\\] loading took \\d+\\.\\d+s|\\[\\*\\] Launching the game\\.\\.\\.)$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d:]+\\] \\[SCRIPT SV\\] \\[info\\] Player client script initialization complete: entity \\(\\d+: player (?P\u003cusername\u003e.+?) \\[\\d+\\]\\)$",
      "leave": "^\\[[\\d:]+\\] \\[NORTHSTAR\\] \\[info\\] Player (?P\u003cusername\u003e.+?) disconnected:.*$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Titanfall 2 Download",
        "app_id": "1237970",
        "platform": "windows",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "Northstar Download",
        "repo": "R2Northstar/Northstar",
        "target_path": "{{$FullBaseDir}}"
      },
      {
        "kind": "github",
        "name": "Northstar Stubs Download",
        "repo": "R2Northstar/NorthstarStubs",
        "asset_regex": "NorthstarStubs.zip",
        "target_path": "{{$FullBaseDir}}bin/x64_retail"
      },
      {
        "kind": "github",
        "name": "Northstar Stubs Download",
        "repo": "R2Northstar/NorthstarStubs",
        "asset_regex": "NorthstarStubs.zip",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "config_files": [
      "{{profile}}/mods/Northstar.CustomServers/mod/cfg/autoexec_ns_server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "1237970",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -dedicated -multiple -profile=\"{{profile}}\" -port {{$ServerPort}} -maxplayersplaylist {{CustomParameters}} +setplaylist {{setplaylist}} +mp_gamemode {{mp_gamemode}} +setplaylistvaroverrides \"max_players {{$MaxUsers}} {{CustomPlaylistOverrides}}\" {{$FormattedArgs}} +net_compresspackets_minsize 64 +net_compresspackets 1 +spewlog_enable 0 +sv_maxrate 127000 {{CustomConVars}}",
    "provenance": "titanfall2.kvp"
  },
  {
    "id": "tmodloader",
    "name": "tModLoader (Legacy)",
    "description": "tModLoader (Legacy) server using Steam or GitHub",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(?:Listening on port|Escuchando en puerto|Aguardando na porta|Nasłuchiwanie na porcie) (\\d+)$",
    "events": {
      "chat": "^\u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^(?P\u003cusername\u003e.+?) has joined\\.$",
      "leave": "^(?P\u003cusername\u003e.+?) has left\\.$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/tmodloaderserverconfig.txt",
        "target_path": "serverfiles"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD tModLoader",
        "app_id": "1281930",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "GitHub tModLoader Windows",
        "url": "https://github.com/tModLoader/tModLoader/releases/download/v0.11.8.9/tModLoader.Windows.v0.11.8.9.zip",
        "target_path": "serverfiles",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "GitHub tModLoader Linux",
        "url": "https://github.com/tModLoader/tModLoader/releases/download/v0.11.8.9/tModLoader.Linux.v0.11.8.9.tar.gz",
        "target_path": "serverfiles",
        "conditional": true
      }
    ],
    "config_files": [
      "tmodloaderserverconfig.txt"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "1281930",
    "wine": false,
    "entrypoint_hint": "-server {{$FormattedArgs}} -players {{$MaxUsers}} -port {{$ApplicationPort1}} -config tmodloaderserverconfig.txt",
    "provenance": "tmodloader.kvp"
  },
  {
    "id": "tmodloader14",
    "name": "tModLoader 1.4+",
    "description": "tModLoader 1.4+ server using Steam or GitHub",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(Listening on port|Escuchando en puerto) (\\d+)$",
    "events": {
      "chat": "^\u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^(?P\u003cusername\u003e.+?) has joined\\.$",
      "leave": "^(?P\u003cusername\u003e.+?) has left\\.$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Config Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/tmodloader14serverconfig.txt",
        "target_path": "serverfiles"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD tModLoader",
        "app_id": "1281930",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "GitHub tModLoader",
        "repo": "tModLoader/tModLoader",
        "asset_regex": "tModLoader.zip",
        "target_path": "serverfiles",
        "conditional": true
      }
    ],
    "config_files": [
      "tmodloader14serverconfig.txt"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "1281930",
    "wine": false,
    "entrypoint_hint": "{{$FullBaseDir}}/tModLoader.dll -server {{$FormattedArgs}} -players {{$MaxUsers}} -port {{$ApplicationPort1}} -config tmodloader14serverconfig.txt",
    "provenance": "tmodloader14.kvp"
  },
  {
    "id": "tower-unite",
    "name": "Tower Unite",
    "description": "Tower Unite Community Condo Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "439660",
      "game_app_id": "394690"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "both",
        "port": 27016
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogWorld: Bringing up level for play took: \\d+\\.\\d+$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "439660"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "direct",
        "name": "TowerServer.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/tower-unitetowerserver.ini",
        "target_path": "{{$FullBaseDir}}Tower/Saved/Config/LinuxServer"
      },
      {
        "kind": "direct",
        "name": "TowerServer.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/tower-unitetowerserver.ini",
        "target_path": "{{$FullBaseDir}}Tower/Saved/Config/WindowsServer"
      }
    ],
    "config_files": [
      "Tower/Saved/Config/WindowsServer/TowerServer.ini",
      "Tower/Saved/Config/LinuxServer/TowerServer.ini"
    ],
    "art_steam_app_id": "394690",
    "wine": false,
    "entrypoint_hint": "Tower {{Map}} -Port={{$GamePort}} -QueryPort={{$QueryPort}} -MultiHome={{$ApplicationIPBinding}} {{$FormattedArgs}} -nosteamclient {{$PlatformArgs}}",
    "provenance": "tower-unite.kvp"
  },
  {
    "id": "tshock",
    "name": "TShock - Terraria Server",
    "description": "TShock Dedicated Server for Terraria",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 7777
      },
      {
        "name": "Rest API Port",
        "proto": "tcp",
        "port": 7878
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Listening on port (\\d+)$",
    "events": {
      "chat": "^\u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^(?P\u003cusername\u003e.+?) has joined\\.$",
      "leave": "^(?P\u003cusername\u003e.+?) has left\\.$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/tshockserverconfig.json",
        "target_path": "{{$FullBaseDir}}tshock"
      }
    ],
    "config_files": [
      "tshock/config.json",
      "tshock/motd.txt"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "105600",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -world \"Worlds/{{world}}\" -worldselectpath \"{{$FullBaseDir}}Worlds\" -configpath \"{{$FullBaseDir}}tshock\" -logpath \"tshock/logs\" {{disableannouncementbox}}{{secure}}{{noupnp}}{{forceupdate}}{{ignoreversion}}{{$FormattedArgs}} {{CustomServerArgs}}",
    "provenance": "tshock.kvp"
  },
  {
    "id": "turbo-sliders-unlimited",
    "name": "Turbo Sliders Unlimited",
    "description": "Turbo Sliders Unlimited Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1815810",
      "game_app_id": "1478340"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 7755
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 7756
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Operation Starting game\\.\\.\\. finished in \\d+ ms\\.$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "1815810"
      }
    ],
    "config_files": [
      "config/game.json"
    ],
    "art_steam_app_id": "1478340",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{CustomServerArgs}} -port {{$ServerPort}} -queryPort {{$QueryPort}} -ip {{$ApplicationIPBinding}} {{visibility}} {{relay}}{{$FormattedArgs}}",
    "provenance": "turbo-sliders-unlimited.kvp"
  },
  {
    "id": "txadmin",
    "name": "txAdmin",
    "description": "txAdmin Server Manager for FiveM and RedM",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "txAdmin Port",
        "proto": "tcp",
        "port": 40120
      },
      {
        "name": "Server Port",
        "proto": "both",
        "port": 30120
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d:]+\\]\\[tx:(FXRunner|FxRunner|FXProc)\\]( Please open txAdmin on the browser to configure your server\\.|(?:\u003e\u003e )?\\[\\d+\\] (FXServer|FxServer) Started!)$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "{{SpecificBuildVersionURL}}",
        "target_path": "{{$FullBaseDir}}server",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "{{SpecificBuildVersionURL}}",
        "target_path": "{{$FullBaseDir}}server",
        "conditional": true
      }
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} +set txAdminPort {{$txAdminPort}} +set txAdminInterface {{$ApplicationIPBinding}}",
    "provenance": "txadmin.kvp"
  },
  {
    "id": "unturned",
    "name": "Unturned",
    "description": "Unturned 3 Dedicated Server with RocketMod and optional OpenMod",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1110390",
      "game_app_id": "304930"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "Query Port",
        "proto": "both",
        "port": 27016
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 27115
      }
    ],
    "rcon_adapter": "telnet",
    "admin_method": "TelnetRCON",
    "ready_pattern": "^(?:\\[[\\d:]+ INF\\]\\[SDG\\.Unturned\\] )?Loading level: 100%$",
    "events": {
      "chat": "^(?:\\[[\\d:]+ INF\\]\\[SDG\\.Unturned\\] )?\\[(?:World|Area|Group)\\] (?P\u003cusername\u003e.+?) \\[(?P\u003ccharacter\u003e.+?)\\]: \"(?P\u003cmessage\u003e.+)\"$",
      "join": "^(?:\\[[\\d:]+ INF\\]\\[SDG\\.Unturned\\] )?Connecting: PlayerID: (?P\u003cuserid\u003e.+?) Name: (?P\u003cusername\u003e.+?) Character: (?P\u003ccharacter\u003e.+?)$",
      "leave": "^(?:\\[[\\d:]+ INF\\]\\[SDG\\.Unturned\\] )?Disconnecting: PlayerID: (?P\u003cuserid\u003e.+?) Name: (?P\u003cusername\u003e.+?) Character: (?P\u003ccharacter\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1110390"
      },
      {
        "kind": "direct",
        "name": "Main Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/unturnedconfigfile.dat",
        "target_path": "{{$FullBaseDir}}Servers/{{ServerID}}/Server/"
      },
      {
        "kind": "direct",
        "name": "Workshop Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/unturnedworkshopconfig.json",
        "target_path": "{{$FullInstanceDir}}"
      },
      {
        "kind": "github",
        "name": "Download OpenMod",
        "repo": "openmod/openmod",
        "asset_regex": "OpenMod.Unturned.Module.zip",
        "target_path": "{{$FullBaseDir}}Modules/",
        "conditional": true
      }
    ],
    "config_files": [
      "Servers/{{ServerID}}/Server/Commands.dat",
      "Servers/{{ServerID}}/WorkshopDownloadConfig.json",
      "Servers/{{ServerID}}/Rocket/Rocket.config.xml",
      "Servers/{{ServerID}}/OpenMod/openmod.unturned.yaml"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -batchmode -nographics {{$FormattedArgs}} +{{ServerType}}/{{ServerID}}",
    "provenance": "unturned.kvp"
  },
  {
    "id": "ut2004",
    "name": "Unreal Tournament 2004",
    "description": "Unreal Tournament 2004 Dedicated Server. Based on v3369.3 and added bonus packs, with OldUnreal Patches",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 7778
      },
      {
        "name": "Webserver Port",
        "proto": "tcp",
        "port": 8888
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Bringing Level (?:.+?) up for play \\(\\d+\\) appSeconds: \\d+\\.\\d+\\.\\.\\.$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "config_files": [
      "System/UT2004.ini"
    ],
    "art_steam_app_id": "13230",
    "wine": false,
    "entrypoint_hint": "server {{MapName}}?{{$FormattedArgs}} ini=UT2004.ini log=server.log port={{$GamePort}} {{$PlatformArgs}}",
    "provenance": "ut2004.kvp"
  },
  {
    "id": "ut99",
    "name": "Unreal Tournament 99",
    "description": "Unreal Tournament (UT99) Dedicated Server. Based on v436 official server, with Bonus Packs 1 to 4 plus OldUnreal patch as selected by user",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 7778
      },
      {
        "name": "Master Server Port 1",
        "proto": "udp",
        "port": 7779
      },
      {
        "name": "Master Server Port 2",
        "proto": "udp",
        "port": 7780
      },
      {
        "name": "Master Server Port 3",
        "proto": "udp",
        "port": 7781
      },
      {
        "name": "Master Server Port 4",
        "proto": "udp",
        "port": 7782
      },
      {
        "name": "Webserver Port",
        "proto": "tcp",
        "port": 8888
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Game engine initialized$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Bonus Pack 4 Download",
        "url": "https://unreal-archive-files-eu.s3.de.io.cloud.ovh.net/managed/Unreal%20Tournament/patches-updates/bonus-packs/utbonuspack4-zip.zip",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "OldUnreal Patch Download",
        "url": "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v469b/OldUnreal-UTPatch469b-Windows.zip",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "OldUnreal Patch Download",
        "url": "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v469c/OldUnreal-UTPatch469c-Windows.zip",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "OldUnreal Patch Download",
        "url": "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v469d/OldUnreal-UTPatch469d-Windows.zip",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "OldUnreal Patch Download",
        "url": "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v469e/OldUnreal-UTPatch469e-Windows-x86.zip",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "OldUnreal Patch Download",
        "url": "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v469b/OldUnreal-UTPatch469b-Linux.tar.bz2",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "OldUnreal Patch Download",
        "url": "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v469c/OldUnreal-UTPatch469c-Linux-amd64.tar.bz2",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "OldUnreal Patch Download",
        "url": "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v469c/OldUnreal-UTPatch469c-Linux-x86.tar.bz2",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "OldUnreal Patch Download",
        "url": "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v469d/OldUnreal-UTPatch469d-Linux-amd64.tar.bz2",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "OldUnreal Patch Download",
        "url": "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v469d/OldUnreal-UTPatch469d-Linux-x86.tar.bz2",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "OldUnreal Patch Download",
        "url": "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v469e/OldUnreal-UTPatch469e-Linux-amd64.tar.bz2",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "OldUnreal Patch Download",
        "url": "https://github.com/OldUnreal/UnrealTournamentPatches/releases/download/v469e/OldUnreal-UTPatch469e-Linux-x86.tar.bz2",
        "target_path": "{{$FullRootDir}}",
        "conditional": true
      },
      {
        "kind": "direct",
        "name": "Server Config Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/ut99UnrealTournament.ini",
        "target_path": "{{$FullBaseDir}}System"
      }
    ],
    "config_files": [
      "System/_AMP_UnrealTournament.ini",
      "System/User.ini"
    ],
    "art_steam_app_id": "13240",
    "wine": false,
    "entrypoint_hint": "server {{MapName}}?{{$FormattedArgs}} ini=../System/_AMP_UnrealTournament.ini userini=../System/User.ini log=server.log port={{$GamePort}} {{$PlatformArgs}}",
    "provenance": "ut99.kvp"
  },
  {
    "id": "v-rising",
    "name": "V Rising",
    "description": "V Rising Dedicated Server with BepInEx Option",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1829350",
      "game_app_id": "1604030",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 9876
      },
      {
        "name": "Steam Query Port",
        "proto": "udp",
        "port": 9877
      },
      {
        "name": "RCON Port",
        "proto": "tcp",
        "port": 25575
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": " ",
      "join": "^User '{Steam (?P\u003cuserid\u003e\\d+)}' '\\d+', approvedUserIndex: \\d+, Character: '(?P\u003cusername\u003e.+?)?' connected as ID '\\d+,\\d+', Entity '[\\d,]+'\\.$",
      "leave": "^User '{Steam (?P\u003cuserid\u003e\\d+)}' disconnected. approvedUserIndex: \\d+ Reason: (.+?) (.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1829350",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Winescript Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/v-risingwinescript.sh",
        "target_path": "{{$FullInstanceDir}}",
        "conditional": true
      }
    ],
    "config_files": [
      "save-data/Settings/ServerHostSettings.json",
      "save-data/Settings/ServerGameSettings.json",
      "doorstop_config.ini",
      "BepInEx/config/BepInEx.cfg"
    ],
    "art_steam_app_id": "1604030",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -persistentDataPath \"{{$FullBaseDir}}save-data\" -lanMode {{lanMode}}",
    "ported": true,
    "module_id": "v-rising",
    "provenance": "v-rising.kvp"
  },
  {
    "id": "valheim",
    "name": "Valheim",
    "description": "Includes optional support for ValheimPlus and BepinEx",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "896660",
      "game_app_id": "892970"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 2456
      },
      {
        "name": "Steam Query Port",
        "proto": "udp",
        "port": 2457
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^(?:\\[[\\d\\/]+ [\\d:]+\\] )?Game server connected$",
    "events": {
      "join": "^(?:\\[[\\d\\/]+ [\\d:]+\\] )?Got character ZDOID from (?P\u003cusername\u003e.+?) : (?P\u003cuserid\u003e-?\\d+):\\d+$",
      "leave": "^(?:\\[[\\d\\/]+ [\\d:]+\\] )?Destroying abandoned non persistent zdo -?\\d+:\\d+ owner (?P\u003cuserid\u003e-?\\d+)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "896660"
      },
      {
        "kind": "github",
        "name": "ValheimPlus Download",
        "repo": "Grantapher/ValheimPlus",
        "asset_regex": "WindowsServer.zip",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "ValheimPlus Download",
        "repo": "Grantapher/ValheimPlus",
        "asset_regex": "UnixServer.zip",
        "conditional": true
      },
      {
        "kind": "github",
        "name": "Settings File Download",
        "repo": "Grantapher/ValheimPlus",
        "asset_regex": "valheim_plus.cfg",
        "target_path": "{{$FullBaseDir}}BepInEx/config",
        "conditional": true
      }
    ],
    "config_files": [
      "./BepInEx/config/valheim_plus.cfg"
    ],
    "art_steam_app_id": "892970",
    "wine": false,
    "entrypoint_hint": "-name \"{{ServerName}}\" -port {{$ApplicationPort1}} -world \"{{WorldName}}\" -password \"{{ServerPassword}}\" {{$FormattedArgs}} -savedir \"Saves\" {{crossplay}}",
    "ported": true,
    "module_id": "valheim",
    "provenance": "valheim.kvp"
  },
  {
    "id": "vein",
    "name": "VEIN",
    "description": "VEIN Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "2131400",
      "game_app_id": "1857950"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27015
      },
      {
        "name": "RCON Port",
        "proto": "udp",
        "port": 7878
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d.]+-[\\d.:]+\\]\\[[\\d ]+\\]LogInit: Display: Game Engine Initialized\\.$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogNet: Login request: (?:\\?Password=.*)?\\?Name=(?P\u003cusername\u003e.+?)\\?\\?ID=(?P\u003cuserid\u003e\\d+?)\\?Ticket=(?:.*) userId: (?:.*) platform: (?:.*)$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.:]+\\]\\[[\\d ]+\\]LogNet: UChannel::CleanUp: ChIndex == \\d+\\. Closing connection\\. (?:.*?) RemoteAddr: (?P\u003cuserid\u003e\\d+?):\\d+, (?:.*?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "VEIN Download",
        "app_id": "2131400"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007"
      }
    ],
    "config_files": [
      "Vein/Saved/Config/WindowsServer/Game.ini",
      "Vein/Saved/Config/LinuxServer/Game.ini"
    ],
    "art_steam_app_id": "1857950",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} Vein -Port={{$GamePort}} -QueryPort={{$QueryPort}} {{MultiHome}}{{$FormattedArgs}} -UseGameSaveDir -stdout -FullStdOutLogOutput",
    "ported": true,
    "module_id": "vein",
    "provenance": "vein.kvp"
  },
  {
    "id": "veloren",
    "name": "Veloren",
    "description": "Veloren Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 14004
      },
      {
        "name": "Metrics Port",
        "proto": "tcp",
        "port": 14005
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d-]+T[\\d:]+\\.\\d+Z\\s+INFO veloren_server_cli: Server is ready to accept connections\\.(?:.+?)$",
    "events": {
      "chat": "^$",
      "join": "^[\\d-]+T[\\d:]+\\.\\d+Z\\s+INFO network{(?:.+?)}: veloren_network_protocol::handshake: This Handshake is now configured! pid=(?P\u003csessionid\u003e.+?)$",
      "leave": "^[\\d-]+T[\\d:]+\\.\\d+Z\\s+INFO ((?:.+?)remote{p=(?P\u003csessionid\u003e.+?)}: veloren_network::api: Participant already has been shutdown gracefully|veloren_server_cli::shutdown_coordinator: Shutting down)$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://download.veloren.net/latest/windows/x86_64/{{ReleaseVersion}}",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://download.veloren.net/latest/linux/x86_64/{{ReleaseVersion}}",
        "target_path": "{{$FullRootDir}}"
      },
      {
        "kind": "direct",
        "name": "Settings Template Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/velorensettings.ron",
        "target_path": "{{$FullBaseDir}}userdata/server/server_config/"
      }
    ],
    "config_files": [
      "userdata/server/server_config/settings.ron"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} {{$FormattedArgs}}",
    "provenance": "veloren.kvp"
  },
  {
    "id": "vintage-story",
    "name": "Vintage Story (Legacy)",
    "description": "Vintage Story Dedicated Server, up to v1.18.7",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "tcp",
        "port": 42420
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d.]*\\s*[\\d:]+ \\[Server Event\\] Dedicated Server now running on Port \\d+ and (all ips|ip .*)!$",
    "events": {
      "chat": "^[\\d.]*\\s*[\\d:]+ \\[Server Chat\\] (?P\u003cusername\u003e.+?): \u003cstrong\u003e(?P\u003cusername\u003e.+?):\u003c/strong\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^[\\d.]*\\s*[\\d:]+ \\[Server Event\\] (?P\u003cusername\u003e.+?) [\\[\\]a-f\\d:.]+ joins\\.$",
      "leave": "^[\\d.]*\\s*[\\d:]+ \\[Server Event\\] Player (?P\u003cusername\u003e.+?) (left|got removed\\. Reason: Server shutting down - Shutdown via server command).*$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://cdn.vintagestory.at/gamefiles/stable/vs_server_{{ServerVersion}}.tar.gz",
        "target_path": "{{$FullBaseDir}}server"
      }
    ],
    "config_files": [
      "data/serverconfig.json"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} --port {{$ServerPort}} --dataPath \"../data\" {{$FormattedArgs}}",
    "provenance": "vintage-story.kvp"
  },
  {
    "id": "vintage-story-new",
    "name": "Vintage Story 1.18.8+",
    "description": "Vintage Story Dedicated Server, from v1.18.8+",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "both",
        "port": 42420
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d\\.]*\\s*[\\d:\\.]+ \\[.*Event\\] (?:Dedicated Server|Serveur dédié|Dedizierter Server) now running on Port \\d+ and (?:all ips|ip .*)!$",
    "events": {
      "chat": "^[\\d\\.]*\\s*[\\d:\\.]+ \\[.*Chat\\] (?P\u003cusername\u003e.+?): \u003cstrong\u003e(?P\u003cusername\u003e.+?):\u003c/strong\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^[\\d\\.]*\\s*[\\d:\\.]+ \\[.*Event\\] (?P\u003cusername\u003e.+?) [\\[\\]a-f\\d:.]+ joins\\.$",
      "leave": "^[\\d\\.]*\\s*[\\d:\\.]+ \\[.*Event\\] Player (?P\u003cusername\u003e.+?) (left|got removed\\. Reason: Server shutting down - Shutdown via server command).*$"
    },
    "config_files": [
      "data/serverconfig.json"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} --port {{$ServerPort}} --dataPath \"../data\" {{$FormattedArgs}}",
    "provenance": "vintage-story-new.kvp"
  },
  {
    "id": "voyagers-of-nera",
    "name": "Voyagers of Nera",
    "description": "Voyagers of Nera Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "3937860",
      "game_app_id": "2686630",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 7777
      },
      {
        "name": "Beacon Port",
        "proto": "udp",
        "port": 7778
      }
    ],
    "admin_method": "TailLogFile",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.]+:\\d+\\]\\[[\\d ]+\\]LogCommonSession: OnStartSessionComplete\\(SessionName: GameSession, bWasSuccessful: 1\\)$",
    "events": {
      "chat": "^(?:\\[[\\d\\.]+-[\\d\\.]+:\\d+\\]\\[[\\d ]+\\])?$",
      "join": "^\\[[\\d\\.]+-[\\d\\.]+:\\d+\\]\\[[\\d ]+\\]LogNet: Login request: \\?Name=(?P\u003cusername\u003e.+?) userId: RedpointEOS:(?P\u003cuserid\u003e.+?) platform: RedpointEOS$",
      "leave": "^\\[[\\d\\.]+-[\\d\\.]+:\\d+\\]\\[[\\d ]+\\]LogNet: UChannel::Close: Sending CloseBunch\\.(?:.+?) UniqueId: RedpointEOS:(?P\u003cuserid\u003e.+?)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Server Download",
        "app_id": "3937860",
        "platform": "windows"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "CustomHostServerUserSettings.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/voyagers-of-neracustomhostserverusersettings.ini",
        "target_path": "{{$FullBaseDir}}BoatGame/Saved/PersistedData/CustomConfig"
      },
      {
        "kind": "direct",
        "name": "CustomGameUserSettings.ini Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/voyagers-of-neracustomgameusersettings.ini",
        "target_path": "{{$FullBaseDir}}BoatGame/Saved/PersistedData/CustomConfig"
      }
    ],
    "config_files": [
      "BoatGame/Saved/PersistedData/CustomConfig/CustomHostServerUserSettings.ini",
      "BoatGame/Saved/PersistedData/CustomConfig/CustomGameUserSettings.ini"
    ],
    "art_steam_app_id": "2686630",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} BoatGame -Port={{$GamePort}} -log=BoatGame.log -LoggingInShippingEnabled=true {{$FormattedArgs}} {{CustomArgs}}",
    "provenance": "voyagers-of-nera.kvp"
  },
  {
    "id": "windrose",
    "name": "Windrose",
    "description": "Windrose Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "4129620",
      "game_app_id": "3041230",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "both",
        "port": 7777
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\.]+-[\\d\\.]+:\\d+\\]\\[[\\d ]+\\]LogGlobalStatus: UEngine::LoadMap Load map complete.*$",
    "events": {
      "join": "^\\s+ServerAccount\\. AccountName '(?P\u003cusername\u003e.+?)'\\. AccountId (?P\u003cuserid\u003e.+?)\\. PlayerState .*$",
      "leave": "^.*?::MoveAccountToListOfDisconnected +Account disconnected\\. AccountId (?P\u003cuserid\u003e\\S+)$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "Windrose Download",
        "app_id": "4129620",
        "platform": "windows"
      },
      {
        "kind": "steamcmd",
        "name": "SteamCMD Component Download",
        "app_id": "1007",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Default ServerDescription.json Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/windroseserverdescription.json",
        "target_path": "{{$FullBaseDir}}R5"
      }
    ],
    "config_files": [
      "R5/ServerDescription.json"
    ],
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} R5 {{$FormattedArgs}} -stdout -FullStdOutLogOutput",
    "ported": true,
    "module_id": "windrose",
    "provenance": "windrose.kvp"
  },
  {
    "id": "windward",
    "name": "Windward",
    "description": "Windward Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "tcp",
        "port": 5127
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\/]+ [\\d:]+\\] Game server started on port \\d+ using protocol version \\d+$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\/]+ [\\d:]+\\] (?P\u003cusername\u003e.+?) \\((?:[\\d\\.:]+?), (?:.+?), (?P\u003cuserid\u003e.+?)\\): Passed a ban check: (?:.+)$",
      "leave": "^\\[[\\d\\/]+ [\\d:]+\\] (?P\u003cusername\u003e.+?) \\((?:[\\d\\.:]+?)\\): Disconnected \\[\\d+\\]$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "http://www.tasharen.com/windward/WWServer.zip",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "steam_login_required": true,
    "art_steam_app_id": "326410",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -tcp {{$GamePort}} -http -localPath {{$FormattedArgs}} {{public}}",
    "provenance": "windward.kvp"
  },
  {
    "id": "windward-horizon",
    "name": "Windward Horizon",
    "description": "Windward Horizon Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Game Port",
        "proto": "tcp",
        "port": 5137
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^\\[[\\d\\/]+ [\\d:]+\\] Game server started on port \\d+ using protocol version \\d+$",
    "events": {
      "chat": "^$",
      "join": "^\\[[\\d\\/]+ [\\d:]+\\] (?P\u003cusername\u003e.+?) \\((?:[\\d\\.:]+?), (?:.+?), (?P\u003cuserid\u003e.+?)\\): Passed a ban check: (?:.+)$",
      "leave": "^\\[[\\d\\/]+ [\\d:]+\\] (?P\u003cusername\u003e.+?) \\((?:[\\d\\.:]+?)\\): Disconnected \\[\\d+\\]$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "http://www.tasharen.com/wh/WHServer.zip",
        "target_path": "{{$FullBaseDir}}"
      }
    ],
    "steam_login_required": true,
    "art_steam_app_id": "2665460",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -port {{$GamePort}} -lan {{$ApplicationIPBinding}} -http {{public}}-app \"{{$FullBaseDir}}\" {{$FormattedArgs}}",
    "provenance": "windward-horizon.kvp"
  },
  {
    "id": "wolfenstein-et",
    "name": "Wolfenstein: Enemy Territory",
    "description": "Wolfenstein: Enemy Territory Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "1873030",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 27960
      }
    ],
    "rcon_adapter": "quake_rcon",
    "admin_method": "QuakeRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "1873030",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/wolfenstein-etserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "etmain/server.cfg"
    ],
    "steam_login_required": true,
    "art_steam_app_id": "1873030",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} +set fs_homepath \"{{$FullBaseDir}}\" +set net_port {{$ServerPort}} +set net_ip {{$ApplicationIPBinding}} +set rconpassword \"{{$RemoteAdminPassword}}\" {{$FormattedArgs}} +exec server.cfg",
    "provenance": "wolfenstein-et.kvp"
  },
  {
    "id": "wreckfest",
    "name": "Wreckfest",
    "description": "Wreckfest Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "361580",
      "game_app_id": "228380",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 33540
      },
      {
        "name": "Steam Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27016
      }
    ],
    "admin_method": "TailLogFile",
    "ready_pattern": "^[\\d:]+ Server connected\\.$",
    "events": {
      "chat": "^[\\d:]+ (?P\u003cusername\u003e.+?): (?P\u003cmessage\u003e.+)$",
      "join": "^[\\d:]+ Player (?P\u003cusername\u003e.+?) \\((?P\u003cuserid\u003e.+?)\\) connected\\.$",
      "leave": "^[\\d:]+ Player (?P\u003cusername\u003e.+?) \\((?P\u003cuserid\u003e.+?)\\) disconnected\\.$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "361580",
        "platform": "windows"
      }
    ],
    "config_files": [
      "server_config.cfg"
    ],
    "art_steam_app_id": "228380",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} -s server_config=server_config.cfg --save-dir={{$FullBaseDir}}saved -server_set game_port={{$GamePort}} steam_port={{$SteamPort}} query_port={{$QueryPort}} {{$FormattedArgs}}",
    "provenance": "wreckfest.kvp"
  },
  {
    "id": "wreckfest2",
    "name": "Wreckfest 2",
    "description": "Wreckfest 2 Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "3519390",
      "game_app_id": "1203190",
      "platform": "windows"
    },
    "ports": [
      {
        "name": "Game Port",
        "proto": "udp",
        "port": 30100
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^[\\d:\\.]+: Server Started$",
    "events": {
      "chat": "^$",
      "join": "^$",
      "leave": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "3519390",
        "platform": "windows"
      },
      {
        "kind": "direct",
        "name": "Server_config.scnf Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/wreckfest2server_config.scnf",
        "target_path": "{{$FullBaseDir}}server_data"
      },
      {
        "kind": "direct",
        "name": "Server_privilege.sprv Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/wreckfest2server_privilege.sprv",
        "target_path": "{{$FullBaseDir}}server_data"
      }
    ],
    "config_files": [
      "server_data/server_config.scnf"
    ],
    "art_steam_app_id": "1203190",
    "wine": true,
    "entrypoint_hint": "{{$PlatformArgs}} --server --save-dir=.\\server_data {{$FormattedArgs}}",
    "provenance": "wreckfest2.kvp"
  },
  {
    "id": "wurm-unlimited",
    "name": "Wurm Unlimited",
    "description": "Wurm Unlimited Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "402370",
      "game_app_id": "366220"
    },
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 8766
      },
      {
        "name": "Query Port",
        "proto": "udp",
        "port": 27016
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Wurm Server launcher finished at.+$",
    "events": {
      "chat": "^\\[\\d\\d:\\d\\d:\\d\\d\\] \\[CHAT\\] \u003c(?P\u003cusername\u003e.+?)\u003e (?P\u003cmessage\u003e.+)$",
      "join": "^Client was Authenticated$",
      "leave": "^Client was NOT Authenticated$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Download",
        "app_id": "402370"
      }
    ],
    "config_files": [
      "./LaunchConfig.ini"
    ],
    "art_steam_app_id": "366220",
    "wine": false,
    "entrypoint_hint": "ip=\"{{$ApplicationIPBinding}}\" externalport=\"{{$ApplicationPort1}}\" queryport=\"{{$ApplicationPort2}}\" {{$FormattedArgs}}",
    "provenance": "wurm-unlimited.kvp"
  },
  {
    "id": "xonotic",
    "name": "Xonotic",
    "description": "Xonotic Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "ports": [
      {
        "name": "Server Port",
        "proto": "udp",
        "port": 26000
      }
    ],
    "rcon_adapter": "stdio",
    "admin_method": "STDIO",
    "ready_pattern": "^Server listening on address [\\d.:]*$",
    "events": {
      "chat": "^(\u001b\\[[;\\d]*m)?(?P\u003cusername\u003e.+?)(\u001b\\[m)?: (?P\u003cmessage\u003e.+?)$",
      "join": "^(?P\u003cusername\u003e.+?) connected$",
      "leave": "^Client \"(?P\u003cusername\u003e.+?)\" dropped$"
    },
    "update_stages": [
      {
        "kind": "direct",
        "name": "Server Download",
        "url": "https://{{ServerReleaseStream}}-{{ServerVersion}}.zip",
        "target_path": "./"
      },
      {
        "kind": "direct",
        "name": "Config File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/xonoticserver.cfg",
        "target_path": "../"
      }
    ],
    "config_files": [
      "ServerData/data/server.cfg"
    ],
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} +serverconfig server.cfg -userdir \"{{$FullBaseDir}}ServerData\" {{$FormattedArgs}}",
    "provenance": "xonotic.kvp"
  },
  {
    "id": "zombie-panic-source",
    "name": "Zombie Panic! Source",
    "description": "Zombie Panic! Source Dedicated Server",
    "os": [
      "Windows",
      "Linux"
    ],
    "steam": {
      "app_id": "17505",
      "game_app_id": "17500"
    },
    "ports": [
      {
        "name": "Game and RCON Port",
        "proto": "both",
        "port": 27015
      },
      {
        "name": "SourceTV Port",
        "proto": "udp",
        "port": 27020
      },
      {
        "name": "Client Port",
        "proto": "udp",
        "port": 27005
      }
    ],
    "rcon_adapter": "source_rcon",
    "admin_method": "SourceRCON",
    "ready_pattern": "^$",
    "events": {
      "chat": "^$"
    },
    "update_stages": [
      {
        "kind": "steamcmd",
        "name": "SteamCMD Server Download",
        "app_id": "17505"
      },
      {
        "kind": "direct",
        "name": "Server.cfg Template File Download",
        "url": "https://raw.githubusercontent.com/CubeCoders/AMPTemplates/main/zombie-panic-sourceserver.cfg",
        "target_path": "{{$FullRootDir}}"
      }
    ],
    "config_files": [
      "zps/cfg/server.cfg"
    ],
    "art_steam_app_id": "17500",
    "wine": false,
    "entrypoint_hint": "{{$PlatformArgs}} -game zps -console -usercon -nobreakpad -port {{$ServerPort}} -ip {{$ApplicationIPBinding}} -maxplayers {{$MaxUsers}} -tickrate {{tickrate}} {{insecure}}{{nohltv}}{{CustomParameters}} {{CustomConVars}} +tv_port {{$SourceTVPort}} +clientport {{$ClientPort}} +sv_logfile 1 {{$FormattedArgs}} +exec server.cfg +map {{map}} +log on",
    "provenance": "zombie-panic-source.kvp",
    "notes": [
      "join regex dropped: does not compile as Go regexp",
      "leave regex dropped: does not compile as Go regexp"
    ]
  }
]
