Как создать сервер Garry’s Mod: локальный и выделенный

Свой сервер Garry’s Mod можно поднять двумя способами. Первый — прямо из меню игры: 5 минут, сервер живёт, пока вы сами в игре, и подходит, чтобы быстро собраться с друзьями на вечер в Sandbox. Второй — выделенный сервер через SteamCMD: он работает без запущенного клиента игры, круглые сутки, и его нужно один раз настроить — зато потом им можно управлять как полноценным DarkRP- или TTT-проектом с админкой и своими аддонами.

Ниже — пошагово оба варианта, а заодно порты, токен GSLT, server.cfg, доставка аддонов клиентам и разбор частых проблем вроде «сервер не виден в списке» или ERROR у игроков.

ВариантКому подходитПлюсыМинусыПроброс портов
Локальный (из меню)Быстрая игра с друзьями на пару часовНе требует установки, запускается за минутуЖивёт, пока вы в игре; грузит ваш ПК и каналНужен для игры через интернет (не для LAN)
Выделенный на своём ПК/сервереПостоянный проект: DarkRP, TTT, комьюнитиРаботает 24/7, полный контроль, свои аддоны и админкаТребует настройки, серый IP может помешатьНужен, если сервер стоит дома за роутером
Аренда VPS / игрового хостингаТе же задачи, но без своего железа и без проблем с IPБелый IP, не занимает домашний канал, работает без вашего ПКЕжемесячная стоимость, зависит от тарифа провайдераОбычно уже открыт провайдером

Способ 1. Локальный сервер из меню игры

Это тот же движок сервера, что и у выделенного, просто запущенный внутри вашего клиента Garry’s Mod. Подходит, чтобы собраться с друзьями без установки чего-либо лишнего.

  1. Запустите Garry’s Mod и выберите «Начать новую игру».
  2. Выберите карту (например, gm_construct) и режим игры.
  3. Поставьте число игроков больше 1 — именно это превращает одиночную игру в сервер, доступный другим.
  4. Задайте имя сервера и при желании пароль, выберите видимость — только по LAN или в интернете.
  5. Нажмите старт. Сервер поднимется, и вы окажетесь на нём как первый игрок.

Пригласить друзей проще всего через Steam: откройте оверлей, зайдите в профиль друга и выберите «Пригласить в игру» — Steam сам подставит нужный адрес и порт. Если играете не через приглашение, друзьям нужно знать ваш внешний IP и порт (по умолчанию 27015), а на вашем роутере — открыт проброс порта на этот же порт (подробнее — в разделе про порты ниже). Пошагово про сетевые нюансы такой игры — в статье про игру по сети с другом.

Ограничения локального сервера просты: он существует, пока вы не выйдете из игры или не свернёте её надолго, вся нагрузка (расчёт физики, сеть, отправка данных всем игрокам) ложится на ваш компьютер и ваш интернет-канал, а держать его постоянно включённым неудобно — компьютер должен работать без сна и без перезагрузок.

Способ 2. Выделенный сервер через SteamCMD

Выделенный сервер — это отдельный процесс srcds, который не привязан к запущенному клиенту игры. Его можно держать включённым постоянно на домашнем ПК, отдельном компьютере или арендованном сервере.

Что понадобится

Формально сервер запускается и на Windows, и на Linux — выбор обычно зависит от того, с какой ОС вам удобнее работать. Для Linux меньше накладных расходов на фоновые процессы, для Windows — привычнее интерфейс. Ресурсы ниже — ориентир, а не строгая норма: для Garry’s Mod (особенно DarkRP с десятками Lua-аддонов) важнее производительность одного ядра процессора, чем их количество, — движок Source слабо использует многопоточность.

Размер сервераИгроковОЗУ (ориентир)ЦП
Маленький Sandbox/TTTдо 16от 2 ГБ2+ ядра, важна частота
Средний, с аддонами16–32от 4 ГБ4 ядра, высокая частота одного ядра
DarkRP с большим числом плагинов32+от 6–8 ГБ4+ ядра, максимально высокая частота

