Как установить аддоны 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 МБ это полчаса.
Что нужно:
- Поднять веб-сервер (nginx, Apache) на любом домене (
fastdl.example.com). - Сжать кастомные файлы в bz2 (
bzip2 -k file.mdl). - Скопировать на веб-сервер структуру
materials/,models/,sound/,maps/с .bz2-файлами. - В
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.