User Tools

Site Tools


configuring_your_server

This is an old revision of the document!


Dedicated Server Settings

Server hosting for TTT is very early and subject to MANY changes.

This page does not explain how to install or start a baseline s&box dedicated server.

For general s&box dedicated server setup, see:

Basics

Our game ident:

thieves.terrortown

TTT-specific config file:

server_settings.json

On a SteamCMD dedicated install, this should be under the terrortown data folder:

steamcmd/ttt/data/thieves/terrortown/server_settings.json

Important!

For TTT dedicated servers, set the server starting map in server_settings.json:

Server.StartupMap

Do not use a native server manager map field (+map) for your startup map. It will break on map change.

If your server manager requires a map value, use a blank or placeholder value there, then configure the real startup map in server_settings.json.

Basic Example

This will be automatically generated the first time you launch TTT.

server_settings.json
{
  "SchemaVersion": 1,
  "Server": {
    "StartupMap": "thieves.rooftops"
  },
  "Lobby": {
    "MaxPlayers": 24,
    "Privacy": 0,
    "MinPlayerCount": 2,
    "MaxRounds": 6,
    "RoundTimeMinutes": 30,
    "PrepareDurationSeconds": 20,
    "HasteMode": true,
    "MapVoteOptionCount": 8,
    "AllowPlayerCosmetics": true
  },
  "MapVote": {
    "Maps": "thieves.rooftops;thieves.dolls;throwupproducs.islandtropical"
  },
  "AdminSteamIds": []
}

Server settings

SchemaVersion

Generated by the game based on current version. Don't touch this one!

Server.StartupMap

The map the dedicated server should load on startup.

Example:

"StartupMap": "thieves.rooftops"

This is also used as the server's reset map when empty-server reset is enabled.

Lobby Settings

Lobby.MaxPlayers

Maximum player count for the Terror Town lobby.

"MaxPlayers": 24

Keep this aligned with any external server manager max-player setting.

Lobby.Privacy

Controls lobby privacy.

Value Meaning
0 Public
1 Private
2 Friends Only

For public dedicated servers, use:

"Privacy": 0

Lobby.MinPlayerCount

Minimum number of players required before normal round start behavior can proceed.

"MinPlayerCount": 2

Lobby.MaxRounds

Maximum number of rounds before the normal end-of-match or map-vote flow.

"MaxRounds": 6

Lobby.RoundTimeMinutes

Base round time limit, in minutes.

"RoundTimeMinutes": 30

Lobby.PrepareDurationSeconds

Preparation phase duration before a round starts, in seconds.

"PrepareDurationSeconds": 20

Lobby.HasteMode

Controls whether haste mode timing is enabled.

"HasteMode": true

Lobby.MapVoteOptionCount

Maximum number of map choices shown during a map vote.

"MapVoteOptionCount": 8

Allowed range: 3 to 12.

Lobby.AllowPlayerCosmetics

Controls whether player cosmetics are allowed.

"AllowPlayerCosmetics": true

Map vote rotation

The map vote pool is configured through:

"MapVote": {
  "Maps": "thieves.rooftops;thieves.dolls;throwupproducs.islandtropical"
}

Separate map idents with semicolons:

thieves.rooftops;thieves.dolls;throwupproducs.islandtropical

You can also separate maps with commas or new lines, but semicolons are recommended for readability.

Invalid, unsupported, or duplicate map entries may be ignored.

You can print the current built-in map lists from the server console with:

t.server.maps

Admin Steam IDs

Dedicated servers can bootstrap admins with:

"AdminSteamIds": [
  00000000000000000,
  11111111111111111
]

Use SteamID64 values.

Invalid or zero IDs are ignored.

Required config mode

By default, if server_settings.json is missing, the server may create a default config automatically.

If you want the server to close instead when the config is missing or invalid, launch it with:

+t.dedicated.require_server_settings 1

Other dedicated server options

These are launch/convar options, not fields inside server_settings.json.

Option Default Description
t.dedicated.require_server_settings 0 Require a valid server_settings.json.
t.dedicated.empty_reset 1 Reset the server back to its startup map after all real players leave.
t.dedicated.empty_reset.delay 2.0 Delay, in seconds, before empty-server reset runs.

Example file

You can generate an example settings file from the server console:

ttt_write_server_settings_example

This writes:

server_settings.example.json

The example file is only a template. The active config file must still be named:

server_settings.json

Troubleshooting

If your settings are not applying:

  • Make sure the file is named server_settings.json.
  • Make sure the file is in the correct game ident's data folder.
  • Restart the dedicated server after editing the file.
  • Check that your JSON is valid.
  • Check the server console for [server.settings] messages.

Useful successful load message:

[server.settings] loaded path=server_settings.json startup_map=thieves.rooftops lobby=True vote_maps=18 admin_count=1

Useful failure message:

[server.settings] failed_to_load path=server_settings.json error=...

Current limitations

  • Settings are read once when the server process starts.
  • Restart the server after editing server_settings.json.
  • server_settings.example.json is only a template.
  • Missing fields may be filled in with defaults on startup.
  • Existing values in your active config should not be overwritten.
  • Keep Lobby.MaxPlayers aligned with any external server-manager player limit.
  • Dedicated server support is still early and may change.
configuring_your_server.1777681292.txt.gz · Last modified: 2026/05/02 00:21 by frank_lee_smith

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki