This is an old revision of the document!
Table of Contents
Dedicated Server Settings
Server hosting for TTT is still early and subject to change. We will update this page and add more under this category over time.
This page does not explain how to install or start a baseline s&box dedicated server. For general s&box dedicated server setup, see: s&box Dedicated Servers
Basics
Our game ident:
thieves.terrortown
TTT-specific config file:
server_settings.json
On a SteamCMD dedicated install, this should be under the game data folder for the package ident you are running.
Example:
steamcmd/ttt/data/thieves/terrortown/server_settings.json
Important!
Choose the server startup map like so:
+game thieves.terrortown thieves.rooftops
The first map ident after the game ident is the startup map. TTT remembers that native startup map as the empty-server reset map. Choose a map that was made for TTT, or there won't be any weapons for players.
Do not configure startup map through server_settings.json. The old Server.StartupMap field is deprecated and ignored.
Basic server_settings.json Example
The file will be automatically generated the first time you launch TTT. The below is a shortened example. The generated file will include the full curated map list.
- server_settings.json
{ "SchemaVersion": 1, "Server": {}, "Lobby": { "MaxPlayers": 24, "Privacy": 0, "MinPlayerCount": 2, "MaxRounds": 6, "RoundTimeMinutes": 30, "PrepareDurationSeconds": 20, "HasteMode": true, "MapVoteOptionCount": 10, "AllowPlayerCosmetics": true, "ProximityVoiceEnabled": false, "ProximityVoiceRange": 2000, "KarmaEnabled": true }, "MapVote": { "Maps": "thieves.rooftops;thieves.whitehouse;thieves.minecraft_t5" }, "AdminSteamIds": [] }
Server Settings
SchemaVersion
Generated by the game for future migrations. Leave this alone.
Server
Currently no active settings are required under Server.
Older configs may contain:
"StartupMap": "thieves.rooftops"
This field is now ignored. Set the startup map in the native launch command instead:
+game thieves.terrortown thieves.rooftops
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": 5
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
Lobby.ProximityVoiceEnabled
Controls whether normal alive-player voice is limited by distance during active rounds.
"ProximityVoiceEnabled": false
Traitor and detective team voice channels remain team-routed. Dead-player voice behavior remains controlled by the normal dead/alive voice filter.
Lobby.ProximityVoiceRange
Voice range in world units when proximity voice is enabled.
"ProximityVoiceRange": 2000
Allowed range: 500 to 5000.
Lobby.KarmaEnabled
Controls whether karma rules are enabled.
"KarmaEnabled": true
Map Vote Rotation
The map vote pool is configured through:
"MapVote": {
"Maps": "thieves.rooftops;thieves.dolls;throwupproducs.islandtropical"
}
Separate map idents with semicolons, commas or newlines.
orgident.mapident;orgident.mapident
Duplicate entries are collapsed. Maps outside the built-in curated list are ignored for dedicated map vote rotation. Make sure at least one valid map remains.
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.
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. - Check the server console for
[server.launch]messages to confirm the native boot map.
Useful successful load message:
[server.settings] loaded path=server_settings.json lobby=True vote_maps=18 admin_count=1
If an old config still contains Server.StartupMap, you may see:
[server.settings] loaded path=server_settings.json lobby=True vote_maps=18 admin_count=1 legacy_startup_map_ignored=thieves.rooftops
Useful failure message:
[server.settings] failed_to_load path=server_settings.json error=...
Useful launch message:
[server.launch] boot_context game=thieves.terrortown boot_map=thieves.rooftops launch_map=thieves.rooftops source=GameNetworkManager.OnStart dedicated=True
Current Limitations
- Settings are read once when the server process starts.
- Restart the server after editing
server_settings.json. - Missing fields may be filled in with defaults on startup; existing values in your active config should not be overwritten.
- Keep
Lobby.MaxPlayersaligned with any external server-manager player limit. - Set the startup map with the native launch command, not
server_settings.json. - Dedicated server support is still early and may change.