======== Dedicated Server Settings ======== **Server hosting for TTT is still early and subject to change.** This page documents the current dedicated-server setup as of 5/14/26. This page does **not** explain how to install or start a baseline s&box dedicated server. For general s&box dedicated server setup, see: [[https://sbox.game/dev/doc/systems/networking-multiplayer/dedicated-servers/|s&box Dedicated Servers]] [[https://physgun.com/help/game-hosting/sbox/how-to-make-a-sbox-server/|How to make a s&box server]] **For the easiest server hosting**, your best option is using [[http://physgun.com/thieves|physgun]]. You can even get 30% off with code "TTT"! {{::phys_ttt.png?400|}} ===== Basics ===== **Live package ident:** thieves.terrortown **Native startup map:** Choose the startup map with the native s&box launch command. The map ident after the game ident is the boot map. TTT also uses that boot map as the empty-server reset map. ===== Launch Example ===== Typical dedicated launch shape (replace ports and map with your values): -headless +game thieves.terrortown thieves.rooftops +hostname "Test" +port 00000 +net_query_port 00000 +net_hide_address 0 ====== Configuration Files ====== TTT currently uses three operator-facing files: ^ File ^ Purpose ^ | ''server_settings.json'' | Small dedicated-server bootstrap config: lobby max players/privacy and curated map rotation. | | ''config/convar/game.json'' | Native s&box saved ConVars. Most gameplay/rule settings live here now. | | ''roles.json'' | Moderator/Admin/Owner role assignments written by TTT role commands. | ===== server_settings.json ===== ''server_settings.json'' lives under the package's game data folder. Example: data/thieves/terrortown/server_settings.json The game creates this file with active defaults the first time a dedicated server starts without one. Current editable shape: { "SchemaVersion": 2, "Lobby": { "MaxPlayers": 24, "Privacy": 0 }, "MapVote": { "Maps": "thieves.rooftops;thieves.whitehouse;thieves.minecraft_t5" } } ==== server_settings.json Fields ==== ^ Field ^ Default ^ Description ^ | ''SchemaVersion'' | 2 | Generated by the game for future migrations. Leave this alone. | | ''Lobby.MaxPlayers'' | 24 | Maximum player count for the lobby. Keep this aligned with any external server-manager player limit. | | ''Lobby.Privacy'' | 0 | Lobby privacy: 0 public, 1 private, 2 friends only. Public dedicated servers should use 0. | | ''MapVote.Maps'' | Curated built-in map list | Dedicated map vote rotation. Separate map idents with semicolons, commas, or newlines. | ==== Map Vote Rotation ==== Dedicated map vote pool example: "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 whitelist from the server console with: t.server.maps ====== Deprecated Or Ignored Settings ====== ^ Old Setting ^ Current Status ^ | ''Server.StartupMap'' | Removed. Use the native ''+game org.game org.map'' launch argument. | | Scalar ''Lobby'' gameplay fields such as ''MaxRounds'', ''RoundTimeMinutes'', ''KarmaEnabled'', ''ProximityVoiceRange'', etc. | Removed from ''server_settings.json''. Use the matching saved ConVar instead. | | ''MapVote.Whitelist'' | Migrated to ''MapVote.Maps'' if ''Maps'' is missing. | | ''MapVote.Blacklist'' | No longer the dedicated rotation model. If only ''Blacklist'' is present, defaults are backfilled into ''MapVote.Maps''. |