User Tools

Site Tools


convars

This is an old revision of the document!


Basics

Most gameplay settings are now native saved ConVars. On many hosts, including Physgun, these are stored in a large file like:

config/convar/game.json

Each value appears under a convar. key. Example:

"convar.ttt_rtv_enabled": {
  "Value": "False",
  "Timeout": 1781214253,
  "DeleteAt": 0
}

Only edit Value. Do not edit Timeout or DeleteAt.

Notes:

  • Stop the server before manually editing game.json.
  • All commands can also be executed in console, which is easier and will apply live (with some variance). Setting the command via the console will store/update the value in game.json.
  • Preserve valid JSON syntax.
  • Values are usually stored as strings, even for numbers and booleans.
  • Use True / False or 1 / 0 for boolean values, matching what your host panel writes.

Gameplay ConVars

The key in game.json includes the convar. prefix. The console command does not.

Example:

In game.json In server console
convar.ttt_rtv_enabled ttt_rtv_enabled false

These are most easily modified directly from the console.

Time

ConVar Default Applies Description
ttt_max_rounds 6 Next round / map travel Number of rounds to play before the match ends and a map vote begins.
ttt_round_time_minutes 5 Next round Round duration in minutes when haste mode is off.
ttt_haste_mode True Next round Enables haste mode, where the public timer starts shorter and hidden time is added as players die.
ttt_haste_starting_minutes 5 Next round Public round timer duration in minutes before haste overtime starts.
ttt_haste_minutes_per_death 0.5 Next round Minutes added to the hidden round limit each time a player dies.

Gameplay Roles

ConVar Default Applies Description
ttt_traitor_pct 0.25 Next round Fraction of round players assigned as traitors.
ttt_traitor_max 32 Next round Maximum number of traitors that can be assigned in a round.
ttt_detective_pct 0.13 Next round Fraction of round players assigned as detectives when enough players are present.
ttt_detective_max 32 Next round Maximum number of detectives that can be assigned in a round.
ttt_detective_min_players 8 Next round Minimum round player count required before detectives can be assigned.

Karma

ConVar Default Applies Description
ttt_karma True Next round Enables karma penalties, rewards, and low-karma damage scaling.
ttt_karma_low_autokick False Round end Kicks non-host players below the low-karma threshold at round end.
ttt_karma_kick_threshold 300 Round end Karma value below which low-karma auto-kick removes non-host players. Only matters when ttt_karma_low_autokick is enabled.
ttt_karma_starting 1000 New player component Karma assigned to newly-created player components.
ttt_karma_damage_threshold 800 Live damage checks Karma value below which outgoing damage is reduced.
ttt_karma_kill_penalty 30 Round end How harshly friendly damage removes karma before internal scaling.
ttt_karma_round_increment 15 Round end Karma restored at round end when the player teamkilled nobody.

Voice

ConVar Default Applies Description
ttt_proximity_voice_enabled False Live Uses distance-limited voice chat for normal alive-player voice. Team voice and dead/alive voice filtering are separate.
ttt_proximity_voice_range 800 Live Voice range in world units when proximity voice is enabled.

Map Vote

ConVar Default Applies Description
ttt_rtv_enabled True Live Allows players to start Rock the Vote map-change votes. Admin-forced map votes are unaffected.
ttt_mapvote_option_count 10 Newly-created map votes Maximum number of maps shown during a map vote.
ttt_mapvote_include_uncurated False Newly-created map votes Includes uncurated maps in curated map vote pools when available. Dedicated servers should normally use MapVote.Maps instead.

Visuals

ConVar Default Applies Description
ttt_allow_player_cosmetics True Next round Allows players to use their s&box headwear.

Moderation

ConVar Default Applies Description
ttt_auto_afk True Live Automatically marks idle alive players as AFK.

Moderation Roles

Dedicated servers store Moderator, Admin, and Owner assignments in roles.json in the same data area as server_settings.json.

Use SteamID64 values. Invalid or zero IDs are ignored. Founder is derived from the active host/session and is not written to roles.json.

Example:

roles.json
[
  {
    "steamId": 76561190000000000,
    "role": "admin"
  },
  {
    "steamId": 76561190000000001,
    "role": "moderator"
  },
  {
    "steamId": 76561190000000002,
    "role": "owner"
  }
]

Useful role commands:

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

ttt_listadmins prints Admin, Owner, and Founder IDs. It does not print Moderators. Use ttt_listroles to confirm Moderator assignments.

Useful Commands

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 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.

Troubleshooting

If your settings are not applying:

  • Make sure server_settings.json is in the correct game ident's data folder.
  • Make sure ConVars are edited under config/convar/game.json or your host's ConVar panel.
  • Restart the dedicated server after editing files by hand.
  • Check that your JSON is valid.
  • In game.json, edit only Value.
  • 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 schema=2 lobby=True vote_maps=18

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, 10 vote maps
convars.1778813013.txt.gz · Last modified: 2026/05/15 02:43 by frank_lee_smith

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki