RE:NODE

Сброс мира сервера Valheim с сохранением персонажей

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


Чтобы начать новый мир Valheim, ничего удалять не нужно, а потерять персонажа при этом нельзя. Персонажи живут на компьютере каждого игрока; сервер хранит только мир. Смените имя в -world на ещё не существующее, перезапустите, и сервер сгенерирует свежий мир рядом со старым. Все заходят с теми же персонажами, тем же инвентарём и теми же навыками и оказываются у жертвенных камней карты, которую никто не исследовал. Настоящая работа только одна: решить, что делать со старым миром - архивируйте его как следует, потому что «мы туда никогда не вернёмся» длится примерно месяц, - и договориться в группе, приветствуются ли в новом мире персонажи-ветераны.

Где на самом деле хранятся миры и персонажи#

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

ЧтоГде хранитсяФайлы
МирСервер, в worlds_localName.db, Name.fwl
Предыдущее сохранение и автоматические backupСервер, рядом с миромName.db.old, Name_backup_auto-...
Списки админов, банов и допускаСервер, в каталоге сохраненийadminlist.txt, bannedlist.txt, permittedlist.txt
ПерсонажиПК каждого игрокаcharacters_local/<name>.fch

В Windows персонажи игрока лежат здесь:

code
%USERPROFILE%\AppData\LocalLow\IronGate\Valheim\characters_local\

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

Что персонаж переносит в новый мир#

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

ПереноситсяНе переносится
Инвентарь и надетое снаряжениеИсследованная карта (хранится по мирам)
Навыки и их уровниТочка возрождения у кровати (хранится по мирам)
Известные рецепты и открытые материалыУбийства боссов как прогресс мира (глобальные ключи)
Внешность, борода и волосыПостройки, сундуки и всё, что в них
Выбранная сила ForsakenПорталы и их метки
Еда и эффекты состояния на момент выходаАссортимент торговцев, открытый прогрессом мира

Записи для конкретного мира привязаны к внутреннему ID мира, а не к его имени. Удалите мир Midgard и сгенерируйте новый с тем же именем - карта всё равно будет пустой, а возрождение произойдёт у камней, потому что у нового мира новый ID. Вернётесь позже в старый мир - карта и кровать снова на месте, потому что персонаж сохранил их под старым ID.

Строка о глобальных ключах - та, которая меняет игру. Убийства боссов на сервере - это состояние мира: одно убийство открывает возможности для всех, как объясняет материал прогресс боссов на общих серверах. Новый мир начинается без ключей, поэтому рейды, зависящие от прогресса мира, и поздний ассортимент Haldor сбрасываются вместе с ним, даже если сами игроки убили всех боссов. Если ваш сервер работает с -setkey playerevents, рейды выбираются по прогрессу каждого игрока, а этот прогресс принадлежит персонажу, так что ветеран в свежем мире может получать рейды, намного превосходящие то, чего достиг сам мир.

Новые персонажи или перенос: решите заранее#

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

Обычные варианты:

  • Все создают новых персонажей. Самый чистый перезапуск. Серверу это ничего не стоит; каждый игрок просто создаёт персонажа в меню. Старые персонажи остаются на их ПК для старого мира.
  • Переносим всё. Подходит, когда причина сброса техническая - повреждённый мир, сид, который никому не понравился, смена набора модов, - а не желание пройти заново. Группа приходит сильной и строится быстро.
  • Переносим навыки, снаряжение оставляем. Перед переходом игроки выкладывают инвентарь в сундук в старом мире. Навыки и рецепты переходят; новый мир всё равно проходится с дерева и кремня. Это целиком держится на доверии.
  • Новый мир, новые правила. Сброс - хороший момент поменять модификаторы мира. Если ветеранам нужен вызов, -preset hard или -modifier combat veryhard на новом мире сделает больше, чем просьба начинать нагишом. Модификаторы мира и пресеты перечисляют их.

Как правильно архивировать старый мир#

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

Мир на диске - это больше, чем два файла. Для мира с именем Midgard соберите из worlds_local всё это:

code
Midgard.dbMidgard.fwlMidgard.db.oldMidgard.fwl.oldMidgard_backup_auto-20261011093000.dbMidgard_backup_auto-20261011093000.fwl

.db и .fwl без суффикса - это мир. Пара .old - предыдущее сохранение, на которое вы переключитесь, если последнее окажется повреждённым. Пары backup_auto - ротация, которую сервер ведёт под -backups. Точный формат отметок времени в этих именах менялся между версиями; сопоставляйте их по имени мира в начале.

  1. Корректно остановите сервер и дождитесь World saved и завершения процесса. Мир, скопированный во время работы, может оказаться на середине записи.
  2. Сделайте backup в панели, если у вашего хостинга он есть, и заблокируйте его, если это возможно, чтобы ротация его не удалила.
  3. Скачайте файлы из списка выше по SFTP или через файловый менеджер и храните их где-нибудь, кроме сервера: на своём ПК, общем диске, в объектном хранилище. Backup и повреждение мира объясняет, почему backup на том же диске, что и мир, не является backup.
  4. Запишите сид. Выберите мир в списке миров игры на любом ПК, где есть эти файлы, и сид будет показан. Добавьте его в имя файла архива или в заметку рядом.
  5. Оставьте файлы на месте или перенесите их в подпапку вроде worlds_local/archive/. Сервер загружает только мир, названный в -world, так что старые файлы там никому не мешают.

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

Переключение на новый мир#

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

bash
# Before./valheim_server.x86_64 -nographics -batchmode -name "Longship Crew" \    -port 2456 -world "Midgard" -password "herring-barrel-42" -crossplay# After: only the world name changes./valheim_server.x86_64 -nographics -batchmode -name "Longship Crew" \    -port 2456 -world "Midgard2" -password "herring-barrel-42" -crossplay

У хостинга с панелью имя мира - поле на вкладке Startup; измените его там. Затем:

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

Если вам нужен определённый сид для нового мира, а не случайный, не позволяйте серверу генерировать его. Создайте мир локально с этим сидом и загрузите пару файлов под новым именем до шага 1. Руководство по сидам Valheim рассказывает, как найти сид и перенести его на сервер.

Повторное использование прежнего имени мира

Некоторые группы хотят, чтобы новый мир сохранил старое имя, например потому, что на него ссылаются скрипты или backup. Это работает, но с одним дополнительным шагом: старые файлы должны покинуть worlds_local до запуска сервера, иначе он их загрузит. Переместите или переименуйте каждый файл из списка выше, включая пары .old и backup_auto, и только потом запускайте. Если оставить старые автоматические backup рядом с новым миром того же имени, кто-нибудь потом в панике восстановит не тот.

Новое имя безопаснее, поэтому оно и является советом по умолчанию.

Почему не просто направить -savedir в другое место

-savedir переносит весь каталог сохранений, а три файла-списка лежат в нём. Запуск с пустым каталогом сохранений даёт свежий мир, а также пустые adminlist.txt, bannedlist.txt и permittedlist.txt. Ваши админы теряют права, забаненные игроки могут вернуться, а сервер со списком допуска становится открытым для любого, у кого есть пароль. Если вы всё же меняете -savedir, сначала скопируйте три файла-списка. Их формат описан в руководстве по adminlist, bannedlist и permittedlist.

Возврат или работа обоих миров#

Один сервер ведёт один мир за раз. Чтобы вернуться в старый мир, остановите сервер, верните имя мира Midgard и запустите. Персонажи найдут свою старую карту и кровать на месте, потому что они всё это время были привязаны к ID старого мира. Но всё, что они принесли в новый мир, вернётся с ними, а всё, что они оставили в новом мире, останется там: инвентарь принадлежит персонажу, а не миру.

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

Когда вместе со сбросом меняется набор модов#

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

Сделайте список модов сервера окончательным до подключения первого игрока к новому миру и дайте группе точный профиль для установки - профили r2modman для группы - наименее болезненный способ. Игроков с несовпадающими наборами кикают, как описано в материале кики из-за несовпадения версий модов.

Принудительный чистый старт с серверными персонажами#

Если перенос нужно предотвратить, а не отговаривать от него, персонажами должен владеть сервер. Ванильный Valheim так не умеет, но моды умеют. Обычный выбор - ServerCharacters (автор Smoothbrain, на Thunderstore): он хранит данные персонажей на сервере, так что игроки используют персонажа, существующего только там, и не могут принести его откуда-то ещё. Его нужно установить на сервер и на каждый клиент, что исключает игроков на Xbox, и он меняет работу backup, потому что персонажи теперь входят в файлы сервера. Текущую версию и настройку смотрите на странице самого мода - он обновляется вместе с игрой, и детали меняются.

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

Устранение неполадок#

Сервер загрузил старый мир. Новое имя совпадает с существующим файлом, возможно, от более раннего теста. Посмотрите в логе, какое имя он загрузил, и загляните в worlds_local.

Игрок говорит, что его персонаж пропал. Его персонаж на его ПК. Попросите проверить экран выбора персонажа; если игрок недавно менял ПК или переустанавливал систему, персонаж может быть в Steam Cloud, а не в characters_local, или вообще не сохранён. Сервер тут не поможет, потому что у него персонажа никогда не было.

Админы потеряли права после сброса. Каталог сохранений изменился, поэтому adminlist.txt - это новый пустой файл. Скопируйте старые файлы-списки.

У нового мира сложность старого. Аргументы -preset, -modifier и -setkey остались в строке запуска, поэтому применяются к любому загруженному миру. Измените или уберите их вместе с именем мира, если новый мир должен играться иначе.

FAQ#

Удалит ли сброс мира наших персонажей?

Нет. Персонажи хранятся на компьютере каждого игрока, и сервер их не держит. Новый мир ничего не меняет в них, кроме того, что карта и точка возрождения у кровати там начинаются пустыми.

Можно ли оставить то же имя сервера, пароль и IP?

Да. Меняется только -world. Игроки подключаются как раньше, а в списке серверов остаётся та же запись.

Переносятся ли силы боссов?

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

Можно ли стереть только постройки и сохранить ландшафт?

Не штатными средствами. Постройки и изменения ландшафта лежат в одном .db. Новый мир на том же сиде даёт тот же нетронутый ландшафт, на котором ничего не построено.

Как не дать людям принести в новый мир поздние вещи?

Попросите их сначала сдать всё на хранение или потребуйте новых персонажей. Принудительное исполнение требует мода серверных персонажей, потому что ванильный сервер принимает любой файл персонажа.

Это было полезно?