Trouble in Terrorist Town ships with Garry's Mod, so a TTT server is a normal Garry's Mod server started with +gamemode terrortown on a ttt_ map. The settings are ttt_ cvars in garrysmod/cfg/server.cfg - round length, traitor percentage, karma - and the defaults are sensible enough to play on the first evening. What turns a working server into one people come back to is three things: Counter-Strike: Source content mounted so maps do not fill with ERROR models, a damage log so admins can rule on random deathmatch fairly, and a map vote over a short list of good maps. This guide covers the install, the cvars that matter, karma, maps, the addons TTT servers actually run, and the problems you will hit in the first week.
What a TTT server is made of#
TTT is a round-based social deduction gamemode: a few players are secretly traitors, a few are detectives with a shop and tools, and everyone else is innocent. Rounds are short, deaths are permanent until the next round, and the whole game depends on players trusting the server's rules more than each other.
The pieces:
| Piece | What it is | Where it lives |
|---|---|---|
| Gamemode | terrortown, bundled with Garry's Mod | garrysmod/gamemodes/terrortown/ |
| Maps | ttt_ maps, mostly from the Workshop | Workshop collection or garrysmod/maps/ |
| CS:S content | Textures and models many maps use | Mounted on server and clients |
| Admin mod | ULX/ULib or SAM | Addons |
| Damage logs | Who hurt whom, for RDM rulings | Addon |
| Map vote | End-of-map vote over your list | Addon |
| Optional | Pointshop, custom weapons, TTT2 | Addons |
TTT2 is worth knowing about before you start. It is a community rewrite of TTT, distributed through the Workshop, with many more roles and a large addon ecosystem. It is a different gamemode with its own settings, and most classic TTT addons need TTT2-specific versions. Decide early which one you run; this guide is about classic TTT, with notes where TTT2 differs.
Requirements and sizing#
TTT is one of the better-behaved Garry's Mod gamemodes. Rounds reset the map, so entities do not accumulate the way they do on DarkRP or sandbox, and the Lua running each tick is modest until addons add to it.
| Server | RAM | CPU | Notes |
|---|---|---|---|
| 12-16 players, light addons | 1.5-2 GB | 1 core | A friends server |
| 16-24 players, typical addons | 2-3 GB | 1-1.5 cores | The common public setup |
| 24-32 players, Pointshop and many weapons | 3-4 GB | 1.5-2 cores | Addons dominate the cost |
Garry's Mod runs its game logic on one thread, so clock speed matters more than core count, and the Workshop collection size drives both disk and first-boot time. Garry's Mod server setup covers the base install, the 64-bit branch and the sandbox limits.
Installing and starting TTT#
On your own machine, Garry's Mod server installs with SteamCMD as app 4020. Start it on the TTT gamemode and a TTT map:
$ ./srcds_run -game garrysmod -console -port 27015 \ +maxplayers 24 +gamemode terrortown +map ttt_minecraft_b5 \ +host_workshop_collection <collection_id> -authkey <steam_web_api_key>+gamemode terrortown is the whole switch. +host_workshop_collection mounts your maps and addons from the Workshop, and it needs a valid Steam Web API key in -authkey or the collection is silently skipped. On a panel host you do not type this line: the launch arguments are variables on the Startup tab, and the panel builds the command from them.
Mounting Counter-Strike: Source content
Many popular TTT maps use textures and models from Counter-Strike: Source. If a player does not have that content, those surfaces render as purple-and-black checkerboards and props as giant red ERROR signs. There is no legal way for your server to give players CS:S content; they need to own CS:S or play with the errors.
The server should mount it too, because some maps rely on CS:S physics models for collisions. The free Counter-Strike: Source dedicated server (SteamCMD app 232330) provides the files without a game licence. Install it in its own folder and point Garry's Mod at it:
"mountcfg"{ "cstrike" "/home/gmod/css/cstrike"}Tell players in your server description and MOTD that CS:S content is required for the best experience, and pick maps that use as little of it as possible if your community is mostly players without it. Garry's Mod Workshop and FastDL covers how the rest of your content reaches players.
The ttt_ settings that matter#
TTT reads its settings from ttt_ convars, set in garrysmod/cfg/server.cfg. The defaults below are from the TTT documentation and have been stable for years; type any cvar into the console without a value to see its current value and default on your server.
| Cvar | Default | What it does |
|---|---|---|
ttt_firstpreptime | 60 | Seconds of preparation before the first round on a map |
ttt_preptime_seconds | 30 | Preparation before every later round |
ttt_posttime_seconds | 30 | Time after a round ends before the next one |
ttt_roundtime_minutes | 10 | Round length when haste mode is off |
ttt_haste | 1 | Haste mode: short rounds that gain time per death |
ttt_haste_starting_minutes | 5 | Initial round time in haste mode |
ttt_haste_minutes_per_death | 0.5 | Time added per innocent death |
ttt_traitor_pct | 0.25 | Share of players who become traitors |
ttt_detective_pct | 0.13 | Share of players who become detectives |
ttt_detective_min_players | 8 | No detectives below this player count |
ttt_minimum_players | 2 | Players needed to start a round |
ttt_round_limit | 6 | Rounds per map before it changes |
ttt_time_limit_minutes | 75 | Maximum minutes on one map |
A typical public server tunes a few of these and leaves the rest:
hostname "Longship TTT | Karma on | Damage logs"sv_password ""sv_alltalk 0ttt_firstpreptime 45ttt_preptime_seconds 20ttt_posttime_seconds 15ttt_round_limit 8ttt_time_limit_minutes 60ttt_traitor_pct 0.25ttt_detective_min_players 8Leave sv_alltalk at 0. TTT manages voice itself: the dead cannot talk to the living, and traitors have a private channel. Turning alltalk on hands dead players a microphone into the living game, which ends the deduction half of the gamemode.
Shorter prep and post times make the server feel busier, but the first prep time is when players are still loading the map, and cutting it too far means people spawn into the middle of a round. Forty-five seconds is a good compromise on a server with a large collection.
Karma: the setting that keeps it fair#
Karma is TTT's built-in answer to random deathmatch - killing or hurting people on your own side. Every player starts with karma, loses it for damaging teammates, and earns it back over clean rounds. Karma scales the damage a player does: someone at low karma deals noticeably less damage, and below a threshold they are kicked or banned.
| Cvar | Default | What it does |
|---|---|---|
ttt_karma | 1 | Karma system on or off |
ttt_karma_strict | 1 | Damage penalty falls off faster as karma drops |
ttt_karma_starting | 1000 | Karma a new player starts with |
ttt_karma_max | 1000 | Highest possible karma |
ttt_karma_low_autokick | 1 | Kick players who end a round below the threshold |
ttt_karma_low_amount | 450 | The threshold |
ttt_karma_low_ban | 1 | Ban instead of only kicking |
ttt_karma_low_ban_minutes | 60 | Length of that ban |
ttt_karma_persist | 0 | Keep karma across disconnects and map changes |
ttt_karma_persist 1 is the setting most public servers should change. Without it, a player who has wrecked their karma reconnects and starts fresh, which makes the system easy to dodge. With it on, karma is stored and follows the player back.
Karma is automatic and blunt. It catches obvious RDM and misses subtle griefing, and it occasionally punishes an honest mistake. Treat it as a filter, not a judge, and back it with damage logs and admins.
Credits and the equipment shops
Traitors and detectives buy equipment with credits from a shop opened with C. Traitors start with ttt_credits_starting credits (default 2) and detectives with ttt_det_credits_starting (default 1); more are awarded as innocents die and when detectives confirm bodies. Those two numbers decide how much of a round is about gadgets rather than guns. Raising them makes traitor rounds louder and shorter; lowering them makes traitors rely on deception. Leave them at the defaults until you have watched a few dozen rounds on your own server, then change one at a time.
Workshop weapon packs add items to these shops, and they are where balance goes to die. A single traitor item that kills a room without warning turns every round into the same round. Test each new shop item with staff before it goes public.
Rules, staff and RDM rulings
TTT generates more disputes than any other Garry's Mod gamemode, because the core mechanic is people lying and shooting each other on suspicion. A server stays fun when rulings are predictable. A workable setup:
- Write a short rule list: what counts as RDM, what counts as reasonable suspicion, whether ghosting (dead players passing information) is banned, how many warnings before a ban.
- Give staff the damage log and the ULX TTT commands, nothing more than that until they have proved themselves.
- Rule from the log, not from chat. A complaint that says "he killed me for no reason" is answered by the log showing what the killer saw - a traitor weapon in hand, a body nearby, a shot fired first.
- Prefer slaying a player at the start of the next round over kicking them for a first offence. It punishes the action without emptying the server.
Panel access is a different matter from in-game power. On RE:NODE a subuser can be limited to the console, without files or billing, which is the right level for a trusted moderator who restarts the server when a map hangs. Server rules, moderation and staff covers building a team that stays consistent.
Maps and the map vote#
TTT maps carry the ttt_ prefix and almost all of them come from the Workshop. Classic, widely played examples include ttt_minecraft_b5 and ttt_67thway_v14, and every community has its own favourites. A good TTT map has hiding places, a traitor room or traps, decent weapon spawns and a size that suits your player count - a map built for 32 is empty with 10.
Weapon placement comes from the map itself, plus optional weapon spawn scripts: TTT can read a maps/<mapname>_ttt.txt file that places weapons and ammo, controlled by ttt_use_weapon_spawn_scripts. Community maps converted from other modes often rely on these.
Map changes happen after ttt_round_limit rounds or ttt_time_limit_minutes, whichever comes first. Without an addon the server moves through the map cycle; with a map vote addon - MapVote is the common choice on TTT servers - players pick from a list at the end of each map. Keep the list to fifteen or twenty maps you have tested with your player count and with and without CS:S content.
Addons TTT servers actually run#
Every addon adds Lua that runs on the server, on clients, or both. These are the categories almost every public TTT server ends up with:
- Admin mod. ULX with ULib, or SAM. On TTT, add the TTT-specific command module for ULX, which adds commands such as slaying a player at the start of the next round and forcing roles for testing. ULX and SAM for Garry's Mod compares the two.
- Damage logs. The single most important addon after admin. A damage log records every hit and kill with roles, so a staff member can open a menu and see whether that "RDM" was actually a traitor kill. TTT Damagelogs is the widely used one.
- Map vote. As above.
- Custom weapons. Workshop weapon packs that add guns to the traitor and detective shops. Add a few, not fifty. Unbalanced shop items are the fastest way to make a server feel random.
- Pointshop. Points earned for playing, spent on cosmetics. Popular, and the item models are extra downloads for every player. Points shops that sell gameplay advantages make for a worse server.
Keep addons to a list you can explain. Each addon is code with full access to the server, and some Workshop items include remote code loaders that let their author run Lua on your server later. Read an addon's code or reputation before installing it, and avoid anything that asks for HTTP access without a reason.
Performance and the first week#
Most TTT servers that lag do so because of addons, not players. The common culprits are weapon packs with heavy effects, Pointshop item models, and addons running a Think hook for every player every tick. The diagnostic routine - watch for Lua errors in the console, remove half the addons on a test server, measure - is covered in Garry's Mod performance and Lua errors.
Two habits keep a TTT server healthy:
- Restart daily at an empty hour. Garry's Mod servers slowly accumulate memory and Lua state. On RE:NODE the Schedules tab runs a nightly restart from a cron expression, and the console graphs show memory against the plan's limit, so you can see whether it is creeping.
- Back up before changing the collection. Your configs, ULX data and damage log settings are small files and easy to lose. A backup slot before each change costs nothing.
Troubleshooting#
The server starts in sandbox. +gamemode terrortown is missing or misspelled, or a map with no TTT entities loaded. Check the startup line and the map prefix.
Players see ERROR models and checkerboard textures. Missing CS:S content on their side, or a Workshop item they did not download. Check mount.cfg on the server and tell players to mount CS:S.
Rounds never start. Fewer players than ttt_minimum_players, or everyone is in spectator mode. Check ttt_minimum_players and the spectator toggle in the F1 menu.
No detectives appear. Fewer than ttt_detective_min_players players, or detective karma requirements exclude everyone eligible. Lower the minimum on a small server.
Karma resets when people reconnect. ttt_karma_persist is 0. Set it to 1.
The Workshop collection does not load. Missing or invalid -authkey, or the collection is not public.
FAQ#
Do I need to install TTT separately?
No. Trouble in Terrorist Town is bundled with Garry's Mod as the terrortown gamemode. Start the server with +gamemode terrortown on a ttt_ map. TTT2 is a separate Workshop gamemode if you want the extended version.
Do players need Counter-Strike: Source for TTT?
For many maps, yes, to see textures and models correctly. Without it they see ERROR models. The server mounts CS:S content from the free CS:S dedicated server, but players must own CS:S themselves.
What is a good traitor percentage?
The default 0.25 - one traitor per four players - works for most servers. Small servers sometimes lower it so two traitors among eight does not feel crowded; large servers sometimes cap traitors with ttt_traitor_max.
Should karma be on?
Yes, with ttt_karma_persist 1 so players cannot reset it by reconnecting. Karma does not replace admins and damage logs, but it filters out the worst random killing automatically.
Is TTT2 better than classic TTT?
It is bigger. TTT2 adds many roles and a large ecosystem, at the cost of complexity and addon compatibility. Classic TTT is simpler, lighter and still what many players expect. Pick one and build around it.




Comments
Completely anonymous: no account, no email, no cookie. We store the name you type, the text and the time - nothing else. Links are limited and markup is not rendered.