RE:NODE

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

Сервер Satisfactory: настройки, сохранения и моды

Как забрать выделенный сервер Satisfactory, все настройки Server Manager, где на самом деле лежат сохранения, тонкая настройка автосохранения и установка модов SML на сервер.

0 прочтений

У выделенного сервера Satisfactory почти нет файла конфигурации. Вы устанавливаете его, открываете один порт, а дальше всё делается из самой игры: вы забираете сервер на вкладке Server Manager, задаёте имя и пароль администратора, создаёте или загружаете сохранение и меняете те немногие настройки, что существуют, из панели в клиенте. Такая схема приятна ровно до первой проблемы, потому что когда что-то ломается, править нечего. В этой статье - какие настройки существуют и куда они попадают на диске, где на самом деле лежат сохранения на Linux-сервере (не там, где вы подумали бы), как автосохранение порождает рывок, на который жалуются игроки, и как работают моды, когда серверу нужна собственная сборка каждого из них. Более общий разговор о том, почему сервер Satisfactory тяжелеет, чем лучше идёт игра, - в статье выделенный сервер Satisfactory и почему он тяжелеет.

Установка сервера и единственный важный порт#

Выделенный сервер - бесплатная отдельная загрузка: Steam app id 1690800, анонимный вход, лицензия на игру на машине с сервером не нужна.

bash
$ steamcmd +force_install_dir /home/satisfactory +login anonymous \    +app_update 1690800 validate +quit$ cd /home/satisfactory$ ./FactoryServer.sh -Port=7777

Для экспериментальной ветки добавьте -beta experimental перед validate. Клиент и сервер должны быть на одной ветке и в одной сборке; экспериментальный клиент не может подключиться к серверу раннего доступа, и наоборот, а сообщение об ошибке говорит об этом невнятно. Про app id и переключение веток вообще рассказано в статье SteamCMD простыми словами.

Начиная с Update 8 сервер использует один порт для всего, и он нужен на обоих протоколах:

ПортПротоколНазначение
7777UDPИгровой трафик
7777TCPHTTPS API, с которым говорит Server Manager

Это самая частая проблема при хостинге Satisfactory. Старые руководства, которые всё ещё ходят по сети, называют 15777 для запросов и 15000 для маяка; их больше нет. Вместо этого люди открывают 7777 по UDP, потому что так делают игровые серверы, а потом обнаруживают, что сервер вечно висит в Server Manager как «Offline». Управление, захват сервера, загрузка сохранений и установка модов идут по TCP на том же номере. Откройте оба. Зачем у игры вообще два канала, объясняет статья порты игрового сервера.

HTTPS поверх TCPUDPавтосохранениеКлиент Satisfactoryваш ПКServer Managerзахват, настройки, сохранениИгровая сессияконвейеры и поездаFactoryServerUDP и TCP 7777SaveGames/serverфайлы .sav
Два протокола, один номер порта

Захват сервера и два пароля#

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

  1. Откройте Satisfactory, зайдите в Server Manager в главном меню, выберите Add Server и введите address:7777.
  2. Примите предупреждение о сертификате. Сервер предъявляет самоподписанный сертификат, потому что нет имени, на которое выдать настоящий; это ожидаемо и не признак перехвата.
  3. Сервер сообщает, что он не захвачен. Задайте имя сервера и пароль администратора. Это и есть захват.
  4. При желании задайте пароль клиента, который другие игроки вводят, чтобы зайти.

Два пароля выполняют разную работу. Пароль администратора даёт полный контроль над сервером: настройки, сохранения, выключение, установка модов. Пароль клиента позволяет только заходить. Любой, кто знает пароль администратора, - администратор: списка игроков и системы ролей нет, так что его получают один-два человека, которые действительно управляют сервером.

Когда сервер захвачен, вы либо выбираете Create Game - название сессии, стартовая локация и флажок Advanced Game Settings, - либо Manage Saves и загружаете существующее сохранение. Четыре стартовые локации - Grass Fields, Rocky Desert, Northern Forest и Dune Desert; они меняют, где вы приземлитесь, но не карту, и Grass Fields - самая мягкая.

Настройки сервера и куда они записываются#

Панель Settings в Server Manager короткая. Это вся конфигурация сервера, не связанная с геймплеем:

НастройкаПо умолчаниюЧто делает
Auto PauseвклСтавит мир на паузу, когда никто не подключён
Auto Save on Player DisconnectвклДополнительное сохранение, когда уходит последний игрок
Autosave Interval5 минутКак часто записывается мир
Server Restart Time SlotвыклЧас суток, в который сервер может сам перезапускаться
Send Gameplay DataвклТелеметрия для Coffee Stain
Network QualitymediumЧастота обновлений на клиента

Они записываются в ServerSettings.ini в папке конфигурации сервера (FactoryGame/Saved/Config/LinuxServer/ на Linux, WindowsServer на Windows), после того как вы хотя бы раз их измените. Читайте этот файл, а не доверяйте какому-либо опубликованному списку ключей, включая эту таблицу: Coffee Stain добавляет настройки между обновлениями, а файл, записанный сервером, всегда актуален.

Auto Pause - настройка, о которой стоит подумать первой. Когда она включена, завод останавливается в момент, когда отключается последний игрок, и снова идёт, когда кто-то возвращается. Обычно именно этого группа и хочет: мир на месте, когда вы входите, а ночью сервер не тратит CPU. Если хотите, чтобы производство шло, пока никого нет в сети, отключите её, но понимайте, что вы покупаете: симуляция идёт 24 часа в сутки, сохранение растёт круглосуточно, а выделенный контейнеру CPU используется постоянно, а не те три часа ночи, когда кто-то играет.

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

Лимита игроков в этой панели нет. Выделенный сервер по умолчанию рассчитан на четверых, что соответствует поддерживаемому размеру кооператива, а путь сообщества к большему числу - это Game.ini в той же папке конфигурации:

FactoryGame/Saved/Config/LinuxServer/Game.ini
[/Script/Engine.GameSession]MaxPlayers=8

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

Advanced Game Settings#

Advanced Game Settings относятся к сохранению, а не к серверу. Вы включаете их флажком при создании игры или из меню паузы в сохранении, где они уже включены.

  • Без стоимости постройки и без требований к энергии
  • Режимы бога и полёта
  • Сохранение инвентаря после смерти
  • Открытие всех исследований, схем и уровней
  • Прямая установка фазы игры
  • Выдача предметов

Две вещи, которые нужно знать, прежде чем ставить флажок. Включение Advanced Game Settings навсегда помечает сохранение и отключает на нём достижения, и пути назад нет - копирование сохранения этого не очищает. И доступны они любому на сервере, кто откроет меню, а не только админу, так что на сервере с людьми, которых вы плохо знаете, «открыть все уровни» - это один скучающий клик.

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

Сохранения: где они лежат и как перенести одно#

Здесь люди теряют час. Выделенный сервер на Linux хранит сохранения не внутри каталога установки. Он пишет их в домашний каталог пользователя, под которым запущен:

code
~/.config/Epic/FactoryGame/Saved/SaveGames/server/    Longship.sav    Longship_autosave_0.sav    Longship_autosave_1.sav    Longship_autosave_2.sav~/.config/Epic/FactoryGame/Saved/SaveGames/blueprints/

На сервере с Windows это %LOCALAPPDATA%\FactoryGame\Saved\SaveGames\server\. На клиенте ваши одиночные и кооперативные сохранения лежат в %LOCALAPPDATA%\FactoryGame\Saved\SaveGames\ в папке, названной по идентификатору вашего аккаунта в магазине.

Перенести сохранение на сервер можно двумя путями. Поддерживаемый - Manage Saves, затем Upload Save в Server Manager, что отправляет файл через HTTPS API. Это правильный ответ, и он работает, пока сохранение не станет большим и загрузка не упрётся в таймаут, что начинает случаться на зрелых заводах. Запасной путь - скопировать .sav прямо в папку server по SFTP или через файловый менеджер и перезапустить сервер, после чего оно появится в списке сохранений как любое другое. Как добраться до этого пути на панели, описано в статье SFTP и файловый менеджер.

Два правила, если делаете это вручную. Копируйте только файлы .sav и сохраняйте одно и то же имя сессии - Server Manager показывает в списке имя файла. И никогда не перезаписывайте сохранение, которое сервер сейчас использует; сначала остановите его, потому что следующее автосохранение затрёт всё, что вы туда положили.

Чертежи (blueprints) хранятся отдельно. Это пара файлов на каждый чертёж в папке blueprints, и они не едут вместе с сохранением, поэтому чертёж, созданный в одиночном мире друга, не появится на сервере, пока кто-нибудь его не скопирует.

Автосохранения, рывок и настоящие бэкапы#

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

Что действительно помогает, по порядку:

  1. Увеличьте интервал. Десять минут вместо пяти вдвое уменьшают, как часто это кто-то замечает. Но и цена сбоя вдвое выше, так что выберите число, а не выкручивайте его до максимума.
  2. Быстрое хранилище. Запись - это большая последовательная операция, и NVMe завершает её за долю времени, которое нужно вращающемуся диску. Это один из нагляднейших случаев в статье что на самом деле меняет NVMe.
  3. Больше памяти, если машина уходит в своп. Сервер, записывающий сохранение при превышении лимита памяти, - это другая и более тяжёлая проблема.

Не помогает удаление автосохранений ради экономии диска. Три ротирующихся файла - самая дешёвая страховка, какая у вас есть.

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

На RE:NODE слоты бэкапов входят в каждый тариф Satisfactory, они хранятся вне машины, которую защищают, а восстановление - это кнопка, а не тикет. Вкладка Schedules запускает ночной бэкап и, если хотите, ночной перезапуск по выражению cron - доводы за и против такого перезапуска для игры, растущей в памяти, есть в статье расписания перезапусков, которые помогают.

