RE:NODE

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

Выделенный сервер Stationeers

Как поднять выделенный сервер Stationeers: установка через SteamCMD, синтаксис запуска -file start и -settings, миры, порты, права админа, сохранения и настройка производительности.

0 прочтений

Выделенный сервер Stationeers скачивается бесплатно (Steam app 600760, анонимный вход) и работает как в Linux (rocketstation_DedicatedServer.x86_64), так и в Windows (rocketstation_DedicatedServer.exe). В текущих версиях он настраивается почти целиком из командной строки: -file start <name> <world> загружает или создаёт станцию, а -settings с парами ключ-значение задаёт имя, пароль, порты и интервал сохранения. Он использует UDP 27016 для игры и UDP 27015 для Steam, сохраняется в папку saves рядом с исполняемым файлом и тратит CPU на симуляцию атмосферы и труб, а не на игроков. Синтаксис запуска изменился, когда сервер переработали, так что если гайд советует использовать -load с длинным списком флагов, он написан до появления нынешнего сервера.

Как устроен мультиплеер Stationeers#

Stationeers - прежде всего симулятор: у каждой комнаты есть атмосфера с давлением, температурой и составом газов, у каждой сети труб - тоже, а электричество, логические чипы и устройства работают на сервере каждый тик. В мультиплеере этой симуляцией владеет сервер, а клиенты видят результаты. Три следствия:

  • CPU сервера определяет, до какого размера может вырасти база, прежде чем симуляция начнёт замедляться. Число игроков значит гораздо меньше, чем число атмосфер, сетей труб и устройств.
  • Мир продолжает работать, когда никого нет, если вы не скажете ему встать на паузу. Растения растут, батареи разряжаются, протекающая труба продолжает течь. Для этого и существует AutoPauseServer.
  • У всех должна быть одна версия. Stationeers обновляется часто, и клиенты на более новой сборке не могут подключиться к старому серверу.

Хостовая игра из главного меню подходит для короткой сессии, но станция существует, только пока хост играет. Выделенный сервер - правильный инструмент для группы, которая играет в разное время или ведёт долгие проекты. В статье Что такое выделенный игровой сервер разница разобрана в общем виде.

Как спланировать станцию, которую вытянет сервер

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

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

Разделяйте сети труб. Если разбить длинную сеть вентилями, регуляторами или насосами, один большой расчёт превращается в несколько маленьких, а утечки проще найти. Заодно одна ошибка - лопнувшая труба в теплице - не стравит атмосферу всей базы.

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

Убирайте за собой. Кучи руды, пустые баллоны и брошенные наборы - всё это объекты, которые сервер отслеживает. Сложите их в хранилище или переработайте. Аккуратная база - быстрая база.

Пишите логику экономно. IC-чипы - одна из лучших частей игры, но чип, который каждый тик перезаписывает десятки устройств, стоит CPU. Скрипты, которые срабатывают только при изменениях, дешевле.

Ничего из этого не задаётся настройками. Это аналог правил строительства в других играх, и на общем сервере именно это определяет, работает ли станция на полной скорости после месяца игры.

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

Сервер Stationeers не лёгкий и тяжелеет по мере роста станции. Цифры ниже - типичная отправная точка для процесса сервера; большой базе поздней игры в суровом мире может понадобиться больше.

СтанцияRAMCPUПримечания
Новая станция, 1-4 игрока4 GB2 быстрых ядраНачало игры дешёвое
Обжитая база, 4-8 игроков6-8 GB2-3 быстрых ядраМного комнат, сетей труб, логики
Большая база, много автоматизации8-12 GB3-4 быстрых ядраПечи, большие газовые сети, много IC
  • CPU - реальное ограничение. Симуляция атмосферы тяжёлая, и часть её привязана к одному потоку, поэтому важна тактовая частота. В статье CPU или RAM для игровых серверов объясняется, почему добавление памяти не поможет серверу, упирающемуся в симуляцию.
  • Память растёт с размером исследованной и застроенной области и с числом вещей в мире - каждая выброшенная руда и каждое установленное устройство являются объектами.
  • Диск: сервер занимает несколько гигабайт. Сохранения растут от нескольких мегабайт до десятков или сотен мегабайт для большой базы; оставьте место на несколько штук.

Рекомендации официальной вики к машине для сервера щедрые, и это правильно: сервер Stationeers, которому не хватает CPU, не падает, а просто ведёт симуляцию медленнее реального времени, и всем это кажется лагами.

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

В Linux:

bash
$ steamcmd +force_install_dir /home/stationeers/server +login anonymous +app_update 600760 validate +quit$ cd /home/stationeers/server$ ./rocketstation_DedicatedServer.x86_64 -file start MyStation Lunar \    -logFile ./server.log \    -settings StartLocalHost true ServerVisible true GamePort 27016 UpdatePort 27015 \    ServerName "Outpost Kepler" ServerPassword "long-join-password" ServerMaxPlayers 6 \    LocalIpAddress 0.0.0.0 AutoSave true SaveInterval 300

В Windows исполняемый файл называется rocketstation_DedicatedServer.exe, аргументы те же. Как поддерживать установку в актуальном состоянии, описано в статье Что такое SteamCMD.

Синтаксис -file start

-file start загружает последнее сохранение указанной станции. Если его нет, он создаёт новый мир с заданными параметрами и сохраняет его:

code
-file start <stationname> [worldid] [difficulty] [startcondition] [startlocation]
ПараметрОбязателенПримечания
stationnameдаИмя сохранения; используется при каждом запуске
worldidдля нового мираLunar, Mars2, Europa3, MimasHerschel, Vulcan2, Venus
difficultyнетCreative, Easy, Normal (по умолчанию), Stationeer
startconditionнетПо умолчанию стандартный старт мира; варианты зависят от мира
startlocationнетПо умолчанию стандартное место посадки

ID миров содержат номера версий, потому что миры со временем пересобирали. Список выше актуален на момент написания; новые или переименованные миры появляются с обновлениями, и сверяться стоит с гайдом по выделенному серверу на официальной вики Stationeers.

Когда станция уже существует, та же командная строка продолжает её загружать. Мир и сложность нужны только в первый раз, но если их оставить, вреда не будет.

Чек-лист первого запуска

  1. Запустите с -file start и новым именем станции.
  2. Следите за логом, пока мир не сгенерируется и сервер не сообщит, что слушает порт.
  3. Зайдите из игры и проверьте, что высадились там, где ожидали.
  4. Корректно остановите сервер, чтобы записалось первое сохранение.

Настройки: флаг -settings и setting.xml#

Всё, что идёт после -settings, - это последовательность пар ключ-значение. Важные из них:

НастройкаПо умолчаниюЧто делает
ServerNameобщееИмя в списке серверов
ServerPasswordнетПароль на вход
ServerMaxPlayersнебольшоеСлоты в пределах поддерживаемого игрой диапазона
GamePort27016Игровой трафик, UDP
UpdatePort27015Трафик Steam, UDP
ServerVisible-Публиковать сервер в общем списке
StartLocalHost-Начинать хостинг при запуске; ставьте true
LocalIpAddress-0.0.0.0 привязывает все интерфейсы в Linux
AutoSave-Периодические сохранения вкл. или выкл.
SaveInterval300Секунды между автосохранениями
AutoPauseServer-Ставить симуляцию на паузу, когда никого нет онлайн
UPNPEnabled-Проброс портов на роутере; выключите на арендованном сервере
ServerAuthSecretнетОбщий секрет для удалённых админ-команд

После первого запуска сервер также записывает setting.xml. Его можно редактировать, но официальный гайд предупреждает, что это ненадёжно - значения игнорировались или перезаписывались, - и рекомендует указывать всё в строке -settings. На панели это значит команда запуска или переменные запуска, где этим значениям и место.

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

ПортПротоколНазначение
27016UDPИгровой трафик (GamePort)
27015UDPТрафик Steam (UpdatePort)

Оба должны быть открыты, и оба - UDP. Если хостинг выдаёт другие номера, выставьте GamePort и UpdatePort соответственно. В Linux важен LocalIpAddress 0.0.0.0: без него сервер может привязаться не к тому интерфейсу и быть недоступным снаружи даже при открытых портах. В статье Порты игровых серверов объясняется, почему игры разделяют трафик на два порта.

Игроки подключаются через внутриигровой список серверов (при ServerVisible true) или вводят адрес и игровой порт напрямую. Прямое подключение надёжнее, пока новый сервер ещё не разошёлся по списку.

Права админа и консольные команды#

Консоль сервера принимает команды. help выводит их список с аргументами; чаще всего вам понадобятся save (принудительное сохранение), quit (сохранить и корректно остановить) и ban. Точный набор менялся с переработками сервера, так что считайте эталоном help в вашей версии, а не какой-либо старый список.

Админы могут выполнять серверные команды и из игры. Одно и то же значение ServerAuthSecret нужно задать в строке -settings сервера и в клиентском setting.xml самого админа. После этого админ открывает внутриигровую консоль (F3) и пишет серверные команды с префиксом serverrun, например serverrun save. Любой, у кого есть секрет, может делать всё то же, что и консоль, поэтому обращайтесь с ним как с паролем и меняйте его, когда админ уходит.

В ванильном Stationeers нет детальной системы прав. Для приватной группы главный инструмент контроля - пароль; на публичном сервере придётся полагаться на баны и письменные правила - основы описаны в статье Правила сервера, модерация и команда.