Если сервер тормозит уже на этапе выбора железа — сначала посмотрите на количество и качество Lua-аддонов, а не только на характеристики. Это тот же принцип, что и с FPS в одиночной игре: разбор причин лагов и способов их убрать — в статье про производительность Garry’s Mod.

Установка SteamCMD и сервера

SteamCMD — консольная утилита Valve для загрузки серверных файлов без установки самой игры. Скачайте её с официальной страницы developer.valvesoftware.com и распакуйте в отдельную папку.

Запустите steamcmd.exe (или ./steamcmd.sh на Linux) и последовательно выполните:

login anonymous
force_install_dir C:\gmodserver
app_update 4020 validate
quit

Разберём команды: login anonymous — вход без привязки к личному аккаунту Steam (для загрузки серверных файлов аккаунт не нужен); force_install_dir — папка, куда встанет сервер (укажите её до команды установки); app_update 4020 validate — собственно загрузка файлов сервера Garry’s Mod (у сервера свой App ID — 4020, отличный от App ID самой игры 4000) с проверкой целостности файлов; quit — выход из SteamCMD. Всю строку можно передать и одной командой при запуске: steamcmd.exe +login anonymous +force_install_dir C:\gmodserver +app_update 4020 validate +quit.

Загрузка займёт от нескольких минут до получаса в зависимости от канала. После завершения в указанной папке появится структура сервера, включая исполняемый файл srcds.exe (на Linux — srcds_run) и папку garrysmod.

Батник или скрипт запуска

Сервер запускается из командной строки с набором параметров. Проще всего сохранить команду в файл start.bat рядом с srcds.exe:

@echo off
srcds.exe -console -game garrysmod +maxplayers 16 +map gm_construct +gamemode sandbox
pause

На Linux аналогичный запуск выглядит так:

./srcds_run -console -game garrysmod +maxplayers 16 +map gm_construct +gamemode sandbox
ПараметрЧто делает
-consoleОткрывает консоль сервера в отдельном окне
-game garrysmodУказывает, что запускается именно Garry’s Mod, а не другая Source-игра
-port 27016Меняет порт сервера — нужно, если на машине запущено несколько серверов одновременно
+map gm_constructКарта, с которой стартует сервер
+gamemode sandboxИгровой режим (sandbox, darkrp, terrortown и т. д.)
+maxplayers 16Максимум игроков одновременно
+host_workshop_collection IDКоллекция Мастерской, которую сервер скачает и подключит у себя
+sv_setsteamaccount TOKENТокен GSLT — см. раздел ниже

Параметры с одним дефисом (-console, -game, -port) — это флаги запуска движка, а с плюсом (+map, +gamemode, +maxplayers и другие) — консольные команды, которые выполняются сразу при старте, как если бы вы вписали их в консоль вручную.

server.cfg

Основной файл настроек сервера лежит по пути garrysmod/cfg/server.cfg (если его нет — создайте текстовым редактором). Он выполняется автоматически при каждом запуске. Пример с пояснениями:

// Имя сервера в списке серверов
hostname "Мой сервер Garry's Mod"

// Пароль для входа на сервер (оставьте пустым, если сервер публичный)
sv_password ""

// Пароль администратора для удалённого управления через RCON — обязательно смените
rcon_password "замените_на_сложный_пароль"

// Регион сервера для более точного отображения в браузере серверов
sv_region 255

// 0 — сервер виден в интернете, 1 — только по локальной сети
sv_lan 0

// Разрешить игрокам загружать на сервер свои спреи и файлы
sv_allowupload 1

// Разрешить скачивание карт/контента напрямую с сервера (медленно; для быстрой раздачи см. sv_downloadurl)
sv_allowdownload 1

// Адрес, откуда клиенты будут быстро скачивать карты и аддоны (FastDL), если он настроен
// sv_downloadurl "https://example.com/garrysmod/"

