RE:NODE

Публичная тестовая ветка Valheim на выделенном сервере

Автор Команда RE:NODE
12 мин чтения


Чтобы запустить публичную тестовую сборку Valheim на выделенном сервере, установите бета-ветку сервера public-test с паролем, который публикует Iron Gate (исторически это yesimadebackups), в отдельную папку, направьте её на копию вашего мира в отдельном каталоге сохранений, а каждого тестера попросите переключить собственную игру в Steam на ту же ветку. Тестовые и релизные серверы друг друга не видят: игрок на тестовой сборке не может зайти на обычный сервер, и наоборот. Когда тест закончится, игроки отказываются от беты в Steam, а вы просто возвращаетесь к нетронутой релизной установке. Нельзя делать только одно: открывать свой настоящий мир на тестовой сборке, потому что мир, сохранённый более новой версией, может не загрузиться на старой.

В этой статье пройден весь цикл: для чего нужна тестовая ветка, установка через SteamCMD, клиент Steam, Docker или панель, подготовка одноразовой копии мира, что происходит с модами и как вернуть всех на стабильную версию, ничего не потеряв.

Что такое публичная тестовая ветка#

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

Для сервера это важно по трём причинам:

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

Совет самой Iron Gate содержится в пароле: сначала сделайте backup. Тестовые ветки нужны из любопытства и чтобы проверить, переживёт ли настройка вашей группы патч, - а не для основной кампании.

Зачем владельцу сервера это нужно

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

Прежде чем начать: сделайте backup мира и персонажей#

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

  1. Корректно остановите релизный сервер, чтобы мир на диске был актуальным. Дождитесь в логе строки о сохранении.
  2. Скопируйте оба файла мира - Name.db и Name.fwl - из worlds_local куда-нибудь за пределы папок сервера. Добавьте файлы .old, если хотите сохранить и предыдущее сохранение.
  3. Сделайте полный backup привычным способом, а не только копию. На панели это backup по запросу, лучше заблокированный, чтобы ротация не могла его удалить.
  4. Попросите каждого тестера сделать backup своих персонажей. Персонажи хранятся на машине каждого игрока, а не на сервере, и тестовый клиент записывает их в формате, который использует тестовая сборка. В Windows это файлы .fch в %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\characters_local\ или в Steam Cloud в characters.

Backup персонажей - то, о чём забывают. Копия мира защищает мир; ничто на сервере не защищает персонажа игрока от сохранения тестовым клиентом. Где лежат файлы сохранений на каждой платформе, написано в статье savedir и расположение файлов, а причины иметь восстановление, которое действительно работает, - в статье backup сервера Valheim и повреждение мира.

Установка тестовой сборки сервера#

У выделенного сервера (896660) собственные бета-ветки, отдельные от веток клиента игры. Используйте отдельный каталог установки, чтобы релизная установка никогда не затрагивалась.

С SteamCMD в Linux:

bash
$ steamcmd +force_install_dir /home/valheim/ptb \    +login anonymous \    +app_update 896660 -beta public-test -betapassword yesimadebackups validate \    +quit

Флаг -beta выбирает ветку, -betapassword открывает её, а validate проверяет каждый файл. Запускайте ту же строку снова, чтобы получать каждый новый тестовый патч. Перед использованием проверьте актуальное название ветки и пароль в объявлении Iron Gate о тесте; они годами оставались неизменными, но менять их вправе только Iron Gate. Как работают флаги беты в разных играх, объясняет статья app ID SteamCMD и бета-ветки.

В Windows через клиент Steam выделенный сервер находится в разделе Tools библиотеки под названием "Valheim Dedicated Server". Щёлкните его правой кнопкой, откройте Properties, затем Betas, введите код и выберите public-test. После этого Steam скачает тестовую сборку в ту же папку, где лежит ваш релизный сервер, а этого вы как раз и хотите избежать. Если идёте этим путём, сначала скопируйте папку релизного сервера в другое место, чтобы у вас были обе, либо установите тестовую сборку через SteamCMD в отдельную папку.

С Docker-образом lloesche/valheim-server дополнительные аргументы SteamCMD передаются в переменной окружения. Запустите второй контейнер с собственными томами, а не перенастраивайте основной:

ptb.env
SERVER_NAME=Ravenhold PTBWORLD_NAME=MidgardTestSERVER_PASS=spare-anvil-03SERVER_PUBLIC=falseSTEAMCMD_ARGS=-beta public-test -betapassword yesimadebackups validate

Имя переменной и её значение по умолчанию менялись за время жизни образа, поэтому сверьтесь с README образа. Тома разобраны в статье Valheim в Docker.

На хостинге с панелью чистый подход - второй сервер под тест, а не переключение основного. Если в установке Valheim на панели есть переменная beta или branch на вкладке Startup, используйте её там; если нет, возможно, получится запустить команду SteamCMD самостоятельно, но это зависит от хостинга. На RE:NODE перед сменой ветки основного сервера обратитесь в поддержку; отдельный недорогой тестовый сервер полностью оставляет ваш настоящий мир вне досягаемости.

Запуск тестового сервера на копии мира#

Тестовый сервер должен быть отдельным островом: своя установка, свой каталог сохранений, свой порт и, в идеале, своё имя мира.

bash
$ cd /home/valheim/ptb$ ./valheim_server.x86_64 -nographics -batchmode \    -name "Ravenhold PTB" -port 2466 -world "MidgardTest" \    -password 'spare-anvil-03' -public 0 \    -savedir /home/valheim/ptb-saves -logFile /home/valheim/logs/ptb.log

От чего защищает каждое решение:

АргументЗачем
Отдельная папка установкиБинарный файл релизного сервера остаётся на релизной сборке
-savedir в новую папкуТестовый сервер не видит и не перезапишет настоящий мир
Другое имя в -worldДаже при ошибке в пути оно не совпадёт с настоящими файлами
-port 2466Работает рядом с релизным сервером, который остаётся на 2456
-public 0Не попадает в список сообщества; тестеры заходят по адресу
Другой парольНе даёт зайти не на тот сервер по привычке

Чтобы использовать копию настоящего мира, переименуйте скопированную пару под имя тестового мира - Midgard.db станет MidgardTest.db, Midgard.fwl станет MidgardTest.fwl - и положите её в worlds_local внутри тестового каталога сохранений. Затем запустите тестовый сервер и найдите в логе Load world: MidgardTest. Если там сказано, что генерируется новый мир, имена файлов не совпали. Переименование пары работает, потому что имя мира в -world сопоставляется с именем файла; если в вашей версии внутри .fwl хранится ещё и имя и сервер жалуется, создайте тестовый мир с нуля с тем же seed.

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

Скопируйте и список администраторов, если хотите иметь права администратора на тестовом сервере: adminlist.txt, bannedlist.txt и permittedlist.txt лежат в каталоге сохранений, поэтому новый -savedir начинает работу без них.

Как подключить тестеров к тестовой сборке#

Каждый тестер переключает собственную игру. В Steam: щёлкните Valheim правой кнопкой, Properties, Betas, введите код, выберите public-test. Steam скачает тестовую сборку, и с этого момента игра запускается на ней, пока они не переключатся обратно.

Что тестерам нужно знать до этого:

  • Они не смогут зайти на обычный сервер, пока на тестовой сборке. Выберите вечер для теста, а не переключайтесь туда-сюда.
  • Они должны оставаться актуальными. Когда тестовая ветка обновляется, Steam обновляет клиент, и сервер тоже нужно обновить. Строка лога о несовпадении версий печатает оба номера и показывает, какая сторона отстала.
  • Игроки на консолях и Game Pass обычно не могут войти. Публичные тесты исторически проходили в Steam. Ожидайте, что тестовый сервер будет только для Steam, даже если основной работает с кроссплеем, и проверьте объявление о вашем тесте.
  • Персонажей нужно сначала сохранить в backup, либо использовать нового.

Если тестер получает "Incompatible version", одна из сторон на неправильной ветке или отстала на патч. Эта ошибка в общем виде разобрана в статье обновление сервера и несовпадение версий.

Моды на тестовой ветке#

Сам BepInEx обычно переживает патч игры; многие моды поверх него - нет. Публичный тест - лучшее раннее предупреждение, которое вы получите.

  1. Установите моды на тестовый сервер и тестовые клиенты точно так же, как в релизной конфигурации. Если ваша группа использует профиль r2modman, экспортируйте его и импортируйте копию для теста, чтобы релизный профиль остался нетронутым, - см. Thunderstore и r2modman для групп.
  2. Запустите сервер и прочитайте вывод BepInEx. Плагины, которые не загрузились, обычно сообщают об этом при запуске. Запишите, какие именно.
  3. Поиграйте в то, к чему прикасаются моды. Мод может загрузиться чисто и всё равно сломаться при использовании его функции - крафта, особого существа, правила порталов.
  4. Посмотрите страницы модов и трекеры задач. Авторы часто публикуют статус по тестовой ветке, а некоторые выпускают обновления под тестовую сборку до релиза.

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

Возврат на стабильную версию#

Если вы последовали совету с отдельной установкой, откатывать почти нечего. Релизный сервер не менялся; остановите тестовый сервер, а тестеры отказываются от беты в Steam - Properties, Betas, выберите "None" или ветку по умолчанию, - и Steam скачает релизную сборку. После этого они снова смогут заходить на релизный сервер.

Если вы переключали установку на месте, верните её на ветку по умолчанию через SteamCMD:

bash
$ steamcmd +force_install_dir /home/valheim/server \    +login anonymous \    +app_update 896660 -beta public validate \    +quit

-beta public называет ветку по умолчанию. Поведение SteamCMD при обратном переключении за годы менялось; если после этого строка версии сервера всё ещё показывает тестовую сборку, удалите папку установки (не каталог сохранений) и установите заново без флага -beta. Установка занимает около 2 GB и несколько минут; мира в ней нет.

С миром сложнее. Откат бинарного файла не откатывает сохранение:

  • Если настоящий мир никогда не открывали на тестовой сборке, делать ничего не нужно.
  • Если открывали, релизная сборка может отказаться его загружать или загрузить с проблемами. Восстановите backup, сделанный перед тестом. Прогресс, достигнутый во время теста, будет потерян; такова цена.
  • Если нужен прогресс тестового мира, придётся дождаться, пока обновление дойдёт до релиза, и затем загрузить этот мир на обновлённом релизном сервере. До тех пор храните файлы тестового мира в безопасности.

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

Когда тест заканчивается#

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

На RE:NODE второй небольшой сервер Valheim - вполне подходящий испытательный стенд: backup есть на каждом тарифе и восстанавливаются кнопкой, заблокированный backup защищён от ротации на время теста, а консоль тестового сервера показывает строку версии, вывод BepInEx и код входа без доступа к оболочке. Удалите его, когда закончите, помня, что удаление сервера удаляет и его backup.

FAQ#

Какой пароль у публичного теста Valheim?

Исторически yesimadebackups, для ветки public-test, и для игры, и для выделенного сервера. Iron Gate публикует его с каждым объявлением о тесте; проверьте актуальный перед использованием, так как менять его вправе только она.

Могут ли игроки на релизной версии зайти на публичный тестовый сервер?

Нет. Клиент и сервер должны быть на одной сборке, а тестовая сборка - другая версия. Чтобы зайти, игрокам нужно переключить игру на ветку public-test в Steam, а чтобы зайти на обычные серверы - переключить обратно.

Сломает ли тестирование мой мир?

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

Могут ли игроки Xbox тестировать вместе с нами?

Публичные тесты исторически были только для Steam, поэтому тестовый сервер обычно только для PC, даже если основной работает с кроссплеем. Проверьте объявление о конкретном тесте.

Как вернуться на стабильную версию после тестирования?

Тестеры выбирают ветку по умолчанию на вкладке Betas в Steam. На сервере либо переключитесь обратно на нетронутую релизную установку, либо выполните app_update 896660 -beta public validate. Затем восстановите backup мира до теста, если настоящий мир открывали на тестовой сборке.