RE:NODE

Руководства12 мин чтения

Настройка сервера Unturned: конфиг, карты из Workshop и RocketMod

Настройка выделенного сервера Unturned: Commands.dat, игровой конфиг, порты и GSLT, карты и моды из Workshop, админы, RocketMod и типичные ошибки.

Обновлено

0 прочтений

Unturned почти ничего не требует от сервера, поэтому его удобно поднимать первым. Двух гигабайт и одного ядра хватает на полную компанию на официальной карте, вся конфигурация лежит в нескольких файлах в одной папке, а выделенный сервер устанавливается анонимно примерно за минуту. Ошибки, которые допускают люди, всегда в двух местах: контент Workshop, который есть у сервера и которого нет у клиента, и отсутствующий Game Server Login Token, из-за которого сервер работает прекрасно, но никому не виден. В руководстве разобраны установка, каждый важный файл, порты, Workshop, RocketMod и ошибки по дороге.

Что вы запускаете#

Выделенный сервер Unturned 3 - это отдельное приложение Steam с app id 1110390; оно устанавливается анонимно и попадает в папку U3DS. Копия игры ему не нужна, лицензия тоже. App id клиента - 304930, и это важно в двух местах: при загрузке из Workshop и для токена входа.

Всё, что относится к одному серверу, лежит в одной папке экземпляра, а из одной установки можно запускать несколько экземпляров, дав каждому своё имя:

code
U3DS/  ServerHelper.sh              Linux start script  ServerHelper.bat             Windows start script  Servers/    MyServer/                  one instance      Server/        Commands.dat           what the server is        Config.json            how the game plays (older servers)        Config.txt             how the game plays (3.25.8.0 and newer)        Adminlist.dat          SteamID64 per line        Blacklist.dat        Whitelist.dat      WorkshopDownloadConfig.json workshop items to fetch at boot      Rocket/                  RocketMod, if installed

Это разделение - ментальная модель всей игры. Commands.dat определяет, чем сервер является: его имя, порт, карту, слоты и владельца. Игровой конфиг определяет, как в игре играется: лут, зомби, транспорт, урон. Два файла, две задачи, и почти любой вопрос о хостинге Unturned на деле сводится к тому, какой из них вам нужно править.

Требования и потребление ресурсов#

СерверRAMCPUПримечания
8-12 игроков, официальная карта, ванильный2 GB1 ядроДействительно достаточно, а не стартовая цифра
16-24 игрока, отобранная карта3-4 GB1,5 ядраБольшие карты содержат больше объектов
24-40 игроков, плагины RocketMod4-6 GB2 ядраПлагины и сохранённые постройки накапливаются
Большая карта из Workshop и наборы модов6-8 GB2-2,5 ядраПамять обычно уходит на карту

Переменная здесь - карта, а не число игроков. Официальные карты вроде Washington и PEI малы и дёшевы; большие карты сообщества содержат гораздо больше объектов и загружают гораздо больше ассетов. Расход памяти сервера ещё и растёт по мере того, как игроки строят: каждая постройка и баррикада сохраняется и просчитывается, так что сервер, который в первую неделю укладывается в 2 GB, к третьему месяцу может захотеть 3 GB.

Диск нужен скромный: установка сервера занимает пару гигабайт, а контент Workshop - обычно несколько сотен мегабайт на большую карту. Тарифы Unturned здесь начинаются с 2 GB и 10 GB диска, и это честный размер для этой игры, а не попытка продать лишнее. Если вы прикидываете число слотов, общий метод описан в статье сколько игроков помещается на сервере.

Установка и запуск сервера#

bash
$ steamcmd +force_install_dir /home/unturned/U3DS +login anonymous \    +app_update 1110390 validate +quit$ cd /home/unturned/U3DS$ ./ServerHelper.sh +InternetServer/MyServer

В Windows то же самое - ServerHelper.bat +InternetServer/MyServer. Замените InternetServer на LanServer для проверки только в локальной сети. Имя экземпляра после слеша - это папка внутри Servers/; она создаётся при первом запуске вместе с файлами конфигурации, так что запустите сервер один раз, остановите и правьте то, что он сгенерировал, а не пишите файлы с нуля. О validate, скриптах обновления и значении аргументов app id рассказано в статье SteamCMD простыми словами.

Commands.dat: идентичность сервера#

Commands.dat - это простой список, по одной команде в строке, читаемый один раз при запуске. Полный файл для небольшого сервера на выживание:

Servers/MyServer/Server/Commands.dat
Name Thursday SurvivalOwner 76561198012345678Port 27015Map WashingtonMaxPlayers 24Mode NormalPerspective BothWelcome Read the rules in Discord. No raiding offline bases.PasswordQueue_Size 8FilterCheatsGSLT 0123456789ABCDEF0123456789ABCDEF

Команды, которые стоит знать:

КомандаДействие
NameИмя сервера в браузере, до 50 символов
OwnerSteamID64, который получает постоянные права администратора
PortQuery-порт; игра работает на этом значении плюс один
MapВнутреннее имя карты, а не отображаемое
MaxPlayersЧисло слотов
ModeEasy, Normal или Hard - выбирает, какая конфигурация сложности применяется
PvEЕсли есть - PvE; если нет - PvP
PerspectiveFirst, Third, Vehicle или Both
PasswordПароль для входа; оставьте значение пустым, если пароля нет
Queue_SizeСколько игроков может ждать слот
CheatsЕсли есть - читерские команды включены, если нет - выключены
FilterОтклоняет игроков, в именах которых есть мусорные символы
GoldОграничивает сервер владельцами Gold Upgrade
LoadoutНабор навыков и стартовые предметы для новых игроков
WelcomeСообщение при входе
GSLTТокен входа, если вы не указываете его в файле конфигурации

Mode - то, что удивляет людей. Он меняет не просто число урона: он выбирает, какой блок сложности игрового конфига использует сервер, так что сервер с Mode Hard игнорирует цифры, которые вы старательно правили в Normal.

Map принимает внутреннее имя. Официальные и отобранные карты поставляются с игрой и больше ничего не требуют; если сервер не находит указанное имя, он молча загружает PEI. Сервер, который постоянно стартует в PEI, - это опечатка, а не баг.

Игровой конфиг: Config.txt и Config.json#

Серверы, созданные на сборке 3.25.8.0 или новее, получают Config.txt - комментированный текстовый файл с разделами в фигурных скобках. У старых экземпляров Config.json с теми же настройками в JSON. Структура в обоих случаях одна: раздел Browser - как сервер представляет себя, раздел Server - поведение соединений, и по одному блоку на сложность - Easy, Normal, Hard - каждый содержит Items, Vehicles, Zombies, Animals, Barricades, Structures, Players, Objects, Events и Gameplay.

Настройки, которые меняют чаще всего, с их значениями по умолчанию для сложности Normal:

НастройкаПо умолчаниюЧто делает
Items.Spawn_Chance0.35Вероятность того, что в точке появления есть предмет
Items.Respawn_Time50.0Секунды до того, как обобранная точка может наполниться
Items.Despawn_Dropped_Time600.0Секунды до исчезновения выброшенных предметов
Items.Quality_Multiplier1.0Состояние появляющихся предметов
Zombies.Spawn_Chance0.2Вероятность использования точки появления зомби
Zombies.Respawn_Day_Time360.0Секунды до возвращения убитого зомби днём
Zombies.Respawn_Night_Time30.0То же ночью
Zombies.Damage_Multiplier0.75Насколько сильно бьют зомби
Zombies.Armor_Multiplier1.25Сколько урона они поглощают
Vehicles.Respawn_Time300.0Секунды до возрождения уничтоженного транспорта

Это значения блока Normal. Измените Mode в Commands.dat, и применится другой набор, а это самая частая причина того, что правка «ничего не делает».

В разделе Browser находятся Icon и Thumbnail - ссылки на небольшие изображения, показываемые в списке серверов, - а также поля описания, декларация Monetization, которую нужно заполнить честно, если вы что-то продаёте, и Login_Token. В разделе Server находятся VAC_Secure и BattlEye_Secure, оба стоит оставить включёнными на публичном сервере, а также ограничения пинга и тайм-аутов.

Пара слов о множителях лута, потому что первым делом все поднимают именно их: Items.Spawn_Chance со значением 1.0 не делает сервер щедрым, а делает его бессмысленным. Каждое здание полно, никому не нужно путешествовать, и игра заканчивается за вечер. Если хочется сервер побыстрее, сократите Items.Respawn_Time, чтобы места наполнялись раньше, а забег по городу всё ещё что-то значил.

Порты, GSLT и подключение#

ПортПротоколНазначение
27015UDPЗапросы списка серверов, задаётся через Port
27016UDPИгровой трафик, всегда Port + 1

Оба порта - UDP, и оба должны быть доступны. Если на одной машине работают два экземпляра, разнесите значения Port минимум на два - 27015 и 27017, - иначе игровой порт второго сервера столкнётся с query-портом первого. К тарифам Unturned здесь прилагаются два порта, и это как раз такая пара. О том, для чего нужен query-порт и как понять, какой из двух заблокирован, рассказано в статье порты игрового сервера.

Токен - вторая половина видимости. Начиная со сборки 3.21.31.0, сервер без Game Server Login Token скрыт из интернет-списка серверов: он работает, к нему всё ещё можно подключиться по IP, но никто, листающий список, его никогда не найдёт. Создайте токен на странице игровых серверных аккаунтов Steam, указав app id 304930, а затем поместите его в одно место, не в оба:

code
GSLT 0123456789ABCDEF0123456789ABCDEF

в Commands.dat или как Login_Token в разделе Browser файла конфигурации. Токен принадлежит вашему аккаунту Steam, его могут заблокировать, если сервер ведёт себя плохо, и каждому работающему серверу нужен свой. Правила разобраны в статье токены игровых серверов Steam простыми словами, а что можно продавать, чтобы токен не стал обузой, - в статье как зарабатывать на игровом сервере, не нарушая правил.

На RE:NODE токен вы создаёте сами: сервер создаётся, как только проходит платёж, а установка ждёт на вкладке Setup, пока вы его не вставите. Это сделано намеренно. Хостинг, который выдаёт вам токен, выдаёт вам чужие учётные данные.

Карты и контент из Workshop#

Элементы Workshop относятся к конфигурации, а не к файловой системе. Добавьте идентификаторы в WorkshopDownloadConfig.json в папке экземпляра, и сервер скачает их при запуске и отдаст список заходящим игрокам, которые автоматически загрузят те же элементы из Steam:

Servers/MyServer/WorkshopDownloadConfig.json
{    "File_IDs": [        1205209275,        1440592288    ]}

Если поставить карту вручную, игроков отправят в мир, который они не могут загрузить, и для них это выглядит как сломанный сервер, а не как недостающая загрузка.

чтение при стартеконтентсписок нужных idте же элементыWorkshopDownloadConfigFile_IDs arraySteam WorkshopСервер Unturnedскачивает при запускеИгрокскачивает при входе
Как карта из Workshop попадает к игроку

Три правила делают всё безболезненным:

  • Отобранные карты не требуют дополнительной настройки и являются разумной отправной точкой. Они поставляются с игрой на обеих сторонах, так что скачивать нечего и рассинхронизироваться нечему.
  • Многие карты сообщества - это два элемента: ландшафт и набор ассетов. Если включить только один, игроки видят плавающий красный текст ошибки на месте объектов. Прочитайте на странице карты в Workshop, что ещё ей требуется.
  • Перезапускайте после каждого изменения. Файл идентификаторов читается при запуске, а элемент Workshop, обновившийся посреди сессии, подхватывается только после перезапуска сервера.

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

Админы, RocketMod и плагины#

Ванильное администрирование - это консоль и три текстовых файла. В Adminlist.dat, Whitelist.dat и Blacklist.dat лежит по одному SteamID64 в строке, а команда Owner в Commands.dat даёт постоянные права администратора, не трогая их. Консольные команды, которые стоит запомнить:

КомандаДействие
admin <player>Выдать права администратора подключённому игроку
unadmin <player>Забрать их
kick <player> <reason>Кикнуть
ban <player> <reason> <duration>Забанить, срок в секундах
unban <steamid>Снять бан
playersПоказать, кто подключён
saveЗаписать мир на диск сейчас
shutdownЧистая остановка с сохранением
day / nightУстановить время суток

Всё, что сверх этого, - фреймворк плагинов. RocketMod - давно существующий: он устанавливается как модуль в папку Modules сервера, а после запуска создаёт внутри вашего экземпляра папку Rocket с Rocket.config.xml, папкой Plugins и Permissions.config.xml. Плагины - это DLL, которые кладутся в Rocket/Plugins, и каждый при первой загрузке создаёт собственный файл конфигурации.

С RocketMod все спотыкаются о права. Плагин, который загрузился правильно, но чьи команды ничего не делают, - это почти всегда проблема прав: команды нужно выдать группе в Permissions.config.xml, иначе никто, кроме администратора, их выполнить не сможет. Проверьте этот файл, прежде чем решать, что плагин сломан. OpenMod - более современная альтернатива, и он может работать вместе с RocketMod через плагин-установщик, что полезно знать, если нужный вам плагин опубликован только для одного из них.

Серверы Unturned на RE:NODE поставляются с уже установленным RocketMod, так что модуль на месте и папка Rocket существует при первом запуске - плагины вы добавляете через SFTP или файловый менеджер. Списка разрешённых плагинов нет; что загрузите, то и работает, и это ещё одна причина прочитать исходный код плагина, прежде чем отдавать ему свой сервер. Подробнее об обоих - в статье Commands.dat и RocketMod подробно.

Что бы вы ни ставили, сохраняйте сохранение. Постройки игроков, транспорт и инвентари лежат в файлах сохранения экземпляра, и отменить плагин, который их удалил, нельзя. Делайте backup папки экземпляра по расписанию и время от времени восстанавливайте один, чтобы убедиться, что это работает: статья backup, которые действительно восстанавливаются существует потому, что backup, который никто не восстанавливал, - это гипотеза. Полезен и ночной перезапуск; как выбрать интервал, описано в статье расписания перезапусков, которые помогают.

Решение проблем#

Сервер работает, но его никто не находит в списке. Нет Game Server Login Token или он заблокирован. Проверьте, подключившись напрямую по IP; если так работает, проблема в токене.

Сервер всегда загружает PEI. Имя Map неверно или её элемент Workshop не скачался. Имена карт - внутренние, и на практике они чувствительны к регистру.

Игроков выбрасывает на красный экран ошибки при входе. Не хватает контента Workshop. Обычно это набор ассетов карты, которого нет в WorkshopDownloadConfig.json.

Правки конфига ничего не делают. Либо сервер работал, когда вы их сохранили, и перезаписал их при остановке, либо вы правили не тот блок сложности для Mode в Commands.dat.

Два сервера на одной машине спорят за порт. Разносите значения Port на два, а не на один. Игровой порт всегда равен query-порту плюс один.

Плагин загружается, но его команды игнорируются. Права, в Rocket/Permissions.config.xml, в девяти случаях из десяти.

Память растёт неделями. Постройки игроков. Это нормальный рост, а не утечка, и обычно из-за него сервер на 2 GB со временем хочет 3 GB. Смена тарифа меняет лимит у уже существующего сервера, так что мир остаётся на месте.

FAQ#

Сколько RAM нужно серверу Unturned?

2 GB хватает на дюжину игроков на официальной карте, и это не оговорка: Unturned - одна из самых лёгких игр на выживание для хостинга. Закладывайте 4 GB, если запускаете большую карту сообщества с модами, и ждите медленного роста по мере того, как игроки строят.

Нужен ли мне собственный токен входа Steam?

Да, для любого публичного сервера. Начиная со сборки 3.21.31.0, сервер без него скрыт из интернет-списка серверов. Токен создаётся для app id 304930 на вашем аккаунте Steam и указывается в Commands.dat или в файле конфигурации, но не в обоих.

Config.json или Config.txt - какой у меня?

Серверы, созданные на сборке 3.25.8.0 или новее, используют Config.txt; старые экземпляры сохраняют Config.json. Настройки и структура одинаковы. Правьте тот, что лежит в папке вашего экземпляра, а не создавайте другой.

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

Потому что в конфиге для каждой сложности свой блок, а сервер читает только тот, что соответствует Mode в Commands.dat. Правьте подходящий блок или меняйте Mode.

Могут ли игроки зайти, не подписываясь на мои карты из Workshop?

Подписываться вручную им не нужно. Сервер отправляет список нужных элементов при входе, и клиент автоматически скачивает их из Steam, - при условии что каждый нужный идентификатор, включая наборы ассетов, есть в WorkshopDownloadConfig.json.

RocketMod всё ещё правильный выбор?

Это по-прежнему самый широко поддерживаемый фреймворк, и большинство существующих плагинов написано под него, поэтому он и установлен заранее. OpenMod новее и может работать рядом с ним. Выбирайте тот, для которого опубликованы нужные вам плагины.


Комментарии

Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.

0/2000