RE:NODE

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

Выделенный сервер Astroneer и порты

Как запустить выделенный сервер Astroneer: установка, все ключи AstroServerSettings.ini, порт 8777, PublicIP, владелец и whitelist, перенос сохранения и ошибки подключения.

0 прочтений

Выделенный сервер Astroneer - это бесплатная программа для Windows (Steam app 728470, скачивается анонимно), которая запускает одно сохранение для восьми игроков максимум. Он настраивается через два файла в Astro/Saved/Config/WindowsServer/: Engine.ini, где хранится игровой порт (по умолчанию 8777 UDP), и AstroServerSettings.ini, где хранится всё остальное - имя, пароль, владелец, публичный IP, интервалы сохранения и список игроков. Единственная настройка, на которой спотыкается большинство первых попыток, - PublicIP: сервер регистрируется в бэкенде игры с этим адресом, и если он неверный, сервер либо не появляется в списке, либо к нему нельзя подключиться. Укажите адрес, по которому игроки действительно будут подключаться, откройте UDP 8777, а остальное - детали.

Как устроены выделенные серверы Astroneer#

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

Несколько особенностей Astroneer:

  • Максимум восемь игроков. Поднимать MaximumPlayerCount выше 8 бессмысленно.
  • Только Windows. Сервер - это AstroServer.exe. В Linux он работает через Wine, и у многих это получается, но такой вариант не поддерживается, и обновления иногда его ломают.
  • Реестр серверов. Сервер не использует классический мастер-список Steam. Он регистрируется в онлайн-бэкенде игры, а игроки добавляют его в свой список серверов по адресу. Поэтому PublicIP так важен.
  • Только ПК. Выделенные серверы предназначены для игроков Steam и Microsoft Store на ПК. Консольные игроки используют хостовые сессии.

Есть и известный инструмент сообщества, AstroLauncher, который оборачивает сервер в Windows. Он управляет конфигами, занимается перезапусками и backup, проверяет настройку сети и добавляет небольшой веб-интерфейс. Он не официальный, но сглаживает достаточно острых углов сервера, чтобы им пользовалось большинство самостоятельно размещённых серверов Astroneer на Windows. На игровой панели ту же роль играет сама панель, так что там он не нужен.

Выделенный сервер или хостовая сессия?

Для двух друзей, которые всегда играют вместе, хостовой сессии достаточно: тот, кто хостит, запускает игру, второй подключается, а сохранение лежит на ПК хоста. Проблемы начинаются, когда группа растёт или расписания расходятся. Сохранение доступно, только когда хост онлайн, FPS хоста делится с симуляцией, а когда хост уходит, выкидывает всех остальных. Чтобы передать сохранение другому игроку, приходится вручную копировать файлы.

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

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

Запуск через Wine на Linux

Поскольку сервер - исполняемый файл Windows, хостинг на Linux означает запуск через Wine. Так его запускают многие хостинги с панелями и контейнерные образы сообщества, и для приватной группы это обычно нормально. Издержки стоит знать заранее:

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

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

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

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

СохранениеRAMCPUПримечания
Новое сохранение, 1-4 игрока2-3 GB1-2 ядраКомфортный старт
Середина игры, 4-8 игроков3-4 GB2 ядраНесколько баз, роверы
Поздняя игра, много автоматизации4-6 GB2+ быстрых ядраБольшие изменения рельефа, много предметов
  • CPU: симуляция и физика опираются на один основной поток, поэтому важна тактовая частота. MaxServerFramerate ограничивает, насколько интенсивно он работает (см. ниже).
  • Диск: сервер занимает несколько гигабайт. Сохранения начинаются с нескольких мегабайт и вырастают до десятков; с хранением автоматических backup выделите 10 GB.
  • Сеть: пропускная способность нужна скромная, но задержка проявляется как дёргающиеся роверы и запоздалый подбор предметов. Как отличать одно от другого, описано в статье Задержка, джиттер и потеря пакетов.

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

Через SteamCMD в Windows:

bash
$ steamcmd +force_install_dir C:\astro-server +login anonymous +app_update 728470 validate +quit

Цикл обновления и validate описаны в статье Что такое SteamCMD. Запустите AstroServer.exe один раз, дайте ему полностью стартовать и остановите. Этот первый запуск создаёт папку Astro\Saved\Config\WindowsServer с Engine.ini и AstroServerSettings.ini, а также папку SaveGames.

Последовательность, которая работает:

  1. Запустите сервер один раз, чтобы сгенерировать конфиги.
  2. Остановите его.
  3. Задайте порт в Engine.ini и настройки в AstroServerSettings.ini, включая PublicIP и OwnerName.
  4. Откройте UDP 8777 (или выбранный порт) на каждом firewall между сервером и интернетом.
  5. Запустите сервер, и пусть первым зайдёт владелец.

Engine.ini: порт#

Игровой порт задаётся в Engine.ini, а не в настройках сервера:

Astro/Saved/Config/WindowsServer/Engine.ini
[URL]Port=8777

Меняйте его, только если хостинг выдал вам другой порт или вы запускаете несколько серверов на одной машине. Порт - UDP. Если вы его измените, каждому игроку придётся указывать новый номер при добавлении сервера.

Старые гайды также советуют добавить в Engine.ini блок [SystemSettings] с net.AllowEncryption=False - а в некоторых версиях и в собственный Engine.ini игроков, - чтобы исправить ошибки подключения. Для некоторых сборок это был настоящий обходной путь; в текущих он обычно не нужен, но остаётся одним из первых советов сообщества, когда правильно настроенный сервер всё равно отказывает в подключении.

AstroServerSettings.ini, ключ за ключом#

В файле одна секция. Типичная отредактированная версия:

Astro/Saved/Config/WindowsServer/AstroServerSettings.ini
[/Script/Astro.AstroServerSettings]bLoadAutoSave=TrueMaxServerFramerate=30.000000MaxServerIdleFramerate=3.000000bWaitForPlayersBeforeShutdown=FalsePublicIP=203.0.113.10ServerName=Exo Dynamics AnnexMaximumPlayerCount=8OwnerName=NovaPilotOwnerGuid=PlayerActivityTimeout=0ServerPassword=a-long-join-passwordbDisableServerTravel=FalseDenyUnlistedPlayers=FalseVerbosePlayerProperties=TrueAutoSaveGameInterval=900BackupSaveGamesInterval=7200ActiveSaveFileDescriptiveName=SAVE_1ConsolePort=1234

Что делает каждая настройка:

НастройкаПо умолчаниюЧто делает
PublicIPпустоАдрес, регистрируемый в бэкенде; должен быть доступен
ServerNameобщееИмя в списке серверов
ServerPasswordпустоПароль на вход
OwnerNameпустоОтображаемое имя владельца в Steam
OwnerGuidпустоЗаполняется при первом входе владельца
MaximumPlayerCount8Слоты, до 8
MaxServerFramerate30Предел частоты симуляции, когда есть игроки
MaxServerIdleFramerate3Предел частоты, когда никого нет онлайн
AutoSaveGameInterval900Секунды между автосохранениями
BackupSaveGamesInterval7200Секунды между резервными копиями сохранения
DenyUnlistedPlayersFalseTrue пускает на сервер только по whitelist
ActiveSaveFileDescriptiveNameSAVE_1Какое сохранение загружает сервер
PlayerActivityTimeout0Кикать неактивных игроков через столько секунд; 0 - никогда
ConsolePort1234Локальный порт удалённой консоли для инструментов

PublicIP

Укажите адрес, по которому игроки обращаются к серверу, - на арендованном сервере это адрес, показанный в панели. На домашнем сервере за роутером это ваш публичный интернет-адрес, а не адрес ПК вида 192.168.x.x. Если он меняется (у домашних подключений так бывает часто), сервер регистрирует неверный адрес, и игроки не могут подключиться, пока вы его не обновите. У арендованных серверов такой проблемы нет - это один из честных аргументов, разобранных в статье Свой игровой сервер дома или аренда.

Владелец, админы и whitelist

OwnerName - отображаемое имя в Steam того, кто должен владеть сервером. Когда игрок с этим именем заходит впервые, сервер записывает его ID в OwnerGuid, и с этого момента владельцем считается этот аккаунт, как бы он потом ни назывался.

Владелец управляет всеми остальными прямо из игры, в списке игроков сервера: повышает до админа, добавляет в whitelist, кикает и вносит в чёрный список. Сервер записывает это в файл настроек как записи игроков с категорией - Owner, Admin, Whitelisted, Blacklisted или Unlisted. Затем DenyUnlistedPlayers=True превращает сервер в закрытый по whitelist: подключиться могут только те, кто уже есть в списке. Обычный порядок для приватной группы - оставить False, дать всем зайти один раз, чтобы они появились в списке, внести их в whitelist и только потом переключить на True.

Настройки частоты

MaxServerFramerate ограничивает, сколько раз в секунду сервер выполняет симуляцию, пока игроки онлайн. Значения по умолчанию 30 хватает для большинства сохранений. Повышение может сгладить игру с обилием физики, но пропорционально стоит CPU, а выигрыш невелик. MaxServerIdleFramerate - частота, когда никого нет онлайн; если держать её низкой, пустой сервер почти не нагружает CPU. Если хотите, чтобы автоматизация ночью работала на полной скорости, поднимите частоту простоя, но учтите, что сохранение продолжит меняться, пока за ним никто не смотрит.

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

ПортПротоколНазначение
8777UDPИгровой трафик, задаётся в Engine.ini
1234TCPЛокальная консоль для инструментов управления; не открывайте наружу

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

Чтобы подключиться, игрок открывает в игре список серверов, добавляет сервер по адресу и порту (203.0.113.10:8777), и тот появляется в списке со своим именем и статусом. Пароль спрашивается при входе. Если сервер у всех отображается как недоступный, проблема почти всегда в PublicIP или firewall.

Перенос локального сохранения на сервер#

Сохранения из одиночной игры и хостовых сессий можно перенести на выделенный сервер. Локальные сохранения в установке Steam лежат здесь:

code
%LOCALAPPDATA%\Astro\Saved\SaveGames\

Шаги:

  1. Остановите сервер.
  2. Скопируйте нужный файл .savegame в папку Astro\Saved\SaveGames сервера - как загрузить файлы на арендованный сервер, описано в статье SFTP и файловый менеджер.
  3. Имена файлов сохранений состоят из описательного имени, за которым идут $ и метка даты. Укажите в ActiveSaveFileDescriptiveName часть до $.
  4. Запустите сервер и проверьте в логе, что он загрузил это сохранение, а не создал новое.

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

Сохранения, backup и обновления#

Astroneer автоматически сохраняется каждые AutoSaveGameInterval секунд (по умолчанию 15 минут) и делает резервную копию каждые BackupSaveGamesInterval секунд (по умолчанию два часа), храня их в той же папке SaveGames. При корректной остановке сервер сначала сохраняется; при убитом процессе теряется всё с последнего автосохранения.

Эти встроенные backup защищают от повреждения сохранения, но не от потери сервера или удаления не той папки. Копируйте сохранения за пределы машины по расписанию и время от времени восстанавливайте одно из них, чтобы проверить, что оно работает, - в статье Backup, которые действительно восстанавливаются объясняется, почему смысл именно в этой проверке.

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

Если снизить AutoSaveGameInterval до 300 секунд, сбой на активном сохранении обойдётся дешевле. На маленьких сохранениях подвисание при сохранении короткое и становится заметным только в поздней игре.

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

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

Сервер не отображается онлайн в списке. PublicIP неверный или пустой, либо закрыт UDP 8777. Проверьте оба пункта прежде всего остального.

Игроки зависают на «Connecting» и отваливаются по таймауту. Обычно порт открыт для TCP вместо UDP или порт в Engine.ini не совпадает с открытым. Следующее, что стоит попробовать, - обходной путь с шифрованием, описанный выше.

У владельца нет прав. OwnerName не совпал с его отображаемым именем в Steam при первом входе, так что записан мог быть кто-то другой или никто. Остановите сервер, очистите неверный OwnerGuid, точно укажите имя и пусть он зайдёт первым.

Сервер загружает новый мир вместо загруженного сохранения. ActiveSaveFileDescriptiveName не совпадает с именем файла до $.

Настройки откатываются после перезапуска. Вы правили файл при работающем сервере. Остановите, отредактируйте, запустите.

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

FAQ#

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

Восемь. Игра построена вокруг этого числа, и поднимать настройку сервера выше бессмысленно.

Могут ли игроки с Xbox или PlayStation подключиться к выделенному серверу?

Нет. Выделенные серверы предназначены для игроков на ПК из Steam и Microsoft Store. Консольные игроки используют хостовые сессии.

Работает ли сервер Astroneer на Linux?

Только через Wine. У многих это работает, но не поддерживается, и обновления уже ломали связки с Wine. Надёжный выбор - Windows.

Чем отличаются интервалы автосохранения и backup?

Автосохранение записывает текущее сохранение; интервал backup копирует его в отдельный резервный файл. Оба лежат в одной папке, так что ни то ни другое не заменяет backup, хранящиеся где-то ещё.

Нужен ли мне AstroLauncher?

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


Комментарии

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

0/2000