RE:NODE

Руководства12 мин чтения

Сервер TTT в Garry's Mod: карты и аддоны

Как поднять сервер Trouble in Terrorist Town: режим terrortown, cvars ttt_ и карма, контент CS:S, карты, damage logs, голосование за карту и аддоны, которые стоит добавить.

0 прочтений

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 Modgarrysmod/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, скромен, пока аддоны его не нарастят.

СерверRAMCPUПримечания
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:

bash
$ ./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:

garrysmod/cfg/mount.cfg
"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_firstpreptime60Секунды подготовки перед первым раундом на карте
ttt_preptime_seconds30Подготовка перед каждым следующим раундом
ttt_posttime_seconds30Время после окончания раунда до следующего
ttt_roundtime_minutes10Длительность раунда при выключенном режиме haste
ttt_haste1Режим haste: короткие раунды, которые получают время за каждую смерть
ttt_haste_starting_minutes5Начальное время раунда в режиме haste
ttt_haste_minutes_per_death0.5Время, добавляемое за смерть невиновного
ttt_traitor_pct0.25Доля игроков, которые становятся предателями
ttt_detective_pct0.13Доля игроков, которые становятся детективами
ttt_detective_min_players8Меньше этого числа игроков детективов нет
ttt_minimum_players2Сколько игроков нужно для начала раунда
ttt_round_limit6Раундов на карту до её смены
ttt_time_limit_minutes75Максимум минут на одной карте

Типичный публичный сервер подстраивает несколько из них и не трогает остальные:

garrysmod/cfg/server.cfg
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_karma1Система кармы включена или выключена
ttt_karma_strict1Штраф к урону растёт быстрее по мере падения кармы
ttt_karma_starting1000Карма нового игрока
ttt_karma_max1000Максимально возможная карма
ttt_karma_low_autokick1Кикать игроков, закончивших раунд ниже порога
ttt_karma_low_amount450Этот порог
ttt_karma_low_ban1Банить, а не только кикать
ttt_karma_low_ban_minutes60Длительность этого бана
ttt_karma_persist0Сохранять карму между отключениями и сменами карт

ttt_karma_persist 1 - настройка, которую стоит поменять большинству публичных серверов. Без неё игрок, угробивший свою карму, переподключается и начинает с чистого листа, так что систему легко обойти. Если она включена, карма сохраняется и возвращается вместе с игроком.

Карма автоматическая и грубая. Она ловит очевидный RDM и пропускает тонкий гриферинг, а иногда наказывает за честную ошибку. Считайте её фильтром, а не судьёй, и подкрепляйте damage logs и админами.

Кредиты и магазины снаряжения

Предатели и детективы покупают снаряжение за кредиты в магазине, который открывается клавишей C. Предатели начинают с ttt_credits_starting кредитов (по умолчанию 2), а детективы - с ttt_det_credits_starting (по умолчанию 1); дополнительные начисляются, когда умирают невиновные и когда детективы опознают тела. Эти два числа определяют, насколько раунд будет про гаджеты, а не про оружие. Если их поднять, раунды предателей станут громче и короче; если снизить, предатели будут полагаться на обман. Оставьте значения по умолчанию, пока не посмотрите несколько десятков раундов на своём сервере, а затем меняйте по одному.

Наборы оружия из Workshop добавляют предметы в эти магазины, и именно здесь умирает баланс. Один предмет предателя, который без предупреждения убивает всю комнату, превращает каждый раунд в один и тот же раунд. Проверяйте каждый новый предмет магазина вместе с командой, прежде чем он станет публичным.

Правила, команда и разбор RDM

TTT порождает больше споров, чем любой другой режим Garry's Mod, потому что основная механика - это люди, которые врут и стреляют друг в друга по подозрению. Сервер остаётся весёлым, когда решения предсказуемы. Рабочая схема:

  1. Напишите короткий список правил: что считается RDM, что считается обоснованным подозрением, запрещён ли ghosting (передача информации мёртвыми игроками), сколько предупреждений до бана.
  2. Дайте команде damage log и команды ULX для TTT, и ничего больше, пока люди себя не проявят.
  3. Решайте по логу, а не по чату. На жалобу «он убил меня ни за что» отвечает лог, показывающий, что видел убийца: оружие предателя в руке, тело рядом, первый выстрел.
  4. За первое нарушение лучше убить игрока в начале следующего раунда, чем кикать. Это наказывает за действие, не опустошая сервер.

Доступ к панели - отдельный вопрос от власти в игре. На 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 и без него.

host_workshop_collectionсмонтированзагрузка при входераундыследующая картаКонтент CS:Smount.cfgКоллекция Workshopкарты и аддоныИгрокисвой CS:S или ошибкиГолосованиепосле лимита раундовСервер GMod+gamemode terrortown
Как сервер TTT доходит до игроков

Аддоны, которые реально стоят на серверах 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 здоровым:

  1. Перезапускайте ежедневно в пустой час. Серверы Garry's Mod медленно накапливают память и состояние Lua. На RE:NODE вкладка Schedules выполняет ночной перезапуск по cron-выражению, а графики в консоли показывают память относительно лимита тарифа, так что видно, ползёт ли она вверх.
  2. Делайте 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. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000