Моды#

Моды для Stationeers бывают двух видов:

  • Контентные моды из Steam Workshop - новые предметы, рецепты, правки файлов данных.
  • Кодовые моды, меняющие игровую логику. Обычно они опираются на загрузчик модов от сообщества и на сервере, и на клиентах.

Правила, действующие для любой мультиплеерной игры с модами, здесь применяются с удвоенной силой, потому что Stationeers обновляется часто и меняет внутренности от обновления к обновлению:

  1. У каждого игрока должны быть те же моды тех же версий.
  2. Обновление игры может сломать кодовые моды, пока их авторы не догонят. Не обновляйте сервер с модами в день выхода патча.
  3. Делайте backup сохранения перед добавлением или удалением мода. Удаление мода, который добавлял предметы или конструкции, может сделать сохранение незагружаемым.

Способ загрузки модов на выделенном сервере менялся вместе с синтаксисом запуска, так что следуйте инструкциям для того загрузчика модов и той версии, которые используете, а не универсальному рецепту. Общий порядок восстановления есть в статье Что делать, когда обновление мода всё ломает.

Сохранения, backup и производительность#

Сохранения лежат в папке saves рядом с исполняемым файлом, по одному на имя станции, а сервер хранит последние автосохранения. Корректный quit сначала сохраняет; при убитом процессе теряется всё с последнего автосохранения. При SaveInterval 300 это максимум пять минут - держите это значение или ниже на активной станции.

Делайте backup папки saves за пределы машины по расписанию, перед каждым обновлением и перед каждым изменением модов. В крупных обновлениях Stationeers менял формат сохранений; backup, сделанный до обновления, - ваш путь назад, если новая версия не загрузит станцию. Привычка проверять восстановление описана в статье Backup, которые действительно восстанавливаются.

Чтобы перенести локальную игру на сервер, при остановленном сервере скопируйте сохранение станции из папки сохранений игры в папку saves сервера, затем запустите с -file start и именем этой станции. Проверьте в логе, что она загрузилась, а не сгенерировался новый мир с тем же именем.

Когда симуляция замедляется, обычные причины такие:

  • Огромные сети труб. Одна сеть на всю базу симулируется как одна большая атмосфера. Помогает разделение сетей вентилями и регуляторами.
  • Много маленьких герметичных комнат, каждой из которых нужен свой расчёт атмосферы.
  • Логические чипы с тяжёлыми скриптами на каждом тике.
  • Тысячи разбросанных предметов - кучи руды, выброшенный лёд, брошенные наборы. Уберите их в хранилище.

Долго работающему серверу помогает и плановый перезапуск раз в сутки с предупреждением - см. расписание перезапусков, которое помогает.

На RE:NODE переменные запуска сервера находятся на вкладке Startup, вкладка Schedules умеет связать backup и перезапуск в цепочку, а слоты backup на каждом тарифе хранятся вне машины и восстанавливаются одной кнопкой. Stationeers нет в каталоге, так что это описание панели, а не тарифа для Stationeers.

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

Сервер запускается, но никто не может подключиться. Сначала порты, потом привязка. Проверьте, что оба UDP-порта открыты, а в Linux задайте LocalIpAddress 0.0.0.0.

Настройки из setting.xml игнорируются. Известное поведение. Указывайте их в строке -settings.

Вместо моей станции появился новый мир. Имя станции в -file start не совпадает с именем сохранения в точности.

У игроков несовпадение версий. Игра обновилась. Обновите сервер через SteamCMD и перезапустите.

Всё тормозит, но CPU не на 100%. Проверьте, не упёрлось ли в предел одно ядро; симуляция к нему привязана. Если замедления заканчиваются падениями, см. почему игровой сервер постоянно перезапускается.

FAQ#

Выделенный сервер Stationeers бесплатный?

Да. Он скачивается анонимно через SteamCMD. Игра нужна игрокам, серверу - нет.

С какого мира стоит начать группе?

Обычно первый мир - Луна (Lunar): на ней можно выжить, а задача с атмосферой простая. Марс и Европа добавляют более сложные испытания; Vulcan и Venus - для групп, которые хорошо знают игру.

Почему в старых гайдах используется -load и куча флагов?

Потому что синтаксис запуска изменился, когда выделенный сервер переработали. Текущие сборки используют -file start и -settings; старые команды могут не сработать или вести себя иначе.

Включать ли AutoPauseServer?

Для большинства групп - да. Он не даёт станции деградировать, пока никто не может отреагировать. Выключайте его, только если хотите, чтобы длинные производственные цепочки работали ночью, и уверены, что база переживёт время без присмотра.

Как часто серверу стоит сохраняться?

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


Комментарии

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

0/2000