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. Новый мир на том же сиде даёт тот же нетронутый ландшафт, на котором ничего не построено.

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

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