Trouble in Terrorist Town поставляется вместе с Garry's Mod, так что сервер TTT - это обычный сервер Garry's Mod, запущенный с +gamemode terrortown на карте ttt_. Настройки - это cvars ttt_ в garrysmod/cfg/server.cfg: длительность раунда, доля предателей, карма, - и значения по умолчанию достаточно разумны, чтобы играть уже в первый вечер. Из работающего сервера сервер, на который возвращаются, делают три вещи: смонтированный контент Counter-Strike: Source, чтобы карты не заполнялись моделями ERROR, damage log, чтобы админы честно разбирали случаи random deathmatch, и голосование за карту по короткому списку хороших карт. В этом руководстве - установка, важные cvars, карма, карты, аддоны, которые реально стоят на серверах TTT, и проблемы, с которыми вы столкнётесь в первую неделю.
Из чего состоит сервер TTT#
TTT - раундовый режим социальной дедукции: несколько игроков тайно являются предателями, несколько - детективами с магазином и инструментами, а все остальные - невиновные. Раунды короткие, смерть окончательна до следующего раунда, и вся игра держится на том, что игроки доверяют правилам сервера больше, чем друг другу.
Составные части:
| Часть | Что это | Где находится |
|---|---|---|
| Игровой режим | terrortown, поставляется с Garry's Mod | garrysmod/gamemodes/terrortown/ |
| Карты | Карты ttt_, в основном из Workshop | Коллекция Workshop или garrysmod/maps/ |
| Контент CS:S | Текстуры и модели, которые используют многие карты | Монтируется на сервере и у клиентов |
| Админ-мод | ULX/ULib или SAM | Аддоны |
| Damage logs | Кто кому нанёс урон, для разбора RDM | Аддон |
| Голосование за карту | Голосование в конце карты по вашему списку | Аддон |
| По желанию | Pointshop, своё оружие, TTT2 | Аддоны |
О TTT2 стоит знать до начала. Это переписанная сообществом версия TTT, распространяемая через Workshop, с гораздо большим числом ролей и большой экосистемой аддонов. Это другой игровой режим со своими настройками, и большинству классических аддонов TTT нужны отдельные версии под TTT2. Решите заранее, что вы запускаете; это руководство про классический TTT, с пометками, где TTT2 отличается.
Требования и размер сервера#
TTT - один из самых благовоспитанных режимов Garry's Mod. Раунды сбрасывают карту, поэтому сущности не накапливаются, как на DarkRP или в sandbox, а Lua, выполняемый каждый tick, скромен, пока аддоны его не нарастят.
| Сервер | RAM | CPU | Примечания |
|---|---|---|---|
| 12-16 игроков, лёгкие аддоны | 1,5-2 ГБ | 1 ядро | Сервер для друзей |
| 16-24 игрока, типичные аддоны | 2-3 ГБ | 1-1,5 ядра | Обычная публичная конфигурация |
| 24-32 игрока, Pointshop и много оружия | 3-4 ГБ | 1,5-2 ядра | Основную цену определяют аддоны |
Garry's Mod выполняет игровую логику в одном потоке, поэтому тактовая частота важнее числа ядер, а размер коллекции Workshop определяет и место на диске, и время первого запуска. Базовая установка, 64-битная ветка и ограничения sandbox описаны в статье установка сервера Garry's Mod.
Установка и запуск TTT#
На своей машине сервер Garry's Mod ставится через SteamCMD как app 4020. Запустите его в режиме TTT на карте TTT:
$ ./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 - это весь переключатель. +host_workshop_collection монтирует ваши карты и аддоны из Workshop, и для этого нужен действительный ключ Steam Web API в -authkey, иначе коллекция молча пропускается. На хостинге с панелью эту строку вы не набираете: аргументы запуска - это переменные на вкладке Startup, и панель собирает из них команду.
Монтирование контента Counter-Strike: Source
Многие популярные карты TTT используют текстуры и модели из Counter-Strike: Source. Если у игрока этого контента нет, такие поверхности отображаются фиолетово-чёрной шахматкой, а предметы - огромными красными надписями ERROR. Законного способа передать игрокам контент CS:S с вашего сервера нет; им нужно владеть CS:S или играть с ошибками.
Серверу его тоже стоит смонтировать, потому что некоторые карты используют физические модели CS:S для коллизий. Бесплатный выделенный сервер Counter-Strike: Source (app SteamCMD 232330) даёт файлы без лицензии на игру. Установите его в отдельную папку и укажите на неё Garry's Mod:
"mountcfg"{ "cstrike" "/home/gmod/css/cstrike"}Напишите в описании сервера и в MOTD, что для лучшего опыта нужен контент CS:S, а если ваше сообщество в основном состоит из игроков без него, выбирайте карты, которые используют его как можно меньше. Как до игроков доходит остальной ваш контент, объясняет статья Workshop и FastDL в Garry's Mod.
Настройки ttt_, которые важны#
TTT читает настройки из convars ttt_, заданных в garrysmod/cfg/server.cfg. Значения по умолчанию ниже взяты из документации TTT и не менялись годами; введите любой cvar в консоли без значения, чтобы увидеть его текущее значение и значение по умолчанию на вашем сервере.
| Cvar | По умолчанию | Что делает |
|---|---|---|
ttt_firstpreptime | 60 | Секунды подготовки перед первым раундом на карте |
ttt_preptime_seconds | 30 | Подготовка перед каждым следующим раундом |
ttt_posttime_seconds | 30 | Время после окончания раунда до следующего |
ttt_roundtime_minutes | 10 | Длительность раунда при выключенном режиме haste |
ttt_haste | 1 | Режим haste: короткие раунды, которые получают время за каждую смерть |
ttt_haste_starting_minutes | 5 | Начальное время раунда в режиме haste |
ttt_haste_minutes_per_death | 0.5 | Время, добавляемое за смерть невиновного |
ttt_traitor_pct | 0.25 | Доля игроков, которые становятся предателями |
ttt_detective_pct | 0.13 | Доля игроков, которые становятся детективами |
ttt_detective_min_players | 8 | Меньше этого числа игроков детективов нет |
ttt_minimum_players | 2 | Сколько игроков нужно для начала раунда |
ttt_round_limit | 6 | Раундов на карту до её смены |
ttt_time_limit_minutes | 75 | Максимум минут на одной карте |
Типичный публичный сервер подстраивает несколько из них и не трогает остальные:
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 8Оставьте sv_alltalk равным 0. TTT сам управляет голосовым чатом: мёртвые не могут говорить с живыми, а у предателей есть приватный канал. Включённый alltalk даёт мёртвым микрофон в игру живых, и половина режима, связанная с дедукцией, заканчивается.
Короткое время подготовки и время после раунда делают сервер оживлённее, но первая подготовка - это время, когда игроки ещё загружают карту, и если слишком её сократить, люди будут появляться посреди раунда. Сорок пять секунд - хороший компромисс для сервера с большой коллекцией.
Карма: настройка, которая сохраняет честность#
Карма - встроенный ответ TTT на random deathmatch, то есть убийство или ранение игроков своей стороны. Каждый игрок начинает с кармой, теряет её за урон по союзникам и зарабатывает обратно за чистые раунды. Карма масштабирует урон игрока: у игрока с низкой кармой урон заметно меньше, а ниже порога его кикают или банят.
| Cvar | По умолчанию | Что делает |
|---|---|---|
ttt_karma | 1 | Система кармы включена или выключена |
ttt_karma_strict | 1 | Штраф к урону растёт быстрее по мере падения кармы |
ttt_karma_starting | 1000 | Карма нового игрока |
ttt_karma_max | 1000 | Максимально возможная карма |
ttt_karma_low_autokick | 1 | Кикать игроков, закончивших раунд ниже порога |
ttt_karma_low_amount | 450 | Этот порог |
ttt_karma_low_ban | 1 | Банить, а не только кикать |
ttt_karma_low_ban_minutes | 60 | Длительность этого бана |
ttt_karma_persist | 0 | Сохранять карму между отключениями и сменами карт |
ttt_karma_persist 1 - настройка, которую стоит поменять большинству публичных серверов. Без неё игрок, угробивший свою карму, переподключается и начинает с чистого листа, так что систему легко обойти. Если она включена, карма сохраняется и возвращается вместе с игроком.
Карма автоматическая и грубая. Она ловит очевидный RDM и пропускает тонкий гриферинг, а иногда наказывает за честную ошибку. Считайте её фильтром, а не судьёй, и подкрепляйте damage logs и админами.
Кредиты и магазины снаряжения
Предатели и детективы покупают снаряжение за кредиты в магазине, который открывается клавишей C. Предатели начинают с ttt_credits_starting кредитов (по умолчанию 2), а детективы - с ttt_det_credits_starting (по умолчанию 1); дополнительные начисляются, когда умирают невиновные и когда детективы опознают тела. Эти два числа определяют, насколько раунд будет про гаджеты, а не про оружие. Если их поднять, раунды предателей станут громче и короче; если снизить, предатели будут полагаться на обман. Оставьте значения по умолчанию, пока не посмотрите несколько десятков раундов на своём сервере, а затем меняйте по одному.
Наборы оружия из Workshop добавляют предметы в эти магазины, и именно здесь умирает баланс. Один предмет предателя, который без предупреждения убивает всю комнату, превращает каждый раунд в один и тот же раунд. Проверяйте каждый новый предмет магазина вместе с командой, прежде чем он станет публичным.
Правила, команда и разбор RDM
TTT порождает больше споров, чем любой другой режим Garry's Mod, потому что основная механика - это люди, которые врут и стреляют друг в друга по подозрению. Сервер остаётся весёлым, когда решения предсказуемы. Рабочая схема:
- Напишите короткий список правил: что считается RDM, что считается обоснованным подозрением, запрещён ли ghosting (передача информации мёртвыми игроками), сколько предупреждений до бана.
- Дайте команде damage log и команды ULX для TTT, и ничего больше, пока люди себя не проявят.
- Решайте по логу, а не по чату. На жалобу «он убил меня ни за что» отвечает лог, показывающий, что видел убийца: оружие предателя в руке, тело рядом, первый выстрел.
- За первое нарушение лучше убить игрока в начале следующего раунда, чем кикать. Это наказывает за действие, не опустошая сервер.
Доступ к панели - отдельный вопрос от власти в игре. На RE:NODE субпользователя можно ограничить консолью, без файлов и биллинга, - это правильный уровень для доверенного модератора, который перезапускает сервер, когда карта зависла. Как собрать последовательную команду, описано в статье правила сервера, модерация и команда.
Карты и голосование за карту#
Карты TTT имеют префикс ttt_, и почти все они берутся из Workshop. Классические и широко играемые примеры - ttt_minecraft_b5 и ttt_67thway_v14, а у каждого сообщества есть свои любимые. У хорошей карты TTT есть места, где спрятаться, комната предателей или ловушки, нормальные точки появления оружия и размер, подходящий под ваше число игроков: карта на 32 человека пустует при 10.
Расстановку оружия задаёт сама карта, плюс необязательные скрипты появления оружия: TTT может прочитать файл maps/<mapname>_ttt.txt, который расставляет оружие и патроны, и это управляется через ttt_use_weapon_spawn_scripts. Карты сообщества, переделанные из других режимов, часто на них полагаются.
Смена карты происходит после ttt_round_limit раундов или ttt_time_limit_minutes, смотря что наступит раньше. Без аддона сервер идёт по циклу карт; с аддоном голосования - на серверах TTT обычно выбирают MapVote - игроки в конце каждой карты выбирают из списка. Держите в списке пятнадцать-двадцать карт, проверенных при вашем числе игроков, с контентом CS:S и без него.
Аддоны, которые реально стоят на серверах TTT#
Каждый аддон добавляет Lua, который выполняется на сервере, у клиентов или и там и там. Вот категории, к которым приходит почти каждый публичный сервер TTT:
- Админ-мод. ULX с ULib или SAM. Для TTT добавьте модуль команд ULX для TTT, который даёт, например, команды убийства игрока в начале следующего раунда и принудительного назначения ролей для тестов. Сравнение обоих - в статье ULX и SAM для Garry's Mod.
- Damage logs. Самый важный аддон после админки. Damage log записывает каждое попадание и убийство с ролями, так что член команды может открыть меню и увидеть, было ли это «RDM» на самом деле убийством предателя. Широко используется TTT Damagelogs.
- Голосование за карту. См. выше.
- Своё оружие. Наборы оружия из Workshop, которые добавляют стволы в магазины предателей и детективов. Добавьте несколько, а не пятьдесят. Несбалансированные предметы магазина - самый быстрый способ сделать сервер случайным.
- Pointshop. Очки, которые зарабатываются игрой и тратятся на косметику. Популярно, и модели предметов - это дополнительные загрузки для каждого игрока. Pointshop, который продаёт игровые преимущества, делает сервер хуже.
Держите аддоны в рамках списка, который можете объяснить. Каждый аддон - это код с полным доступом к серверу, а некоторые предметы Workshop содержат удалённые загрузчики кода, позволяющие автору позже запускать Lua на вашем сервере. Прочитайте код аддона или узнайте его репутацию перед установкой и избегайте всего, что без причины просит доступ к HTTP.
Производительность и первая неделя#
Большинство серверов TTT лагают из-за аддонов, а не игроков. Типичные виновники - наборы оружия с тяжёлыми эффектами, модели предметов Pointshop и аддоны, которые запускают хук Think для каждого игрока каждый tick. Порядок диагностики - следить за ошибками Lua в консоли, убрать половину аддонов на тестовом сервере, замерить - описан в статье производительность Garry's Mod и ошибки Lua.
Две привычки сохраняют сервер TTT здоровым:
- Перезапускайте ежедневно в пустой час. Серверы Garry's Mod медленно накапливают память и состояние Lua. На RE:NODE вкладка Schedules выполняет ночной перезапуск по cron-выражению, а графики в консоли показывают память относительно лимита тарифа, так что видно, ползёт ли она вверх.
- Делайте backup перед изменением коллекции. Ваши конфиги, данные ULX и настройки damage log - маленькие файлы, их легко потерять. Слот backup перед каждым изменением ничего не стоит.
Решение проблем#
Сервер запускается в sandbox. +gamemode terrortown отсутствует или написан с ошибкой, либо загрузилась карта без сущностей TTT. Проверьте строку запуска и префикс карты.
Игроки видят модели ERROR и текстуры-шахматки. У них нет контента CS:S или они не скачали предмет Workshop. Проверьте mount.cfg на сервере и скажите игрокам смонтировать CS:S.
Раунды не начинаются. Игроков меньше, чем ttt_minimum_players, или все в режиме зрителя. Проверьте ttt_minimum_players и переключатель зрителя в меню F1.
Детективы не появляются. Игроков меньше, чем ttt_detective_min_players, или требования к карме детектива исключают всех подходящих. На маленьком сервере снизьте минимум.
Карма сбрасывается при переподключении. ttt_karma_persist равен 0. Поставьте 1.
Коллекция Workshop не загружается. Отсутствует или недействителен -authkey, либо коллекция не публичная.
FAQ#
Нужно ли ставить TTT отдельно?
Нет. Trouble in Terrorist Town поставляется с Garry's Mod как игровой режим terrortown. Запустите сервер с +gamemode terrortown на карте ttt_. TTT2 - отдельный режим из Workshop, если вам нужна расширенная версия.
Нужен ли игрокам Counter-Strike: Source для TTT?
Для многих карт - да, чтобы правильно видеть текстуры и модели. Без него они видят модели ERROR. Сервер монтирует контент CS:S из бесплатного выделенного сервера CS:S, но игроки должны владеть CS:S сами.
Какая доля предателей хороша?
Значение по умолчанию 0.25 - один предатель на четырёх игроков - подходит большинству серверов. Маленькие серверы иногда снижают его, чтобы двое предателей на восьмерых не казались толпой; большие иногда ограничивают число предателей через ttt_traitor_max.
Включать ли карму?
Да, с ttt_karma_persist 1, чтобы игроки не могли сбросить её переподключением. Карма не заменяет админов и damage logs, но автоматически отсеивает худшие случайные убийства.
TTT2 лучше классического TTT?
Он больше. TTT2 добавляет много ролей и большую экосистему ценой сложности и совместимости аддонов. Классический TTT проще, легче, и именно его до сих пор ждут многие игроки. Выберите один и стройте вокруг него.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.