Skip to content

Full Runfile Example

JLangisch edited this page Dec 23, 2025 · 1 revision

SteamServerUI Runfile Template

Caution

NOTE: This file includes // comments for explanation — REMOVE ALL COMMENTS before using! JSON does not support comments, so this is invalid JSON until cleaned.

{
  // === Meta Information ===
  // Documentation: https://github.com/SteamServerUI/runfiles/wiki/Core-Structure
  "meta": {
    "name": "Somegame",                  // MUST exactly match the <Gamename> in filename: runSomegame.ssui
    "version": "1.0",                  // Your runfile version
    "author": "YourName",              // Optional: Your name or handle
    "image": "https://example.com/banner.jpg",  // Optional: Banner for Dashboard
    "logo": "https://example.com/icon.jpg"      // Optional: Square logo/icon for Dashboard
  },

  // === Core Server Info ===
  // Documentation: https://github.com/SteamServerUI/runfiles/wiki/Core-Structure
  "steam_app_id": "123456",            // Required: Steam AppID (numeric string)
  "backup_content_dir": "./saves",     // Optional: Folder SSUI will backup/restore

  // Executables — at least one required for the host OS
  "windows_executable": "./MyGameServer.exe",     // Must end with .exe
  "linux_executable": "./MyGameServer.x86_64",    // Must NOT end with .exe
  "architecture": "all", //"windows", "linux" or "both" / "all"

  // Future use — currently ignored
  // "steam_login_required": false,

  // === Arguments ===
  // Documentation: https://github.com/SteamServerUI/runfiles/wiki/Arguments and https://github.com/SteamServerUI/runfiles/wiki/Special-arg-fields
  "args": {
    // Recommended categories: "basic", "network", "advanced"
    "basic": [
      {
        // Standard flag with a value
        "flag": "-serverName",
        "value": "My Awesome Server",
        "required": true,
        "requires_value": true,
        "description": "Name shown in server browser",
        "type": "string",
        "ui_label": "Server Name",
        "ui_group": "basic",
        "weight": 10
      },
      {
        // Optional flag (skipped if value empty)
        "flag": "-password",
        "value": "",
        "required": false,
        "requires_value": true,
        "description": "Leave empty for no password",
        "type": "string",
        "ui_label": "Server Password",
        "ui_group": "basic",
        "weight": 20
      },
      {
        // Always-on hidden flag (e.g., headless mode)
        "flag": "-nographics",
        "value": "",
        "required": true,
        "requires_value": false,
        "description": "Required for dedicated servers",
        "type": "bool",
        "special": "hide_in_ui",       // Never shown in UI
        "ui_label": "Headless Mode (hidden)",
        "ui_group": "basic",
        "weight": 5
      },
      {
        // Flagless/positional parameter
        "flag": "SaveName",            // Flag name is just for reference
        "value": "MyWorld",
        "required": true,
        "requires_value": true,
        "description": "Name of the save/world",
        "type": "string",
        "special": "dont_append_flag_just_value",  // Only value is added
        "ui_label": "Save Name",
        "ui_group": "basic",
        "weight": 30
      },
      {
        // OS-specific argument
        "flag": "-logFile",
        "value": "./server.log",
        "required": false,
        "requires_value": true,
        "description": "Log file path (Linux only example)",
        "type": "string",
        "ui_label": "Log File",
        "ui_group": "basic",
        "weight": 40,
        "os": "linux"                  // Only included on Linux
      }
    ],

    "network": [
      {
        "flag": "-port",
        "value": "2456",
        "required": true,
        "requires_value": true,
        "description": "Game port",
        "type": "int",
        "ui_label": "Port",
        "ui_group": "network",
        "weight": 100
      }
    ],

    "advanced": [
      {
        "flag": "--maxPlayers",
        "value": "16",
        "required": false,
        "requires_value": true,
        "description": "Maximum players",
        "type": "int",
        "ui_label": "Max Players",
        "ui_group": "advanced",
        "weight": 200,
        "min": 1,       // Currently unused by backend (planned for UI)
        "max": 64
      },
      {
        // Example of a disabled arg (completely skipped)
        "flag": "--someOldOption",
        "value": "",
        "required": false,
        "requires_value": false,
        "description": "Old option no longer used",
        "type": "bool",
        "ui_label": "Old Option",
        "ui_group": "advanced",
        "weight": 300,
        "disabled": true
      }
    ]
  },

  // Exposed Config Files
  // Documentation: https://github.com/SteamServerUI/runfiles/wiki/Exposed-files
  "files": [
    {
      "filename": "serverconfig.ini",
      "filepath": "./config/serverconfig.ini",
      "type": "ini",                  // json, ini, xml, yaml, or text
      "description": "Main server configuration file"
    },
    {
      "filename": "settings.json",
      "filepath": "./settings.json",
      "type": "json",
      "description": "Additional game settings"
    }
  ]
}

Save as: runMyGame.ssui (replace MyGame with your game's identifier) Remove all // comments and this bottom comment before use!

Clone this wiki locally