| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| server_basics [2026/05/15 02:45] – frank_lee_smith | server_basics [2026/05/24 00:47] (current) – frank_lee_smith |
|---|
| ======== Dedicated Server Settings ======== | ======== 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. | **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: | This page does **not** explain how to install or start a baseline s&box dedicated server. For general s&box dedicated server setup, see: |
| |
| ^ File ^ Purpose ^ | ^ File ^ Purpose ^ |
| | ''server_settings.json'' | Small dedicated-server bootstrap config: lobby max players/privacy and curated map rotation. | | | ''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. | | | ''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. | | | ''roles.json'' | Moderator/Admin/Owner role assignments written by TTT role commands. | |
| <file json server_settings.json> | <file json server_settings.json> |
| { | { |
| "SchemaVersion": 2, | "SchemaVersion": 3, |
| "Lobby": { | "Lobby": { |
| "MaxPlayers": 24, | "MaxPlayers": 24, |
| }, | }, |
| "MapVote": { | "MapVote": { |
| "Maps": "thieves.rooftops;thieves.whitehouse;thieves.minecraft_t5" | "Pool": "Official;Verified", |
| | "AlwaysInclude": "", |
| | "NeverShow": "" |
| } | } |
| } | } |
| |
| ^ Field ^ Default ^ Description ^ | ^ Field ^ Default ^ Description ^ |
| | ''SchemaVersion'' | 2 | Generated by the game for future migrations. Leave this alone. | | | ''SchemaVersion'' | 3 | 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.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. | | | ''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. | | | ''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 Rotation ==== | ==== Map Vote Sources ==== |
| |
| Dedicated map vote pool example: | Dedicated map vote pool example: |
| <code json> | <code json> |
| "MapVote": { | "MapVote": { |
| "Maps": "thieves.rooftops;thieves.dolls;throwupproducs.islandtropical" | "Pool": "Official;Verified", |
| | "AlwaysInclude": "thieves.rooftops;thieves.dolls;throwupproducs.islandtropical", |
| | "NeverShow": "orgident.mapident" |
| } | } |
| </code> | </code> |
| |
| Separate map idents with semicolons, commas, or newlines. | ''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: |
| | |
| | <code text> |
| | Official;Verified |
| | Official;Verified;AllCompatible |
| | </code> |
| | |
| | ''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: |
| |
| <code text> | <code text> |
| </code> | </code> |
| |
| 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. | 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 built-in map whitelist from the server console with: | You can print the current source lists from the dedicated server console with: |
| |
| <code text> | <code text> |
| t.server.maps | t.maps.official |
| | t.maps.verified |
| | t.maps.compatible |
| </code> | </code> |
| |
| ====== Deprecated Or Ignored Settings ====== | ''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: |
| | |
| | <code text> |
| | 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 |
| | </code> |
| | |
| | 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: |
| | |
| | <code text> |
| | t.server.mapvote.pool.set Official,Verified,AllCompatible |
| | t.server.mapvote.pool.set "Official;Verified" |
| | t.server.mapvote.pool.set "" |
| | </code> |
| | |
| | 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''. |
| |
| ^ 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''. | | |