Skip to content

Quick start

Configuration

The server reads settings from server_config.json (created on first run under the MelonLoader user data directory).

Required

  • saveGamePath: Full path to the save folder to host.
  • Windows: escape backslashes: C:\\Users\\you\\AppData\\LocalLow\\TVGS\\Schedule I\\Saves\\<SteamID>\\SaveGame_1
  • Must contain files like Game.json, Metadata.json, etc.
  • serverPort (default 38465)
  • serverName, serverDescription
  • publicServer (true/false)

Authentication

Use Steam ticket authentication on public servers to verify player identities:

{
  "requireAuthentication": true,
  "authProvider": "SteamGameServer",
  "authTimeoutSeconds": 15,
  "authAllowLoopbackBypass": true,
  "steamGameServerLogOnAnonymous": true,
  "steamGameServerQueryPort": 27016,
  "steamGameServerMode": "Authentication"
}

Quick reference: - authProvider options: None, SteamGameServer, SteamWebApi - SteamGameServer is recommended for public servers - None is acceptable for private LAN servers - SteamWebApi is not fully implemented (use SteamGameServer instead)

đź“– See Authentication Guide for: - Detailed comparison of all auth providers with pros/cons - Configuration examples for each provider - Troubleshooting authentication issues - Security best practices

Messaging Backend

Choose how custom server-client messages are transmitted:

{
  "messagingBackend": "FishNetRpc"
}

Recommended backends: - FishNetRpc (default) - Recommended for Mono builds - Simple, works out-of-the-box - SteamNetworkingSockets - Recommended for IL2CPP/dedicated servers - Modern Steam sockets, production-ready

Not recommended: - SteamP2P - ⚠️ Only works with Steam client launch (not dedicated server builds). Use SteamNetworkingSockets or FishNetRpc instead.

đź“– See Messaging Backends Guide for: - Detailed comparison of all backends with pros/cons - Why SteamP2P should be avoided for dedicated servers - When to use each backend - Configuration examples - Performance and security considerations

Access control

  • operators: Full permissions and all commands.
  • admins: Limited commands defined by allowedCommands; denied those in restrictedCommands.
  • bannedPlayers: SteamID64 strings blocked from joining.

Auto-save

  • autoSaveEnabled: true/false
  • autoSaveIntervalMinutes: minutes between periodic saves
  • autoSaveOnPlayerJoin / autoSaveOnPlayerLeave

Gameplay

  • ignoreGhostHostForSleep: Ignore loopback client in sleep checks.
  • timeNeverStops: Prevents 4AM freeze; time continues overnight.
  • timeProgressionMultiplier: 1.0 is normal speed.

Master Server Registration

Optionally register your server with a master server list:

{
  "registerWithMasterServer": false,
  "masterServerUrl": "https://s1-server-list.example.com",
  "masterServerApiKey": "",
  "masterServerServerId": "",
  "masterServerOwnerContact": "",
  "publicServerAddress": ""
}

Note: Master server integration is currently experimental.

TCP Console

Enable remote console access via TCP for server administration:

{
  "tcpConsoleEnabled": false,
  "tcpConsoleBindAddress": "127.0.0.1",
  "tcpConsolePort": 38466,
  "tcpConsoleRequirePassword": false,
  "tcpConsolePassword": ""
}
  • tcpConsoleBindAddress: Use "127.0.0.1" for local-only access, "0.0.0.0" for all interfaces
  • Enable password protection for remote access
  • Bind to localhost (127.0.0.1) by default for security

Performance Settings

Configure server performance parameters:

{
  "targetFrameRate": 60,
  "vSyncCount": 0
}
  • targetFrameRate: Target FPS for server (30-60 recommended for dedicated servers, -1 for unlimited)
  • vSyncCount: VSync setting (should be 0 for dedicated servers)

Starting the server

  • Use start_server.bat from server.zip to launch the dedicated server install.

The server will refuse to start if saveGamePath is not set.

Networking (port forwarding)

  • To allow players outside your local network to connect, you must port forward the value of serverPort (default 38465) from your router to the server machine's local IP.
  • Protocol: forward both TCP and UDP.
  • Ensure your OS firewall allows inbound connections on the forwarded port.
  • Players should connect using your public IP and the forwarded port.

Helpful guides:

Notes:

  • Some ISPs use CGNAT; port forwarding may not work. In that case, request a public IPv4, use IPv6, or host on a VPS.