Pterohost docs

Как установить аддоны Garry's Mod на сервер и клиент

Подробное руководство по установке аддонов Garry's Mod через Steam Workshop, GMA-файлы и коллекции. Настройка server.cfg, gmsv_workshopdl и решение конфликтов.

Аддоны - главная причина, почему Garry’s Mod держится в топе Steam уже больше пятнадцати лет. Через них на сервер добавляют новое оружие, машины, гейм-моды, админ-панели и целые миры. В этом гайде разберём, как правильно установить аддоны на сервер и на клиент, чем GMA-файлы отличаются от Workshop-подписки, как настроить коллекцию через server.cfg и что делать, если аддоны не доходят до игроков.

Два способа установки: Workshop и GMA

В Garry’s Mod есть два формата аддонов. Первый - Steam Workshop: игрок подписывается на страницу аддона, Steam скачивает его в локальный кэш и при запуске игра подцепляет файл. Второй формат - GMA-архив, который кладётся напрямую в папку garrysmod/addons. Внутри GMA лежат модели, текстуры, Lua-скрипты и звуки - распаковывать вручную не нужно, движок читает архив на лету.

Для одиночной игры и тестов подходит Workshop. Для сервера выбор сложнее: Workshop удобен раздачей файлов клиентам, но требует публичной коллекции и стабильного канала до Steam. GMA-аддоны в addons/ работают локально на сервере, но без дополнительной настройки FastDL клиенты их не получат.

СпособГде хранитсяКак раздаётся клиентамКогда использовать
Steam Workshop (коллекция)На сервере: garrysmod/cache/workshopЧерез gmsv_workshopdl автоматическиПубличный сервер с 5-300 аддонами
GMA в addons/garrysmod/addons/*.gmaТолько через FastDL (HTTP/CDN)Приватные аддоны, кастомные сборки
Распакованный аддонgarrysmod/addons/folder/Через FastDL после упаковки в bz2Разработка и отладка Lua

Pterohost - игровой хостинг с DDoS-защитой, NVMe SSD и круглосуточной поддержкой. Промокод 4START даёт -20% на первый заказ. Заказать сервер Garry’s Mod

Установка аддонов на клиенте Garry’s Mod

Подписаться через Workshop - самый простой путь. Открыть страницу нужного аддона в Steam, нажать жёлтую кнопку Subscribe, дождаться загрузки. После запуска игры аддон автоматически появится в меню Addons (в правом нижнем углу главного меню). Там же его можно отключить, не отписываясь.

Steam складывает Workshop-аддоны в Steam/steamapps/workshop/content/4000/<addon_id>/. Это GMA-файлы, и при необходимости их можно перенести вручную - например, на сервер. ID аддона виден в URL страницы Workshop (?id=1234567890).

Установка GMA вручную на клиент: положить файл в Steam/steamapps/common/GarrysMod/garrysmod/addons/. Игра подхватит его при следующем запуске. Для распакованного аддона (папка с addon.json внутри) - точно так же, только в виде директории.

Если аддон не появляется в игре, проверьте: совпадает ли формат (.gma, не .zip), есть ли в нём корректный addon.json, не дублирует ли он уже подписанный аддон. Иногда помогает удалить кэш командой gmod_admin_cleanup в одиночной игре.

Установка аддонов на сервер через Workshop-коллекцию

Это рекомендованный путь для публичных серверов. Принцип такой: вы создаёте в Steam Workshop коллекцию из нужных аддонов, в неё добавляете все элементы (Add to collection), копируете ID коллекции и прописываете его в параметры запуска сервера. Сервер при старте скачивает GMA-файлы аддонов и раздаёт их игрокам.

Шаг 1. Создание коллекции

Открыть Steam Workshop для Garry’s Mod, нажать Create Collection. Дать название (например, “My DarkRP server”), указать GMod в качестве игры, тип - Server Content. Видимость - Public (приватные коллекции сервер не прочитает). После создания добавьте аддоны через кнопку Add Item на странице каждого аддона.

ID коллекции - это число в конце её URL: steamcommunity.com/sharedfiles/filedetails/?id=1234567890. Запомните его - оно нужно для параметров запуска.

Шаг 2. Параметры запуска srcds

В строку запуска srcds_run (или srcds.exe на Windows) добавьте флаги:

./srcds_run -game garrysmod \
  -console -ip 0.0.0.0 -port 27015 \
  +map gm_construct \
  +gamemode sandbox \
  +maxplayers 24 \
  +host_workshop_collection 1234567890 \
  +sv_setsteamaccount YOUR_GSLT_TOKEN

+host_workshop_collection - главный параметр. Сервер при старте обращается к Steam API, получает список GMA из коллекции и кладёт их в garrysmod/cache/workshop/. Если коллекция приватная или не существует - сервер запустится, но без аддонов.

+sv_setsteamaccount - GSLT-токен, без него сервер не виден в публичном браузере и не может полноценно использовать Workshop. Получить токен можно на steamcommunity.com/dev/managegameservers с указанием AppID 4000.

Шаг 3. Модуль gmsv_workshopdl

По умолчанию srcds раздаёт Workshop-аддоны через Steam, но для стабильной работы и быстрой загрузки клиентами ставят бинарный модуль gmsv_workshopdl. Он расширяет функциональность встроенного загрузчика и снижает количество отвалов на больших коллекциях.

Скачать модуль с GitHub (репозиторий gmod-workshopdl), положить файл gmsv_workshopdl_linux64.dll (или .so для Linux) в garrysmod/lua/bin/. Перезапустить сервер. В консоли при старте появится строка [Workshop DL] Loaded.

Шаг 4. Проверка через server.cfg

Часть настроек Workshop можно дублировать в server.cfg. Это удобно, если параметры запуска редактировать неудобно (например, на хостинге через панель):

// server.cfg
hostname "My GMod Server"
sv_lan 0
sv_region 3
sv_allowupload 0
sv_allowdownload 1
net_maxfilesize 64

// Workshop
host_workshop_collection 1234567890

После перезапуска проверьте в консоли строку Adding collection 1234567890. Если видите Failed to get collection contents - коллекция приватная или ID неверный.

Установка GMA-аддонов через папку addons

Если аддона нет в Workshop (приватный, кастомный, скачанный с GitHub в виде архива) - используйте папку garrysmod/addons/. Поддерживаются два формата:

  • GMA-файл: garrysmod/addons/myaddon.gma - читается напрямую.
  • Распакованная папка: garrysmod/addons/myaddon/ с файлом addon.json в корне.

Чтобы распаковать GMA, используйте утилиту gmad.exe из Steam/steamapps/common/GarrysMod/bin/:

./gmad_linux extract -file myaddon.gma -out myaddon/

Обратная операция (упаковка в GMA для загрузки в Workshop):

./gmad_linux create -folder myaddon/ -out myaddon.gma

Главная проблема addons/ - клиенты не получат файлы автоматически. Им придётся либо самим подписаться на Workshop-версию, либо вы должны поднять FastDL.

FastDL для раздачи кастомных аддонов

FastDL (Fast Download) - HTTP-сервер, с которого Source-движок качает контент быстрее, чем через стандартный SourceTV. Без FastDL клиент загружает кастомные материалы со скоростью 20 КБ/с - на 200 МБ это полчаса.

Что нужно:

  1. Поднять веб-сервер (nginx, Apache) на любом домене (fastdl.example.com).
  2. Сжать кастомные файлы в bz2 (bzip2 -k file.mdl).
  3. Скопировать на веб-сервер структуру materials/, models/, sound/, maps/ с .bz2-файлами.
  4. В server.cfg указать:
sv_downloadurl "http://fastdl.example.com/gmod/"
sv_allowdownload 1
net_maxfilesize 64

После перезапуска при подключении клиент будет показывать Downloading from http://fastdl.example.com/.... Для Workshop-аддонов FastDL не нужен - они идут напрямую из Steam.

Совместимость и конфликты аддонов

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

  • Lua-ошибки в правом верхнем углу (включить developer 1).
  • Пропали скиллы или анимации SWEPs.
  • Текстуры ломаются (фиолетовые квадраты, ENT_NO_TEXTURE).

Чтобы найти проблему, включите логирование загрузки Lua:

lua_log_loadfile 1

Сервер запишет в garrysmod/data/lua_log/ все загруженные файлы с тайм-стампами. Также пригодится:

  • gmod_admin_cleanup - удалить все пропы и сущности, перезагрузить аддоны.
  • lua_run print(SWEP) - проверить базу SWEP в реальном времени.
  • mat_reloadallmaterials - перезагрузить материалы (помогает при фиолетовых текстурах).

Конфликты SWEPs (Scripted Weapons) лечат либо удалением одной из копий, либо переименованием классов в weapons/<class>/shared.lua. Если виноваты материалы (materials/ с одинаковыми путями) - переименуйте папку или удалите дубль.

Размер коллекции и нагрузка на сервер

Steam Workshop теоретически поддерживает коллекции любого размера, но на практике:

  • 50-200 МБ - оптимально, грузится за 5-10 секунд при коннекте.
  • 500 МБ-1 ГБ - заметные таймауты, часть игроков отваливается.
  • Свыше 1.5 ГБ - постоянные ошибки Failed to load workshop addon.

Для DarkRP-серверов с десятками SWEP-паков типичный размер - 800 МБ-1.2 ГБ. Чтобы уменьшить - выкидывайте дубликаты (часто несколько SWEP-паков содержат одни и те же модели), используйте content-only аддоны (без Lua) и переводите редко используемые ассеты в FastDL.

Каждый Lua-аддон с активными хуками отъедает CPU. Wiremod, Stargate, ACF3 - известные тяжёлые гейм-моды. На слабом VPS с 2 ГБ RAM лучше ограничиться 20-30 Lua-аддонами. Подробнее о подборе железа - в гайде сколько RAM нужно серверу.

Удаление и обновление аддонов

Обновление Workshop-аддонов происходит автоматически: при следующем запуске сервер сравнивает версию из Steam с локальным GMA и докачивает новый файл. Иногда кэш забивается старыми версиями, и обновление застревает - тогда нужно очистить garrysmod/cache/workshop/ и garrysmod/download/.

Удаление с сервера: убрать ID аддона из Workshop-коллекции в Steam. На следующий рестарт сервер не скачает удалённый аддон, но клиенты у которых он подписан, всё ещё будут пытаться его подгрузить. Подробно об очистке - в гайде как удалить Workshop-аддоны.

Полный сброс - удалить папку garrysmod/cache/ и перезапустить сервер. Все аддоны скачаются заново, на это уйдёт 5-20 минут в зависимости от размера коллекции.

Безопасность аддонов

В Workshop попадают аддоны с произвольным Lua-кодом, и часть из них содержит бэкдоры (lua-backdoor). Признаки заражённого аддона:

  • В коде есть RunString, http.Post на левые домены, CompileString.
  • Аддон требует подозрительные разрешения (net.Send без понятной цели).
  • Странные обращения к RunConsoleCommand.

Перед добавлением на публичный сервер проверьте Lua-исходники аддона через gmad extract и grep -r 'RunString\|http\.Post' addon/. Альтернатива - ставить антивирус для Lua-аддонов (TickleMyPickle, GLuaFixer). Для админ-команд используйте проверенные системы - настройка ULX.

Pterohost - игровой хостинг с DDoS-защитой, NVMe SSD и круглосуточной поддержкой. Промокод 4START даёт -20% на первый заказ. Заказать сервер Garry’s Mod

FAQ

Как установить аддоны на сервер Garry’s Mod?

Создайте Workshop-коллекцию в Steam, скопируйте её ID и пропишите параметр +host_workshop_collection ID в строке запуска srcds. Установите модуль gmsv_workshopdl, и сервер начнёт автоматически раздавать аддоны клиентам при подключении.

Куда устанавливать аддоны в Garry’s Mod?

Клиентские аддоны попадают в Steam/steamapps/common/GarrysMod/garrysmod/addons. Серверные аддоны вне Workshop кладут в папку garrysmod/addons на сервере, либо распаковывают GMA-файлы через gmad.exe.

Почему аддоны не загружаются с сервера к игроку?

Проверьте, что коллекция Workshop публичная, ID указан в +host_workshop_collection, модуль gmsv_workshopdl установлен в lua/bin, а размер коллекции не превышает 2-3 ГБ - большие коллекции часто отваливаются по таймауту.

Чем GMA-файл отличается от Workshop-аддона?

GMA - это запакованный архив аддона, который Steam Workshop раздаёт автоматически. Если кладёте аддон вручную в garrysmod/addons как .gma, его прочтёт игра, но клиенты не получат файлы при подключении - нужно отдельно настроить FastDL или поднять коллекцию Workshop.

Как удалить аддоны Garry’s Mod?

На клиенте отпишитесь от аддона в Steam Workshop и перезапустите игру. На сервере удалите ID из коллекции Workshop или очистите кэш в garrysmod/cache/workshop. Подробнее в гайде по удалению Workshop-аддонов.

Почему после установки аддонов сервер лагает?

Каждый Lua-аддон с тиками отъедает CPU, а SWEPs и Wiremod-контрапции грузят сетевой канал. Уберите тяжёлые гейм-моды (Stargate, ACF), ограничьте количество SWEP до 50-70 и проверьте Lua-ошибки командой lua_log_loadfile.