User Tools

Site Tools


server_basics

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/23/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 server hosting, your best option is using physgun. You can even get 30% off with code “TTT”!

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 map vote source lists.
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:

server_settings.json
{
  "SchemaVersion": 3,
  "Lobby": {
    "MaxPlayers": 24,
    "Privacy": 0
  },
  "MapVote": {
    "Pool": "Official;Verified",
    "AlwaysInclude": "",
    "NeverShow": ""
  }
}

server_settings.json Fields

Field Default Description
SchemaVersion 3 Generated by the game for future migrations. Leave this alone.
Lobby.MaxPlayers 32 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.Pool Official;Verified Source pools used for generated map vote options. Multiple pools can be separated with semicolons, commas, pipes, plus signs, or newlines. Leave empty to use only AlwaysInclude.
MapVote.AlwaysInclude empty Extra map idents to add to generated votes when possible. Separate map idents with semicolons, commas, or newlines.
MapVote.NeverShow empty Server-owner exclusions. These maps will not appear in generated map votes. Separate map idents with semicolons, commas, or newlines.

Map Vote Sources

Dedicated map vote pool example:

"MapVote": {
  "Pool": "Official;Verified",
  "AlwaysInclude": "thieves.rooftops;thieves.dolls;throwupproducs.islandtropical",
  "NeverShow": "orgident.mapident"
}

MapVote.Pool chooses the normal source pools for generated vote options:

Pool Meaning
Official Maps made by, for, or directly maintained by the TTT team.
Verified Community maps reviewed and sanctioned for TTT.
AllCompatible Discovered maps that target TTT but are not official or verified. This pool is prewarmed and cached for the server/lobby lifetime when enabled.

You can combine pools:

Official;Verified
Official;Verified;AllCompatible

All and Any are accepted shortcuts for all currently playable source pools.

AlwaysInclude is additive. It can include maps outside the selected pool, as long as they can be resolved and are not rejected by game validation. NeverShow is the server-owner exclusion list and wins over selected pools.

Set Pool to an empty string if you only want maps from AlwaysInclude.

Separate map idents with semicolons, commas, or newlines:

orgident.mapident;orgident.mapident

Duplicate entries are collapsed. If a selected pool or include list produces no valid maps, the vote system falls back as safely as it can instead of showing blocked or invalid entries.

You can print the current source lists from the dedicated server console with:

t.maps.official
t.maps.verified
t.maps.compatible

t.maps.compatible can take a little time because it discovers compatible packages. When AllCompatible is enabled for map votes, the server prewarms that discovery after settings apply and reuses the cached list for later votes. These commands are intended for dedicated server console use, not for routine use during a live match.

Editing Map Vote Settings From Console

Dedicated server console can update the map vote section without hand-editing JSON:

t.server.mapvote.print
t.server.mapvote.pool.set Official,Verified
t.server.mapvote.alwaysinclude.add orgident.mapident
t.server.mapvote.alwaysinclude.remove orgident.mapident
t.server.mapvote.nevershow.add orgident.mapident
t.server.mapvote.nevershow.remove orgident.mapident

These commands are dedicated-server-console-only. They write server_settings.json and apply to the next generated map vote. They reject changes while a map vote is already active.

Use commas or quotes when setting multiple pools from console:

t.server.mapvote.pool.set Official,Verified,AllCompatible
t.server.mapvote.pool.set "Official;Verified"
t.server.mapvote.pool.set ""

Adding a map to AlwaysInclude removes it from NeverShow. Adding a map to NeverShow removes it from AlwaysInclude.

Notes

Use the native +game org.game org.map launch argument for the startup map. Gameplay rule values such as max rounds, round time, karma, and voice settings live in saved ConVars, not in server_settings.json.

server_basics.txt · Last modified: 2026/05/24 00:47 by frank_lee_smith

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki