Установка и настройка сервера Garry’s Mod
Вступление
По многочисленным просьбам я решил написать подробное HOWTO по установке и настройке слушающего сервера Garry’s Mod прямо из приложения.
Статья об установке и настройке выделенного (dedicated) сервера доступна здесь.
Что нам потребуется для работы:
- Сам Garry’s Mod (лицензионная Steam-версия).
- Набор для установки плагинов нашего производства (можете пропустить, если хотите устанавливать плагины вручную).
- Любой текстовый редактор для редактирования конфигов.
В отличие от слушающих серверов других 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:
- слушающий сервер не требует особых усилий для его развёртывания и настройки: достаточно установить нужные плагины, админку, файл конфигурации и можно приглашать на него своих друзей;
- слушающий сервер идеален для работы/игры на нём нескольких человек (Вы и Ваши друзья например);
- позволяет быстро переконфигурировать, перезапустить, остановить и т.д. сервер;
- не нужно качать несколько гигабайт абсолютно ненужных данных выделенного сервера;
- обновляется полностью автоматически.
Техническая часть
- Чтобы к Вам могли подключаться клиенты, Вы должны иметь «белый» IP-адрес, т.е. видимый из Интернета. Создание сервера с «серым» IP, либо с жёстким NAT’ом провайдера не имеет смысла, т.к. подключиться к такому серверу никто не сможет (кроме находящихся с вами в одной подсети).
- Сервер запускается на порту 27015, поэтому если у Вас ADSL, вы должны пробросить этот порт по протоколу UDP в настройках своего роутера (модема). Обычно проброс портов настраивается в веб-интерфейсе роутера в разделе NAT — Port Forwarding или NAT — Virtual Servers.
- На сервере главное – скорость отдачи от Вас клиентам, а также мощность процессора Вашего компьютера. На 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 выключены вообще.
Настройка и запуск сервера
- Устанавливаем Steam и Garry’s Mod (если ещё не установлены).
- Запускам Garry’s Mod, ждём полной загрузки и выходим из неё (это нужно только если выполнялся шаг 1 для создания файлов базовой конфигурации).
- Запускаем Garry’s Mod, нажимаем «Создать сервер» («Create Server«), набираем команду status в консоли, записываем её вывод например в буфер обмена (выделяем выданный сервером текст, нажимаем правой кнопкой — «Копировать«), либо на бумагу и выходим из Garry’s Mod.
- Устанавливаем джентльменский набор плагинов из svn для Garry’s Mod, так, как описано в этой статье. Всю информацию по установке и сами скрипты установки/обновления плагинов Вы найдёте по этой ссылке.
- Делаем себя и, если нужно, своих друзей администраторами свежесозданного сервера (обязательно, иначе ULX-админка не даст Вам доступа). Чтобы сделать себя админом, нужно:
- узнать Ваш личный SteamID и, если хотите сделать и друзей админами (не рекомендуется
), то и их SteamID. Как это сделать описано на 3 шаге; - в любом текстовом редакторе открываем файл %Steam%\steamapps\ВАШ_ЛОГИН\garrysmod\garrysmod\settings\users.txt, где %Steam% — путь к установленному клиенту Steam, а ВАШ_ЛОГИН — Ваш логин для входа в Steam. В этот файл и прописываются администраторы сервера по SteamID. Ищем в этом файле раздел «superadmin» и после строки //»garry» «STEAM_0:1:7099″ жмём Enter (начинаем новую строку) и пишем свою в виде «ВАШ_НИК» «STEAM_0:1:XXXXXXXXX», где ВАШ_НИК — это ник админа, который будет в списке вывода админов сервера (здесь разрешено вводить только латинские буквы и цифры без пробелов; кавычки обязательны), а STEAM_0:1:XXXXXXXXX — это Ваш SteamID (замените на настоящий, естественно
), полученный на 3 шаге. Здесь же после этой строчки может добавить и своих друзей (но я бы не рекомендовал этого делать; одного админа вполне достаточно).
- узнать Ваш личный SteamID и, если хотите сделать и друзей админами (не рекомендуется
- Качаем и распаковываем архив с файлами конфигурации в папку %Steam%\steamapps\ВАШ_ЛОГИН\garrysmod\garrysmod\cfg\, где %Steam% — путь к установленному клиенту Steam, а ВАШ_ЛОГИН — Ваш логин для входа в Steam. Заменяем имеющиеся файлы. Архив обновляется после выхода серьёзных изменений в Garry’s Mod, а также при обнаружении ошибок и для добавления новых функций.
- Открываем распакованный файл listenserver.cfg в любом текстовом редакторе (например, в Блокноте Windows) и делаем нужные настройки (меняем имя сервера (переменная hostname), настройки и т.п.). В файле я всё подробно описал какая переменная чем управляет, что включает/выключает, поэтому на этом я останавливаться не буду здесь. Внимание! Первым делом задайте пароль вместо !!!CHANGEME!!!, иначе Ваш сервер могут взломать.
- Запускаем Garry’s Mod, выбираем в главном меню пункт «Создать сервер» («Create multiplayer«). В открывшемся окне на первой вкладке выбираем карту (рекомендуется gm_flatgrass или gm_construct), затем переходим на страницу «Options«. Здесь установите максимально число игроков, которые могут подключиться к Вашему серверу («Max Players«) и обязательно уберите галочку из строки «Local network game» (иначе никто не сможет подключиться к Вам). Все остальные пункты изменять не нужно, т.к. они изменяются только в конфигурационном файле listenserver.cfg (этот файл имеет более высокий приоритет, чем графическое меню).
- Жмём кнопку «Start game» внизу окна и ждём окончания запуска сервера.
- Даём свой внешний IP-адрес всем, кто должен к Вам подключиться и они смогут это сделать, набрав у себя в консоли Garry’s Mod команду connect IP_вашего_сервера:27015 (например, connect 126.65.110.99:27015). Свой внешний адрес можно узнать тут: http://www.2ip.ru (он определится в строке “Ваш IP-адрес“).
- Если к Вашему серверу кто-нибудь подключился, значит он успешно установлен и настроен. Чтобы отключить сервер, достаточно войти в меню Garry’s Mod клавишей Esc и выбрать пункт «Отключиться» («Disconnect«). После этого сервер кикнет всех, кто на нём играл и закончит свою работу.
Мини-FAQ
Q: Как запретить выдавать игрокам оружие (давать только Physgun, грави-ган, тулган и скриншотган)?
A: Установите плагин U-Restrict (если Вы устанавливали с помощью наших скриптов, то он уже установлен и автоматически активирован).
Q: Как изменить сообщение, которое появляется при заходе на созданный сервер Garry’s Mod?
A: Отредактируйте файл %Steam%\steamapps\ВАШ_ЛОГИН\garrysmod\garrysmod\data\ulx\motd.txt, где %Steam% — путь к установленному клиенту Steam, а ВАШ_ЛОГИН — Ваш логин для входа в Steam. Это обычный HTML-файл.
Q: Куда пишутся сокращённые логи админки?
A: Логи админки ULX пишутся в %Steam%\steamapps\ВАШ_ЛОГИН\garrysmod\garrysmod\data\ulx_logs\ДАТА.txt, где %Steam% — путь к установленному клиенту Steam, ВАШ_ЛОГИН — Ваш логин для входа в Steam, а ДАТА — сегодняшняя дата в формате ММ-ДД-ГГ.
Q: Мне нужно выдавать игрокам при подключении к серверу определённое оружие. Как это сделать?
A: Как уже писалось выше, нужен плагин U-Restrict для админки (если Вы устанавливали набор плагинов с помощью наших скриптов, он уже установлен). Итак, чтобы выдать нужное оружие, откройте файл %Steam%\steamapps\ВАШ_ЛОГИН\garrysmod\garrysmod\data\URestrict\loadouts.txt в любом текстовом редакторе и в разделе loadout после gmod_tool введите полное имя нужного оружия, например weapon_smg. Это оружие будет автоматически выдано игроку после подключения к серверу, а также после его респауна.
Q: При подключении к серверу моего друга, его Garry’s Mod пытается скачать огромное количество файлов. Что делать?
A: Это значит, что у Вашего друга установлены не все плагины, которые установлены у Вас в каталоге /addons/ Garry’s Mod’а. Нужно, чтобы Ваш друг установил их и чтобы версии плагинов совпадали. Только тогда ему не придётся ничего качать. Рекомендуем пользоваться нашим набором скриптов по установке и обновлению плагинов.
А как уменьшить пинг?
Штатными средствами никак, а различные программы в Интернете, способные «уменьшать пинг» в 99% случаев являются вредоносными. Обратитесь в службу технической поддержки Вашего Интернет-провайдера. Если у Вас ADSL и хорошая линия, то провайдер может включить на порту режим FAST, что уменьшит пинг.
Здравствуйте, меня интересует название мода, который запрещяет другим пользователям трогать мои (и не только) постройки.
Заранее спасибо!
Это не мод, а плагин. Он называется Simple Prop Protection. Скачать можно из официального SVN отсюда: (устанавливать в папку /addons/).
Большое спасибо!
Я пользуюся ass mod`ом и у меня такой вопрос, как убрать из админов?
Админы прописываются в файле \garrysmod\settings\users.txt. Чтобы убрать пользователя из админов — достаточно удалить оттуда строку с его SteamID.
Все, спасибо, нишел как убирать админов. Это чуть чуть иначе вся инфа о админах в ASS хранится в \garrysmod\data\ass_rankings.txt там все админы!
Спасибо!
Честно говоря, я первый раз слышу про такой мод, но по стандарту все моды должны уметь использовать конфигурацию разрешений доступа из файла users.txt.
Как защитить сервер от «падения»?
Это тянет на целое HOWTO
. Самое простое:
1. Запретить на сервере доступ к чужим постройкам.
2. Запретить на сервере рэгдоллы и NPC.
3. Устанавливать только нужные плагины и всегда обновлять их до последних версий.
4. Установить сложный RCON-пароль + бан за попытку его подбора.
5. Иметь адекватных администраторов, дежурящих на сервере.
6. Установить верные лимиты на спаун.
А как cделать «Белый» IP???
Необходимо обратиться к своему Интернет-провайдеру и заказать эту услугу. У некоторых провайдеров она платная (зависит от жадности провайдера).
Хочу сделать из конструкта zombi survival. Я хочу сделать чтобы у игроков было только обычное оружие (без физгана, скриншотера и тулгана) но и добавить в арсенал нестандартное, аддонное оружие в частности grapplehook. Также добавить команды через чат ну типо !kill или !menu ну и так далее. И отсчет фрагов за убитых npc и чтобы колличество очков сохранялось для каждого стим id побывавшего на сервере. Ну и можно добавить в начале раунда время когда включен ai_disabled и игрокам выдан физган и тулган, по истечении времени ai_disabled отключаеться тул и физган отбираеться, включаеться запрет на спавн пропов и енти(ну только для НЕ админов) и начинаеться отсчёт времени до смены карты. Короче время на постройку базы или типо того.
Ну вот как то так.
А да! Еще голосование за следующюю/досрочную смену карты. (ну там в чате rtv или votemap или veto)
Для этого придётся изучить язык программирования Lua, который широко используется в GM для написания модификаций.
Это есть в стандартной поставке админки ULX.
Ну ладно lua учить начну, а с ULX, который файл за это отвечает?
ULX — это полнофункциональная админка для Garry’s Mod. Для получения справки введите в консоли Garry’s Mod с установленной ULX команду ulx_help (или ulx help). Для голосования за карту есть !votemap.
Ну это то естественно! Я говорил про файл в котором всё это прописано! Хочу команды изменить.
Как открыть порт 27015 На роуторе D-Link dir-100 ???
Необходимо зайти в веб-интерфейс в Advanced — Port forwarding и пробросить соответствующий порт.
Более подробная информация со скриншотами и .
какой аддон дайот такую сетку шоб удобно паять
Нужен плагин для сетки на предметах? Он называется SmartSnap.
большое спасибо а то не удобно вообще
Подскажите пожалуйста, я в этом деле чайник но очень хотелось бы научиться.
По поводу технической части(2)
Дома стоит ADSL, но компьютер подлючен не к тому модему а к другой точке доступа которая просто связана с ADSL модемом( который тоже являеться точкой доступа) обычным LAN кабелем.
Насколько я понимаю то в данном случае нужно заходить в настройки роутера который держит ADSL.
там нашёл пункт NAT — Virtual servers
нажал добавить и вижу картину:
NOTE: The «Internal Port End» cannot be modified directly. Normally, it is set to the same value as «External Port End». However, if you modify «Internal Port Start», then «Internal Port End» will be set to the same value as «Internal Port Start».
потом графа
Use Interface: pppoe_0_1_32/ppp0
ее менять нельзя
потом список среверов которые он предлагает сам
потом строчки
Custom Service:
Server IP Address:
что сюда писать?
после этого таблица с 5тью колонками которые нужно заполнять
External Port Start
External Port End
Protocol
Internal Port Start
Internal Port End
понятно что протокол выбрать нужно UDP, а что писать в остальные поля не имею ни малейшего понятия..
если что модем(ADSL) TP-LINK 300M Wireless N ADSL2+ Modem Router
Простите за непонимание, помогите пожалуйста)
заранее благодарен)
Что-то я плохо понял структуру сети. У вас две точки доступа? Зачем? Есть же беспроводной ADSL маршрутизатор.
Custom Service — имя службы латиницей, например, srcserv.
Server IP Address — внутренний IP компьютера, на который нужно осуществлять проброс (например, 192.168.1.2).
External Port Start — 27015.
External Port End — 27015.
Protocol — UDP.
Internal Port Start — 27015.
Internal Port End — 27015.
Большое спасибо)
Дело в том что я живу в частном доме и даже заменив антену на маршрутизаторе покрытия сети не хватает.
У нас 4 точки доступа.
один беспроводной ADSL маршрутизатор внизу, один модем который работает в режиме моста для беспроводной связи с принтером а так же увеличивает зану покрытия ловя сигнал и усиливая его, и 2 точка доступа которые связаны LAN кабелями с маршрутизатором: одна на 2ом этаже а одна на улице.
А можно как-нибудь сделать, что бы после твоего выхода сервер не вырубался?
Установите . Слушающий всегда отключается при выходе создателя.
Интересует полное разблокирование оружия. как это устроить? И я не совсем понял как выдавать оружие игрокам при входе на сервер. Вроде прописал в loadouts.txt, но ничего не изменилось.
Пропишите в конфиг sbox_weapons 1 и все игроки будут возрождаться с оружием.
Ещё проблема. Когда друзья подключаются пишет, что Сервер не отвечает. У всех лицензия.
Подключаться к вам должны по внешнему IP-адресу путём ввода в консоли команды connect ВАШ_IP:27015 (номер порта можно опустить). Через список друзей подключиться в большинстве случаев не получится, т.к. там будет указан внутренний адрес в локальной интрасети.
Так и делаем. Всё равно ничего не получается.
Чтобы можно было подключиться нужно:
1. Иметь белый внешний IP-адрес.
2. Пробросить (открыть) порт 27015 по протоколу UDP.
IP белый. Порт вроде как открыл. Не помогло.
1. Если есть роутер (модем), нужно пробрасывать данный порт на локальный адрес через веб-интерфейс.
2. Нужно открыть данный IP в программном файрволе (брандмауэре), установленном на компьютере, на котором будет запущен сервер.
Так. Порт открыл, файрвол вырубил. Теперь пишет, что connection failed после 4ёх попыток.
Стандартное сообщение, выдаваемое играми на движке Source при невозможности подключения к серверу. Какое у вас подключение к Интернету? Ethernet/ADSL/VPN?
Не знаю. Как это посмотреть?
Зайдите в Панель управления Windows — Сетевые подключения. Сделайте скриншот.
(пробел после равно)
Это оно? Просто не знаю где на win7 находятся сетевые подключения.
Да, оно. Судя по скриншоту, вы используете Wi-Fi (беспроводное сетевое соединение), поэтому нужно зайди в веб-интерфейс Wi-Fi роутера и пробросить порт 27015 на локальный компьютер.
IP локального компьютера можно узнать, выполнив cmd.exe /K ipconfig /all | findstr IP (это одна команда).
Подробные инструкции по проброске портов найдёте .
Помогло. Спасибо!