Моды через SML на выделенном сервере#

Моддинг Satisfactory работает на SML, Satisfactory Mod Loader, а моды распространяются через ficsit.app и устанавливаются на клиентах через Satisfactory Mod Manager. На выделенном сервере моды лежат в папке Mods внутри каталога FactoryGame сервера, по одной папке на мод.

Ограничение, на котором спотыкаются, - это целевые платформы сборки. Мод компилируется под каждую платформу, и мод, поставляющий только клиентскую сборку для Windows, не запустится на выделенном сервере Linux, куда бы вы ни положили файлы. Прежде чем строить набор модов, проверьте в описании каждого мода наличие серверной сборки. Mod Manager умеет ставить моды прямо на захваченный выделенный сервер по паролю администратора; он сам разбирается с целями сборки, и это гораздо надёжнее копирования папок.

Остальное подчиняется обычным правилам модифицированного сервера, а здесь они строги:

  • Клиент и сервер запускают одни и те же моды одних и тех же версий. Несовпадение обычно приводит к отказу при подключении, а не к тихому ухудшению.
  • SML привязан к версии игры. После обновления игры ничего не загружается, пока не обновлён SML, а затем каждый мод.
  • Удаление мода, добавлявшего постройки, ломает сохранение. В мире остаются объекты, которые игра больше не может определить. Решите список модов до того, как вложите в него двести часов, и делайте бэкап перед добавлением или удалением чего-либо.
  • Моды увеличивают расход памяти, особенно те, что добавляют постройки и рецепты, а у Satisfactory на зрелом заводе нет запаса.

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

Подбор ресурсов и диагностика#

Расход памяти Satisfactory следует за размером завода, а не за числом игроков. Ориентировочно:

СтадияRAMПримечания
Новый мир, 2 игрока8 ГБХватает на первые фазы
Середина игры, 4 игрока10-12 ГБПоезда, несколько производственных площадок
Зрелый завод12-14 ГБИспользует всё, что вы дадите
С модамиВерх этого диапазонаБольше всего стоят моды на постройки

Сервер показан как Offline в Server Manager, хотя порт открыт. Открыт, скорее всего, только UDP, а TCP на 7777 - нет. Канал управления - это HTTPS поверх TCP на том же номере порта, что и игровой UDP-трафик.

Клиент отказывается принять сертификат. Самоподписанный, это ожидаемо, примите его. Установить настоящий сертификат для IP-адреса нельзя.

«Server is not claimed» после того, как вы его захватили. Вы смотрите на другой сервер, либо в клиенте осталась устаревшая запись. Удалите её из списка и добавьте снова.

Сервер не принимает клиент той же версии. Проверьте ветку. Experimental и early access показывают похожие номера версий и не взаимодействуют.

Сохранение загружается и потом не появляется. Обычно таймаут на большом файле. Скопируйте его прямо в папку сохранений server и перезапустите.

Одно ядро CPU загружено, пока в сети никого нет. Auto Pause выключен, поэтому завод работает. Это выбор, а не неисправность, но делать его стоит осознанно.

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

FAQ#

Сколько игроков вмещает выделенный сервер Satisfactory?

По умолчанию четыре, это поддерживаемое число. Увеличение MaxPlayers в Game.ini работает, и так делает большинство больших групп, но это не поддерживается, а сетевая часть не рассчитана на такое. Восемь - разумный запас; дальше ждите проблем, которых не решает ни одна настройка.

Продолжает ли завод работать, когда никого нет в сети?

Только если отключить Auto Pause. По умолчанию мир стоит на паузе, пока пуст, то есть ночью нет производства, а CPU не тратится, пока никто не играет. Достоинство ли это, целиком зависит от того, как играет ваша группа.

Где лежат сохранения на Linux-сервере?

В домашнем каталоге пользователя, под которым запущен сервер, по пути .config/Epic/FactoryGame/Saved/SaveGames/server/, а не внутри папки установки. Чертежи лежат в соседней папке blueprints.

Можно ли перенести одиночное сохранение на выделенный сервер?

Да. Загрузите его из Server Manager или скопируйте .sav в папку сохранений сервера и перезапустите. Формат сохранения тот же; не переезжают ваши чертежи, потому что это отдельные файлы.

Нужна ли копия игры, чтобы запустить сервер?

Нет. Выделенный сервер - это отдельная анонимная загрузка в Steam, app id 1690800, и лицензия ему не нужна. Игра нужна вам для администрирования, потому что Server Manager - часть клиента.

Почему сервер замирает на мгновение каждые несколько минут?

Это автосохранение. Весь завод сериализуется в один файл, поэтому пауза растёт вместе с сохранением. Увеличьте интервал автосохранения и убедитесь, что хранилище под ним быстрое; больше ничто это не меняет.


Комментарии

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

0/2000