User Tools

Site Tools


configuring_your_server

This is an old revision of the document!


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/10/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:

s&box Dedicated Servers

How to make a s&box server

For the easiest and most stable server hosting on s&box, your best option is using physgun. You can use their built-in package browser and find us directly, and even get 30% off with code “TTT”!

Basics

Live package ident:

thieves.terrortown

TTT dedicated config file:

server_settings.json

This file lives under the package's game data folder.

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

The game creates this file with active defaults the first time a dedicated server starts without one. We recommend launching the server with the game once before attempting configuration, like so:

Important Startup Map Rule

Choose the server startup map with the native s&box dedicated launch command as shown above.

The map ident after the game ident is the boot map. TTT also uses that boot map as the empty-server reset map.

Do not configure the startup map in server_settings.json. The old Server.StartupMap field is deprecated and ignored.

Launch Example

Typical dedicated launch shape (replace port with your port):

-headless +game thieves.terrortown thieves.rooftops +hostname "Test" +port 00000 +net_query_port 00000 +net_hide_address 0

Basic server_settings.json Example

The generated file includes the full curated map list. This shortened example shows the current editable shape.

server_settings.json
{
  "SchemaVersion": 1,
  "Server": {},
  "Lobby": {
    "MaxPlayers": 24,
    "Privacy": 0,
    "MinPlayerCount": 2,
    "MaxRounds": 6,
    "RoundTimeMinutes": 5,
    "PrepareDurationSeconds": 20,
    "HasteMode": true,
    "HasteStartingMinutes": 5,
    "HasteMinutesPerDeath": 0.5,
    "MapVoteOptionCount": 8,
    "AllowPlayerCosmetics": true,
    "ProximityVoiceEnabled": false,
    "ProximityVoiceRange": 2000,
    "KarmaEnabled": true,
    "KarmaLowAutoKick": false,
    "RockTheVoteEnabled": true
  },
  "MapVote": {
    "Maps": "thieves.rooftops;thieves.whitehouse;thieves.minecraft_t5"
  },
  "AdminSteamIds": []
}

How Settings Persist

server_settings.json

server_settings.json is a dedicated-server bootstrap file.

  • It is read once per server process.
  • Edit it while the server is stopped, then restart the dedicated server.
  • Missing fields are backfilled with defaults on startup.
  • Values from this file survive map changes and full server restarts.
  • Runtime console edits do not write back into server_settings.json.

Runtime Console Edits

Some settings are also real console variables. Changing them in the server console affects the running server.

  • Runtime console edits survive normal map travel during the same server process.
  • Runtime console edits are lost on full server restart unless you also set the matching value in server_settings.json, pass the ConVar from your launch tooling, or persist it through another server-manager mechanism.
  • Most lobby/bootstrap-only fields have no live console command yet.

Map Transitions

Normal map changes, RTV map changes, admin-forced map votes, and empty-server resets snapshot the current host settings before travel. That is why live changes such as ttt_karma 0 or ttt_rtv_enabled 0 carry to the next map in the same process.

Dedicated Config 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 ignored. Set the startup map in the native launch command instead as described earlier.

Lobby

Setting Default Console? Takes Effect Persists Restart? Description
MaxPlayers 24 No Startup; carried across map travel Yes Maximum player count for the lobby. Keep this aligned with any external server-manager player limit.
Privacy 0 No Startup; carried across map travel Yes Lobby privacy: 0 public, 1 private, 2 friends only. Public dedicated servers should use 0.
MinPlayerCount 2 No Startup; carried across map travel Yes Minimum eligible players required before normal round start behavior proceeds.
MaxRounds 6 No direct ConVar Startup or next round; carried across map travel Yes Rounds to play before match end and map vote.
RoundTimeMinutes 5 No direct ConVar Startup or next round; carried across map travel Yes Round duration when haste mode is off.
PrepareDurationSeconds 20 No Startup or next round; carried across map travel Yes Preparation phase duration before a round starts.
HasteMode true No direct ConVar Startup or next round; carried across map travel Yes Enables haste mode.
HasteStartingMinutes 5 No direct ConVar Startup or next round; carried across map travel Yes Public round timer duration before haste overtime starts. Allowed range: 1 to 30.
HasteMinutesPerDeath 0.5 No direct ConVar Startup or next round; carried across map travel Yes Minutes added to the hidden round limit each time a player dies. Allowed range: 0 to 5.
MapVoteOptionCount 8 No direct ConVar Live for newly-created map votes Yes Maximum map choices shown during a map vote. Allowed range: 3 to 12.
AllowPlayerCosmetics true No direct ConVar Startup or next round; carried across map travel Yes Allows s&box player cosmetics.
ProximityVoiceEnabled false No direct ConVar Live; carried across map travel Yes Limits normal alive-player voice by distance during active rounds. Team voice and dead/alive voice filtering are separate.
ProximityVoiceRange 2000 No direct ConVar Live; carried across map travel Yes Voice range in world units when proximity voice is enabled. Allowed range: 500 to 5000.
KarmaEnabled true ttt_karma Next round Yes if set in config Enables karma penalties, rewards, and low-karma damage scaling.
KarmaLowAutoKick false ttt_karma_low_autokick Next round / round end checks Yes if set in config Kicks non-host players below the low-karma threshold at round end.
RockTheVoteEnabled true ttt_rtv_enabled Live Yes if set in config Allows players to start Rock the Vote map-change votes. Votekick and admin-forced map votes are unaffected.

