MAATRIX GAMES / Блог / Valheim — продвинутая настройка через аргументы запуска

Valheim — продвинутая настройка через аргументы запуска

MAATRIX GAMES

Базовый набор -name -port -world -password -public поднимает рабочий сервер, но не отвечает на вопросы, которые встают чуть позже: как пустить друга с Xbox через Game Pass, почему сервер на полминуты подвисает каждые полчаса, и можно ли включить хардкорный режим одной строкой в юните systemd, не трогая сейв. Все эти вещи регулируются флагами запуска, про которые в стандартных гайдах почти не пишут. Разбираем их по одному, с реальными примерами команд.

Все флаги запуска одной таблицей

Полный список того, что можно передать бинарнику valheim_server.x86_64 (или .exe на Windows), с акцентом на менее очевидные:

ФлагНазначение
-name, -port, -world, -password, -public, -savedirбазовый набор — разобран в отдельной статье про подъём сервера Valheim
-crossplayвключает кроссплатформенный netcode (PlayFab) вместо классического Steam-netcode
-saveinterval [сек]интервал автосохранения мира на диск
-backups [N]сколько встроенных долгосрочных бэкапов хранить
-backups-short [сек]интервал коротких снапшотов между долгосрочными бэкапами
-backups-long [N]через сколько коротких снапшотов делается один долгосрочный
-preset [имя]пресет сложности и правил мира (применяется только при создании нового мира)
-modifier [ключ] [значение]точечная настройка одного правила мира (combat, deathpenalty, resources, raids, portals и т.д.)
-setkey [globalkey]предустановка глобального ключа мира (например, отметка о побеждённом боссе) при создании
-instanceid [N]разделяет несколько инстансов сервера на одной машине (логи, crash dump)
-logfile [путь]пишет консольный вывод в файл вместо стандартного потока
-nographics -batchmodeпринудительный headless-режим — на Linux уже включён по умолчанию в дедике, на Windows .bat их стоит прописать явно

Ниже — по существу о тех, что реально меняют поведение сервера, а не просто дублируют очевидное.

-crossplay: играть с друзьями на Xbox и Game Pass

Флаг -crossplay переключает сервер с классического Steam-networking на PlayFab-бэкенд, через который ходит трафик между Steam, Xbox и Microsoft Store/Game Pass версиями игры. Без него игроки с консоли или Game Pass ваш сервер просто не увидят и не смогут подключиться, даже зная IP и порт.

./valheim_server.x86_64 -name "Vikings" -port 2456 -world "Dedicated" \
  -password "odinwins" -public 1 -crossplay \
  -savedir "/home/valheim/valheim-server/saves"

Нюансы, о которых стоит знать заранее:

  • Кроссплей-серверы отображаются в отдельной вкладке списка серверов в игре, а не только в классическом Steam-браузере — Steam-игроки без включённого кроссплея тоже их видят, если сами не отключили этот фильтр.
  • У игрока на своей стороне тоже должен быть включён кроссплей в настройках учётной записи — это не только серверная настройка.
  • Порты остаются теми же тремя UDP (2456-2458 при стандартном -port), но часть трафика на кроссплей-сессиях может идти через релей PlayFab, а не напрямую — на практике это иногда добавляет пару лишних миллисекунд пинга, для большинства групп некритично.
  • Комбинация с -public 0 работает: сервер скрыт из общих списков, но друзья по прямому приглашению или коду присоединения кроссплей всё равно получат. Подробнее про настройку кроссплея для разных игр — в статье про кроссплей между платформами.

Если играете только на PC/Steam всей группой — флаг не нужен, он не даёт заметных плюсов и слегка усложняет сетевой стек без причины.

Поднять сервер Valheim за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

-saveinterval: как часто сервер пишет мир на диск

По умолчанию Valheim автосохраняет мир примерно раз в 30 минут (1800 секунд) — это значение можно уточнить флагом --help на конкретной сборке сервера, так как разработчик время от времени его пересматривает между патчами. Меняется так:

-saveinterval 900   # каждые 15 минут
-saveinterval 3600  # раз в час

Компромисс тут прямой. Автосохранение на большом, давно отстроенном мире занимает заметное время и на пару секунд подвешивает симуляцию — игроки в этот момент видят характерный микрофриз. Если сократить интервал слишком сильно (например, до 5 минут на мире с сотнями построек), эти подвисания начинают раздражать сильнее, чем экономят прогресс. Если растянуть слишком сильно — при падении сервера по питанию или kill -9 можно потерять час активного строительства.

Практический ориентир: для свежих небольших миров с активной стройкой — 900-1200 секунд, для устоявшихся крупных карт с полным составом группы — можно спокойно держать дефолтные 1800 или даже поднять до 3600, если фризы на автосейве стали заметны игрокам.

-backups, -backups-short и -backups-long: встроенная ротация бэкапов

У Valheim есть собственный механизм ротации бэкапов, независимый от того, что вы, возможно, уже настроили через cron (см. статью про автобэкапы по расписанию). Три флага работают вместе:

-backups 4          # сколько долгосрочных копий хранить
-backups-short 7200 # интервал между короткими снапшотами, в секундах
-backups-long 12    # через сколько коротких снапшотов один становится долгосрочным

Логика: сервер регулярно делает "короткие" снапшоты с интервалом -backups-short, и каждый N-й из них (где N — значение -backups-long) повышается до "долгосрочного" и остаётся в ротации дольше. Итоговое число хранимых долгосрочных копий ограничено -backups. Точные значения по умолчанию у каждой версии сервера могут отличаться — стоит свериться через --help на вашей сборке, но описанная выше механика стабильна уже не первый год.

Файлы лежат в подпапке backups внутри -savedir, с меткой времени в имени файла рядом с основными <world>.db и <world>.fwl. Важная оговорка: это всё ещё локальные копии на том же диске, что и рабочий мир. Если сломается диск VPS целиком — встроенные бэкапы пропадут вместе с основным сейвом. Для реальной надёжности их стоит дополнять внешним rsync или cron-архивацией на другой диск/хранилище, как описано в статье про автобэкапы — встроенный механизм Valheim закрывает только сценарий "откатиться на час назад после кривого крафта или грифа", а не "сервер физически недоступен".

-preset и -modifier: сложность и правила мира без правки сейва

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

-preset hard

или точечно, отдельными модификаторами:

-modifier combat veryhard \
-modifier deathpenalty hardcore \
-modifier portals casual

Доступные пресеты в духе normal, casual, easy, hard, hardcore, immersive, hammer — но точный набор и его поведение стоит перепроверять под текущую версию игры, разработчик их периодически донастраивает. Ключевая оговорка, которая ловит почти всех: -preset и -modifier применяются только в момент создания нового мира. На уже существующем сейве, поднятом с этими флагами, ничего не изменится — правила зафиксированы в самом файле мира на старте. Если нужно поменять сложность на живом мире — придётся либо начинать заново с новым именем -world, либо использовать игровые консольные команды по модификаторам мира, которые работают "на лету", но требуют включённого чит-режима у администратора.

Флаг -setkey [globalkey] работает по той же логике — предустанавливает глобальный ключ (например, отметку о побеждённом боссе) при создании нового мира. Полезно для сценариев вроде тестового сервера с сразу разлоченным поздним прогрессом, но так же бесполезен на уже существующем сейве.

-instanceid, -logfile и другие служебные флаги

-instanceid [N] пригождается, если на одной VPS крутится несколько инстансов Valheim (например, для разных дружеских групп на одном железе) — он разводит внутренние идентификаторы процессов, чтобы crash dump и служебные файлы одного инстанса не путались со вторым.

-logfile [путь] перенаправляет консольный вывод сервера в файл вместо стандартного потока:

-logfile "/home/valheim/valheim-server/logs/server.log"

Если сервер уже управляется через systemd (см. базовую статью), вывод и так уходит в journald и читается через journalctl -u valheim -f — отдельный -logfile тогда избыточен, разве что нужен параллельный файл для внешнего парсера логов или мониторинга. Про то, как вообще читать логи и крэш-репорты Valheim и отличать штатный шум от реальной проблемы — отдельная статья про чтение логов и краш-репортов.

На Windows-сборке дедика стоит явно добавить -nographics -batchmode в .bat-файл запуска — без них сервер иногда пытается инициализировать графический контекст, чего headless-VPS без GPU не переживёт. На Linux-бинарнике дедика этот режим уже встроен по умолчанию, добавлять руками не нужно.

Поднять сервер Valheim за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

Можно ли добавлять флаги без пересоздания мира?

Большинство флагов (crossplay, saveinterval, backups, instanceid, logfile) применяются на каждом запуске и не зависят от сейва — их можно менять свободно. Исключение — -preset, -modifier и -setkey: они фиксируются только при создании нового мира.

После смены флагов в systemd-юните нужно что-то ещё?

Да — sudo systemctl daemon-reload, затем sudo systemctl restart valheim. Без daemon-reload systemd продолжит использовать старую версию unit-файла.

-crossplay ломает обычное подключение через Steam?

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

Что если поставить -saveinterval совсем маленьким, например 60 секунд?

Технически сервер запустится, но на мире с активной стройкой фризы от частых автосохранений станут заметны почти постоянно — на практике так почти никто не делает, разве что на тестовом одиночном сервере без игроков.

Где посмотреть все флаги, которые поддерживает конкретная версия сервера?

Запустите бинарник с --help (или -help в зависимости от сборки) — так проще всего сверить дефолтные значения и точный список пресетов под текущий патч, они периодически меняются.