// Кастомная заставка загрузки (необязательно)
// sv_loadingurl "https://example.com/loading"

Строку sv_downloadurl имеет смысл раскомментировать только тогда, когда у вас реально есть отдельный веб-сервер с файлами карт и аддонов — это ускоряет скачивание контента игроками в разы по сравнению со встроенной раздачей. Если такого веб-сервера нет, оставьте раздачу через Мастерскую (см. раздел про аддоны ниже) — для большинства серверов этого достаточно.

Порты и видимость в списке серверов

По умолчанию Garry’s Mod-сервер слушает порт 27015: по UDP идёт основной игровой трафик (подключение игроков, обмен данными), по TCP — RCON, если вы им пользуетесь. Если планируете держать на одной машине несколько серверов сразу, каждому следующему задавайте свой порт (-port 27016, 27017 и так далее).

Чтобы сервер увидели другие игроки через интернет (не по LAN), нужно:

  • В настройках роутера пробросить порт 27015 (UDP и, если используете RCON, TCP) на локальный IP компьютера с сервером.
  • Разрешить srcds.exe или srcds_run в брандмауэре Windows (или файрволе Linux) — точечно для этого процесса и порта, а не отключать защиту целиком.
  • Убедиться, что ваш внешний IP белый, а не серый. Серый IP (частый случай при CGNAT у мобильных операторов и части провайдеров) означает, что проброс портов на вашем роутере ничего не даст — снаружи до вашего роутера просто не достучаться напрямую. Решения — попросить провайдера выдать белый (выделенный) IP или перенести сервер на VPS/игровой хостинг, где белый IP уже есть по умолчанию.

Токен GSLT

GSLT (Game Server Login Token) — токен, который подтверждает Steam, что сервер официальный, а не подставной. Без него сервер хуже показывается в браузере серверов (Steam понижает серверы без токена в списке), поэтому для публичного сервера токен стоит создать сразу.

  1. Зайдите на steamcommunity.com/dev/managegameservers под своим аккаунтом Steam.
  2. Укажите App ID 4000 — это ID самой игры Garry’s Mod, а не серверных файлов (4020 используется только для загрузки через SteamCMD, для токена он не подходит).
  3. Впишите произвольную заметку, чтобы отличать сервер от других, и нажмите создание токена.
  4. Скопируйте полученный токен и добавьте в строку запуска: +sv_setsteamaccount ВАШ_ТОКЕН.

Один токен — один работающий сервер одновременно: если запустить с тем же GSLT второй процесс, авторизацию получит только один из них.

Аддоны и карты на сервере

Чтобы игроки не заходили на сервер с чистой игрой и не видели ERROR вместо ваших карт и моделей, контент нужно доставить им автоматически — через Мастерскую.

Шаг первый — собрать нужные аддоны и карты в одну коллекцию Мастерской Steam (она должна быть публичной или доступной по ссылке, иначе сервер её не увидит) и указать её ID параметром +host_workshop_collection ID_КОЛЛЕКЦИИ в строке запуска. Сервер сам скачает и подключит содержимое коллекции. Но учтите: клиентам из коллекции автоматически скачивается только текущая карта, если она в коллекции есть.

Шаг второй — пометить остальные аддоны для скачивания игроками. Для этого в серверном Lua-скрипте, например в файле lua/autorun/server/workshop.lua, для каждого нужного аддона пишут строку resource.AddWorkshop("ID_аддона"). Альтернатива — попросить игроков подписаться на коллекцию сервера самостоятельно (ссылку обычно дают в описании сервера или на экране загрузки).

Более подробно про сам процесс установки модов на сервер и в клиент — в статье об установке аддонов на Гаррис Мод, а официальный механизм раздачи описан на wiki.facepunch.com.