Karma Console Tuning

Only KarmaEnabled and KarmaLowAutoKick are stored in server_settings.json. The lower-level karma tuning values below are runtime ConVars.

ConVar Default Persists Map Travel? Persists Restart? Description
ttt_karma 1 Yes Only if also set in server_settings.json or launch tooling Enables/disables the karma system.
ttt_karma_low_autokick 0 Yes Only if also set in server_settings.json or launch tooling Enables/disables low-karma auto-kick.
ttt_karma_low_amount 300 Yes No, unless launch/server tooling reapplies it Low-karma threshold used by auto-kick.
ttt_karma_strict 1 Yes No, unless launch/server tooling reapplies it Uses stricter low-karma damage scaling.
ttt_karma_ratio 0.001 Yes No, unless launch/server tooling reapplies it Scales karma penalties from victim karma.
ttt_karma_kill_penalty 30 Yes No, unless launch/server tooling reapplies it Base full team-kill penalty percentage.
ttt_karma_starting 1000 Yes No, unless launch/server tooling reapplies it Normal starting karma.
ttt_karma_max 1100 Yes No, unless launch/server tooling reapplies it Maximum karma.
ttt_karma_min_required 800 Yes No, unless launch/server tooling reapplies it Karma value below which damage scaling applies.
ttt_karma_round_increment 15 Yes No, unless launch/server tooling reapplies it Round-end karma recovery.
ttt_karma_round_heal_on_teamkill 10 Yes No, unless launch/server tooling reapplies it Round-end recovery when the player team-killed.
ttt_karma_clean_bonus 25 Yes No, unless launch/server tooling reapplies it Extra clean-round karma bonus.
ttt_karma_traitorkill_bonus 10 Yes No, unless launch/server tooling reapplies it Bonus for valid traitor kills.
ttt_karma_clean_half 0 Yes No, unless launch/server tooling reapplies it Optional falloff for high-karma recovery bonuses.

Example:

ttt_karma 0
ttt_karma_low_autokick 1
ttt_karma_low_amount 250

Map Vote Rotation

The dedicated 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 whitelist from the server console with:

t.server.maps

The old MapVote.Whitelist and MapVote.Blacklist fields are migrated into MapVote.Maps when possible. Use MapVote.Maps going forward.

Admins And Roles

Dedicated servers can bootstrap admins with:

"AdminSteamIds": [
  00000000000000000,
  11111111111111111
]

Use SteamID64 values. Invalid or zero IDs are ignored.

AdminSteamIds bootstraps Admin role assignments from server_settings.json. Live role edits are stored separately in admins.json in the same data area and survive map transitions and server restarts.

Useful role commands:

Command Persists? Description
ttt_addadmin STEAMID64 Yes, to admins.json Assign Admin.
ttt_removeadmin STEAMID64 Yes, to admins.json Remove Admin.
ttt_addmod STEAMID64 / ttt_removemod STEAMID64 Yes, to admins.json Add or remove Moderator.
ttt_addowner STEAMID64 / ttt_removeowner STEAMID64 Yes, to admins.json Add or remove Owner.
ttt_setrole STEAMID64 ROLE Yes, to admins.json Replace assignable roles with one role. ROLE is mod, admin, or owner.
ttt_clearrole STEAMID64 Yes, to admins.json Remove assignable roles. Founder is not removed.
ttt_listadmins No change Print admin IDs.
ttt_listroles No change Print assigned roles.

The listen host/founder is derived per session and is not written to admins.json.

Other Runtime Console Options

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

Map And Vote Commands

Command Description
rtv Starts a Rock the Vote map-change vote if ttt_rtv_enabled is true. Players can also type /rtv or !rtv in chat.
votekick PLAYERNAME Starts a public votekick. Players can also type /votekick or !votekick in chat.
ttt_forcemapvote Admin/host command that forces the map-vote flow. It is not blocked by ttt_rtv_enabled.
changelevel MAPIDENT Changes to a map ident.
map MAPIDENT Alias for changelevel.
scene SCENEFILE Host-only scene change command for scene files. Use map idents for normal server operation.

Deprecated Or Ignored Settings

Old Setting Current Status
Server.StartupMap Ignored. Use the native +game org.game org.map launch argument.
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.

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 server_settings.json.
  • Check that your JSON is valid.
  • Check the server console for [server.settings] messages.
  • Check the server console for [lobby.settings] applied to confirm the resolved lobby/rule settings.
  • 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 default/backfill messages:

[server.settings] missing path=server_settings.json; created active defaults. Edit server_settings.json and restart the dedicated server to customize settings.
[server.settings] defaults_backfilled path=server_settings.json

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

Useful applied settings message:

[lobby.settings] applied public, 6 rounds, 5m, prep 20s, haste 5m +0.5m/death, curated, 8 vote maps

Current Limitations

  • server_settings.json is read once per server process.
  • Restart the dedicated server after editing server_settings.json.
  • Runtime console changes are convenient for the current process, but should be mirrored into config or launch tooling if they need to survive a full restart.
  • Not every server_settings.json field has a matching live ConVar yet.
  • Keep Lobby.MaxPlayers aligned 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.
configuring_your_server.1778454227.txt.gz · Last modified: 2026/05/10 23:03 by frank_lee_smith

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki