Установка и настройка сервера Garry’s Mod

Вступление

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

Статья об установке и настройке выделенного (dedicated) сервера доступна здесь.

Что нам потребуется для работы:

  1. Сам Garry’s Mod (лицензионная Steam-версия).
  2. Набор для установки плагинов нашего производства (можете пропустить, если хотите устанавливать плагины вручную).
  3. Любой текстовый редактор для редактирования конфигов.

В отличие от слушающих серверов других Source-приложений, слушающий сервер Garry’s Mod по функциональности практически ничем не отличается от Dedicated Server’а. Общие черты слушающего и выделенного сервера Garry’s Mod:

  • позволяет устанавливать любые lua-модификации и плагины в каталог /addons/;
  • позволяет установить плагины для администрирования сервера и права администраторов (Garry’s Mod — единственный слушающий сервер, в котором создатель может быть не администратором).

Различия между слушающим и выделенным сервером Garry’s Mod:

  • при выходе из игры создателя, сервер автоматически отключается, а все играющие будут кикнуты с сообщением «Server is shutting down«;
  • позволяет одновременно хостить сервер и находиться на нём;
  • все настройки слушающего сервера хранятся в файле listenserver.cfg, а выделенного — server.cfg.

Преимущества слушающего сервера Garry’s Mod:

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

Техническая часть

  1. Чтобы к Вам могли подключаться клиенты, Вы должны иметь «белый» IP-адрес, т.е. видимый из Интернета. Создание сервера с «серым» IP, либо с жёстким NAT’ом провайдера не имеет смысла, т.к. подключиться к такому серверу никто не сможет (кроме находящихся с вами в одной подсети).
  2. Сервер запускается на порту 27015, поэтому если у Вас ADSL, вы должны пробросить этот порт по протоколу UDP в настройках своего роутера (модема). Обычно проброс портов настраивается в веб-интерфейсе роутера в разделе NATPort Forwarding или NATVirtual Servers.
  3. На сервере главное – скорость отдачи от Вас клиентам, а также мощность процессора Вашего компьютера. На ADSL максимальная отдача может составлять около 780 Кбит/с – 1 МБит/с (на ADSL с модуляцией AnnexM (такая разновидность встречается крайне редко) – 3 Мбит/с). Если у Вас тариф на 256 КБит/с, то к Вам могут подключиться 6 клиентов. Если 512 – 10-12 клиентов, если 1 Мбит и более (ADSL) – 18 клиентов, кабель без NAT – 23 клиента (максимум для слушающего сервера). В соотвествие с этими параметрами Вы должны настроить значение переменной «Максимальное число игроков» во время создания сервера. Если Ваш канал или процессор не будут выдерживать такое количество подключившихся игроков, у всех появятся лаги.

Внимание! Не создавайте сервер на большое количество пользователей, т.к. современный компьютер вряд-ли потянет более 12-15 одновременно работающих пользователей, активно работающих с Wire, Stargate и т.п. из-за того, что Garry’s Mod до сих пор не поддерживает мультипоточность. Также в настройках сервера или файле конфигурации listenserver.cfg не забудьте указать максимальное количество объектов, элементов, NPC и т.д., которые может создать один пользователь. Если здесь будут стоять огромные числа (как по умолчанию в 200), то это может подвергнуть Ваш сервер серьёзным лагам.

В нашем конфиге уже установлены оптимальные значения всех настроек, а NPC выключены вообще.

Настройка и запуск сервера

  1. Устанавливаем Steam и Garry’s Mod (если ещё не установлены).
  2. Запускам Garry’s Mod, ждём полной загрузки и выходим из неё (это нужно только если выполнялся шаг 1 для создания файлов базовой конфигурации).
  3. Запускаем Garry’s Mod, нажимаем «Создать сервер» («Create Server«), набираем команду status в консоли, записываем её вывод например в буфер обмена (выделяем выданный сервером текст, нажимаем правой кнопкой — «Копировать«), либо на бумагу и выходим из Garry’s Mod.
  4. Устанавливаем джентльменский набор плагинов из svn для Garry’s Mod, так, как описано в этой статье. Всю информацию по установке и сами скрипты установки/обновления плагинов Вы найдёте по этой ссылке.
  5. Делаем себя и, если нужно, своих друзей администраторами свежесозданного сервера (обязательно, иначе ULX-админка не даст Вам доступа). Чтобы сделать себя админом, нужно:
    • узнать Ваш личный SteamID и, если хотите сделать и друзей админами (не рекомендуется ;-)), то и их SteamID. Как это сделать описано на 3 шаге;
    • в любом текстовом редакторе открываем файл %Steam%\steamapps\common\garrysmod\garrysmod\settings\users.txt, где %Steam% — путь к установленному клиенту Steam. В этот файл и прописываются администраторы сервера по SteamID. Ищем в этом файле раздел «superadmin» и после строки //»garry» «STEAM_0:1:7099» жмём Enter (начинаем новую строку) и пишем свою в виде «ВАШ_НИК» «STEAM_0:1:XXXXXXXXX», где ВАШ_НИК — это ник админа, который будет в списке вывода админов сервера (здесь разрешено вводить только латинские буквы и цифры без пробелов; кавычки обязательны), а STEAM_0:1:XXXXXXXXX — это Ваш SteamID (замените на настоящий, естественно ;-)), полученный на 3 шаге. Здесь же после этой строчки может добавить и своих друзей (но я бы не рекомендовал этого делать; одного админа вполне достаточно).
  6. Качаем и распаковываем архив с файлами конфигурации в папку %Steam%\steamapps\common\garrysmod\garrysmod\cfg\, где %Steam% — путь к установленному клиенту Steam. Заменяем имеющиеся файлы. Архив обновляется после выхода серьёзных изменений в Garry’s Mod, а также при обнаружении ошибок и для добавления новых функций.
  7. Открываем распакованный файл listenserver.cfg в любом текстовом редакторе (например, в Блокноте Windows) и делаем нужные настройки (меняем имя сервера (переменная hostname), настройки и т.п.). В файле я всё подробно описал какая переменная чем управляет, что включает/выключает, поэтому на этом я останавливаться не буду здесь. Внимание! Первым делом задайте пароль вместо !!!CHANGEME!!!, иначе Ваш сервер могут взломать.
  8. Запускаем Garry’s Mod, выбираем в главном меню пункт «Создать сервер» («Create multiplayer«). В открывшемся окне на первой вкладке выбираем карту (рекомендуется gm_flatgrass или gm_construct), затем переходим на страницу «Options«. Здесь установите максимально число игроков, которые могут подключиться к Вашему серверу («Max Players«) и обязательно уберите галочку из строки «Local network game» (иначе никто не сможет подключиться к Вам). Все остальные пункты изменять не нужно, т.к. они изменяются только в конфигурационном файле listenserver.cfg (этот файл имеет более высокий приоритет, чем графическое меню).
  9. Жмём кнопку «Start game» внизу окна и ждём окончания запуска сервера.
  10. Даём свой внешний IP-адрес всем, кто должен к Вам подключиться и они смогут это сделать, набрав у себя в консоли Garry’s Mod команду connect IP_вашего_сервера:27015 (например, connect 126.65.110.99:27015). Свой внешний адрес можно узнать тут: http://www.2ip.ru (он определится в строке “Ваш IP-адрес“).
  11. Если к Вашему серверу кто-нибудь подключился, значит он успешно установлен и настроен. Чтобы отключить сервер, достаточно войти в меню Garry’s Mod клавишей Esc и выбрать пункт «Отключиться» («Disconnect«). После этого сервер кикнет всех, кто на нём играл и закончит свою работу.

Мини-FAQ

Q: Как запретить выдавать игрокам оружие (давать только Physgun, грави-ган, тулган и скриншотган)?

A: Установите плагин U-Restrict (если Вы устанавливали с помощью наших скриптов, то он уже установлен и автоматически активирован).

Q: Как изменить сообщение, которое появляется при заходе на созданный сервер Garry’s Mod?

A: Отредактируйте файл %Steam%\steamapps\common\garrysmod\garrysmod\data\ulx\motd.txt, где %Steam% — путь к установленному клиенту Steam. Это обычный HTML-файл.

Q: Куда пишутся сокращённые логи админки?

A: Логи админки ULX пишутся в %Steam%\steamapps\common\garrysmod\garrysmod\data\ulx_logs\ДАТА.txt, где %Steam% — путь к установленному клиенту Steam, а ДАТА — сегодняшняя дата в формате ММ-ДД-ГГ.

Q: Мне нужно выдавать игрокам при подключении к серверу определённое оружие. Как это сделать?

A: Как уже писалось выше, нужен плагин U-Restrict для админки (если Вы устанавливали набор плагинов с помощью наших скриптов, он уже установлен). Итак, чтобы выдать нужное оружие, откройте файл %Steam%\steamapps\common\garrysmod\garrysmod\data\URestrict\loadouts.txt в любом текстовом редакторе и в разделе loadout после gmod_tool введите полное имя нужного оружия, например weapon_smg. Это оружие будет автоматически выдано игроку после подключения к серверу, а также после его респауна.

Q: При подключении к серверу моего друга, его Garry’s Mod пытается скачать огромное количество файлов. Что делать?

A: Это значит, что у Вашего друга установлены не все плагины, которые установлены у Вас в каталоге /addons/ Garry’s Mod’а. Нужно, чтобы Ваш друг установил их и чтобы версии плагинов совпадали. Только тогда ему не придётся ничего качать. Рекомендуем пользоваться нашим набором скриптов по установке и обновлению плагинов.

134 commentary to post

  1. А папки branches/
    tags/
    trunk/ кидать в addons?

  2. И ещё какой пароль и лог для скачки?

  3. Скачал папки ulx и ulib в addons. На сервере когда пишу ulx menu пишет неизвестная команда ulx.

  4. Могу только кикать и банить консолькой(

  5. Даниил :

    А папки branches/
    tags/
    trunk/ кидать в addons?

    Нужно делать checkout из trunk, т.е. брать последнюю версию.

  6. Даниил :

    И ещё какой пароль и лог для скачки?

    Логин и пароль не должен запрашиваться при скачивании по протоколу http. Для анонимного доступа в SVN всегда используется логин и пароль anonsvn.

  7. Даниил :

    Скачал папки ulx и ulib в addons. На сервере когда пишу ulx menu пишет неизвестная команда ulx.

    Они должны быть помещены непосредственно в /addons/ на сервере. Убедитесь, что SVN-клиент не создал там trunk, а уже в неё поместил ulx и ulib.

    Можете воспользоваться готовыми скриптами. Исправьте только путь к каталогу /addons/ на сервере и запустите скрипт.

  8. Установка такая же если у меня с WiFi битый айпи?

  9. Никита :

    WiFi

    Не рекомендуется держать сервер на беспроводном соединении, т.к. у всех пользователей могут наблюдаться фризы из-за различных помех в канале.

    Никита :

    битый айпи

    Какой-какой IP? 🙂

  10. Блин, после обновления грандиозного ничего не могу с сервером сделать, заного скачал файлы сервера (вообще до этого удалил полностью). Решил поставить ULX. Вставляю в свн ссылку, все как обычно, ввожу логин\пароль (anonsvn)-не подходит. Пошел скачивать Evolve (тоже админка такая, раньше стояла и все норм). Вроде-бы поставил, решил зайти, ну и когда захожу кикает с сообщением «Too many lua errors! Sorry!». И как теперь понимать это? И еще, как ставить аддоны на сервер теперь? Формат аддонов же изменили.

  11. @Vitaly
    Может тогда обновите статью по созданию сервера?

  12. Кто может помочь Garrys mod Dark Rp (экономика уже файл который в dark rp или его качать надо . если в папке то где лежит)

  13. Инструкция немного не достоверная, папки написаны не те

  14. @Иван
    хотя очень помогла, сделал все по плану, когда пытаюсь поделючиться к серверу, выкидывет и пишет ,,Disconnect: «Too many Lua Errors! Sorry,,

    Помогите пожалуйста

  15. @Иван
    Укажите новые пути, я сделаю правки в статье. Она была написана в 2010 году и пути в то время были правильными.

  16. @Иван
    Неправильно установлены какие-то аддоны, поэтому и выбивает с ошибкой. Обновите их до новейших версий, либо удалите.

  17. Здрасте а подскажите как сделать чтобы сервер гарика использовал несколько ядер процессора… он одно только берет и тормозит… помогите

  18. TuzelKO :

    Здрасте а подскажите как сделать чтобы сервер гарика использовал несколько ядер процессора…

    Это невозможно в настоящее время. Чтобы задействовать многопоточность, само приложение должно её поддерживать.

  19. а когда это сделают не слышно? или например как работают сервера где по 50-100 слотов… как такое помещается на одном ядре? может есть проги которые делают виртуальное ядро объединяя 2 в 1 ?

  20. TuzelKO :

    а когда это сделают не слышно?

    Это нужно спрашивать у Гарри Ньюмана.

    TuzelKO :

    или например как работают сервера где по 50-100 слотов…

    Запущены на сервере с производительным серверным CPU. ЕМНИП, серверы TF2 с прошлого года поддерживают многопоточность.

    TuzelKO :

    может есть проги которые делают виртуальное ядро объединяя 2 в 1 ?

    Советую для начала прочитать что такое многопоточность. 🙂

  21. у меня в линуксе не получается даже нажать кнопку создать сервер

  22. Эммм. а где надпись создать сервер

  23. Я открыл порты и всё равно у людей сервер не отвечает. Как исправить?

    1. Если нужные порты открыты, но другие пользователи по внешнему IP подключиться к серверу не могут, значит нужно обратиться к Интернет-провайдеру и подключить услугу белого IP-адреса.

  24. Скажите пожалуйста как поставить пароль на сервер?!

    1. Установить его в конфиге сервера, в переменной sv_password.

  25. А как через uLX запретить модераторам тпхаться к админам?

  26. Что делать, у меня в папке garrysmod нет папки lua. Где её скачать?

    1. Аддоны сейчас устанавливаются при помощи Steam Workshop. Все действия по установке производятся автоматически.

Обсуждение закрыто.