Для больших серверов с тяжёлым контентом дополнительно применяют FastDL — раздачу файлов через отдельный веб-сервер по адресу из sv_downloadurl, но для старта хватает связки GSLT + Мастерская. Если после всех этих шагов игроки всё равно видят фиолетово-чёрную текстуру или недостающие модели, разбор причин и решение — в статье как убрать ERROR у игроков.

Игровой режим: Sandbox, DarkRP, TTT и другие

Режим задаётся параметром +gamemode в строке запуска: sandbox идёт в комплекте с сервером «из коробки», остальные — DarkRP, TTT (Trouble in Terrorist Town) и десятки менее известных — устанавливаются как обычные аддоны через Мастерскую или из официального репозитория проекта на GitHub, после чего название их папки указывается в +gamemode.

Для DarkRP отдельно стоит поставить аддон darkrpmodification — он выносит основные настройки режима (работы, зарплаты, цены, лимиты) в отдельные читаемые файлы конфигурации, так что их можно менять, не трогая исходный код самого DarkRP и не боясь потерять правки при обновлении режима.

Если делаете RP-сервер, обратите внимание на готовую карту rp_downtown_v4c_v2 и HUD для DarkRP — Elegant HUD, а также подборку работ (профессий) для DarkRP. Для TTT подойдёт карта ttt_rooftops_a2. Больше вариантов карт под любой режим — в разделе карт для Garry’s Mod.

Админка и управление сервером

Голой консоли обычно недостаточно для повседневной модерации — удобнее поставить админ-мод. Два самых распространённых варианта — связка ULX + ULib и SAM: оба дают внутриигровое меню, систему рангов и права разной степени доступа, разница в основном в интерфейсе и наборе дополнительных модулей, «лучшего» варианта здесь нет — выбирайте по удобству.

Права себе на только что поднятом сервере обычно выдаются либо через консольную команду самого админ-мода (например, назначение супер-админа первому подключившемуся), либо прямым редактированием файла со списком админов — процедура отличается у ULX и SAM, смотрите документацию конкретного аддона на странице его Мастерской.

Управлять сервером удалённо, не заходя в игру, позволяет RCON: подключаетесь консольным клиентом или через админ-мод, вводите пароль из rcon_password и получаете доступ к серверным командам. Базовый набор, который стоит знать:

КомандаЧто делает
changelevel картаСмена карты без перезапуска сервера
kick имя_игрокаВыкинуть игрока с сервера
banid время SteamIDЗабанить игрока по SteamID на указанное время
statusСписок игроков онлайн, их пинг и SteamID

Обновление и безопасность

Сервер обновляется той же командой, которой ставился: запустите SteamCMD и повторите app_update 4020 validate с тем же force_install_dir — утилита скачает только изменившиеся файлы. Делать это стоит после каждого крупного обновления самой игры, иначе клиенты с актуальной версией не смогут подключиться к устаревшему серверу.

  • Регулярно бэкапьте папки garrysmod/data (сохранения, данные аддонов, статистика DarkRP) и garrysmod/cfg (все ваши настройки) — их проще всего скопировать целиком перед крупным обновлением или новым аддоном.
  • Не ставьте «слитые» (leak) версии платных аддонов из сомнительных источников — в переупакованный код нередко вшивают бэкдоры и скрытую отправку данных на сторонние сервера, что ставит под угрозу весь сервер и его администраторов.
  • Задайте сложный, уникальный rcon_password — открытый или слабый RCON остаётся одним из самых частых способов перехвата серверов Source-игр.

Частые проблемы

СимптомВероятная причинаРешение
Сервер не виден в браузере серверовsv_lan выставлен в 1, порт не проброшен, нет GSLTДобавить +sv_setsteamaccount, проверить sv_lan 0, перепроверить проброс порта 27015
Друзья не могут подключиться напрямую по IPСерый IP, закрыт файрвол, неверный портУзнать, белый ли у вас IP; открыть порт в брандмауэре; уточнить порт, если он изменён параметром -port
Вечная загрузка / «Retrying»Не хватает пропускной способности канала, битый/недоступный контент МастерскойПроверить коллекцию на актуальность, снизить число тяжёлых аддонов, рассмотреть FastDL
У части игроков ERROR или фиолетовые текстурыАддон не помечен на скачивание клиентами через resource.AddWorkshopДобавить resource.AddWorkshop для каждого аддона с моделями и текстурами или дать игрокам ссылку на коллекцию; см. отдельный разбор в статье про ERROR
Сервер падает сразу при стартеКонфликт или ошибка в одном из Lua-аддоновПосмотреть консоль сервера на ошибку в момент краша, временно отключить последний добавленный аддон и проверить снова

Чек-лист запуска

  • Сервер установлен через SteamCMD (app_update 4020 validate), путь force_install_dir зафиксирован.
  • Строка запуска содержит карту, режим, лимит игроков и, если нужно, +host_workshop_collection.
  • Создан и вписан токен GSLT (+sv_setsteamaccount), App ID при создании — 4000.
  • Настроен server.cfg: имя, пароли (sv_password, сложный rcon_password), sv_lan 0 для игры через интернет.
  • Порт 27015 (UDP, и TCP при использовании RCON) проброшен на роутере и разрешён в брандмауэре.
  • Проверено, белый ли внешний IP — если серый, учтён вариант с VPS/хостингом.
  • Поставлен и настроен админ-мод (ULX/ULib или SAM), права выданы себе.
  • Сделан первый бэкап garrysmod/data и garrysmod/cfg перед добавлением аддонов.

Частые вопросы

Можно ли сделать сервер Garry’s Mod бесплатно?

Да. Сами серверные файлы и SteamCMD бесплатны, платить нужно только за само железо и трафик — свой компьютер и домашний интернет для этого подходят, если готовы держать его включённым и у вас белый IP.

Какой порт нужно открыть для сервера?

По умолчанию 27015: UDP — для игрового трафика, TCP — дополнительно, если пользуетесь RCON. Если на одной машине несколько серверов, у каждого следующего должен быть свой порт.

Зачем нужен GSLT и что будет, если его не создавать?

GSLT привязывает сервер к вашему аккаунту Steam и подтверждает, что это обычный легитимный сервер. Без токена сервер хуже ранжируется в браузере серверов, поэтому для публичного проекта его стоит создать сразу — это бесплатно и занимает пару минут.

Как заставить игроков автоматически скачивать мои аддоны?

Коллекция Мастерской в параметре +host_workshop_collection ставит аддоны на сам сервер, а клиентам автоматически скачивает только текущую карту. Чтобы игроки получили и остальные аддоны, пометьте каждый функцией resource.AddWorkshop("ID") в серверном Lua-скрипте или попросите игроков подписаться на коллекцию.

Сколько нужно оперативной памяти для сервера?

Для небольшого Sandbox или TTT на 16 игроков хватает 2 ГБ, для DarkRP с большим количеством плагинов и 30+ игроками разумнее закладывать 6–8 ГБ. Не менее важна частота (производительность одного ядра) процессора — движок Source слабо распараллеливается.

Почему друзья не видят мой сервер в списке?

Чаще всего дело в одном из трёх: включён режим только для LAN (sv_lan 1), порт не проброшен на роутере или закрыт файрволом, не создан GSLT. Проверьте по порядку эти три пункта.

Можно ли играть без проброса портов?

Локальный сервер по LAN — можно, если все играющие в одной сети. Для игры через интернет без проброса порта часто выручает приглашение через Steam-оверлей для локального сервера из меню игры, виртуальная локальная сеть или перенос сервера на VPS/хостинг с уже открытыми портами и белым IP.

Как поставить пароль на сервер?

В server.cfg задать sv_password "ваш_пароль" — сервер останется видимым в списке, но подключиться смогут только те, кто знает пароль. Для администрирования используется отдельный, обязательно другой пароль — rcon_password.