RE:NODE

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

Как загрузить сохранение Valheim на выделенный сервер

Как перенести мир Valheim из одиночной игры или кооператива на выделенный сервер: где лежат файлы .db и .fwl, как их загрузить и что делать, если мир сбрасывается.

0 прочтений

Чтобы перенести мир, в который вы играли локально, на выделенный сервер Valheim, нужно скопировать два файла - YourWorld.db и YourWorld.fwl - со своего компьютера в папку worlds_local на сервере, пока сервер остановлен, а затем указать в настройках сервера имя мира YourWorld ровно так, как написано имя файла. Запустите сервер, и он загрузит ваш мир вместо того, чтобы создавать новый. Вот и вся работа. Всё, что ниже, - о том, что идёт не так, когда одна из этих четырёх деталей немного не совпадает. Именно так большинство людей и оказывается на свежей карте, гадая, куда делись три месяца строительства.

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

Из чего на самом деле состоит сохранение Valheim#

Мир Valheim - это два файла с одинаковым именем и разными расширениями:

ФайлРазмерЧто в нём
Name.fwlНесколько сотен байтИмя мира, сид и немного метаданных
Name.db5-200 МБВсё остальное: постройки, изменения рельефа, предметы на земле, исследованная карта, прогресс по боссам
Name.fwl.old, Name.db.oldКак вышеПредыдущее сохранение, хранится автоматически
Name_backup_auto-...Как у .dbАвтоматические резервные копии по таймеру, если они включены

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

Персонажи не входят в состав мира. Ваш персонаж, его навыки и инвентарь лежат в отдельном файле .fch на машине каждого игрока, в папке characters_local. Загружать персонажей не нужно, да и незачем: каждый игрок заходит на выделенный сервер с тем персонажем, который у него уже есть. Именно поэтому при переезде никто не теряет снаряжение.

Найдите мир на своём компьютере#

В Windows миры одиночной игры и миры, которые вы хостили сами, лежат здесь:

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

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

code
~/.config/unity3d/IronGate/Valheim/worlds_local/

Там должны быть по одному .db и одному .fwl на каждый мир, плюс копии .old и, возможно, несколько резервных копий. Выберите пару с именем мира, в который вы играете, и проверьте время изменения у .db - оно должно совпадать с тем, когда вы играли в последний раз.

Папка пуста

Значит, ваш мир хранится в Steam Cloud, а не локально. Облачные миры Valheim держит там, где копаться не предполагается, и штатный способ достать их - через саму игру:

  1. Запустите Valheim и на экране выбора мира нажмите Manage saves.
  2. Выберите мир и воспользуйтесь пунктом, который переносит его из облака в локальные.
  3. Выйдите из игры и снова загляните в worlds_local.

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

Мир хостили прямо из игры

Если кто-то из вашей группы запускал мир через внутриигровую опцию «Start server», файлы лежат на компьютере этого человека, в его worlds_local, а не в вашей. Ему нужно прислать вам пару файлов или загрузить их самому. Когда вы заходите в мир, который кто-то хостит из игры, копия этого мира на вашей машине не появляется.

Версии для Xbox и Game Pass

Версии из Microsoft Store и Game Pass на PC хранят сохранения в другом, контейнерном формате, а не обычными файлами .db и .fwl в worlds_local. Для описанной здесь загрузки нужна именно обычная пара. Если ваша группа играет через Game Pass, перед началом поищите актуальный способ для этой версии: он менялся от релиза к релизу, и всё, что было бы написано здесь, быстро устарело бы.

Перед загрузкой: три проверки#

Они занимают две минуты и предотвращают три самые частые ошибки.

  • Сначала выйдите в главное меню. Valheim записывает мир по таймеру и при выходе. Мир, скопированный, пока вы ещё в нём, - это снимок последнего сохранения, а не того, что вы видите на экране. Выйдите, дождитесь меню и только потом копируйте.
  • Запомните точное имя файла. Midgard, midgard и Midgard с пробелом на конце для сервера на Linux - три разных мира. Копируйте имя из файла, а не набирайте его по памяти.
  • Сверьте версию игры. На сервере должна стоять та же версия Valheim, что и у клиентов, а мир, сохранённый более новой версией, старый сервер загрузить не сможет. Если вы играли на публичной тестовой ветке, ваш мир - мир тестовой ветки; используйте сервер на тестовой ветке или дождитесь, пока обновление дойдёт до основной.

Загрузите мир на сервер#

Эти шаги работают у любого хостера. Там, где важна панель, отмечены подробности для RE:NODE.

  1. Остановите сервер. Не перезапустите, а именно остановите, и дождитесь, пока консоль подтвердит, что он выключен. Работающий сервер держит мир в памяти и при следующем сохранении запишет его поверх всего, что вы загрузили.
  2. Сделайте резервную копию, даже если мир пустой. Это единственный путь назад, если вы загрузите файлы не в ту папку или перезапишете мир, который хотели сохранить.
  3. Откройте файлы сервера - в файловом менеджере панели или по SFTP через клиент вроде FileZilla или WinSCP.
  4. Найдите `worlds_local`. На сервере с Linux и стандартным расположением сохранений она находится внутри .config/unity3d/IronGate/Valheim/ в корне сервера. Если на вкладке Startup задан -savedir, то это worlds_local внутри той папки.
  5. Загрузите `.db` и `.fwl` в worlds_local. Если вы загружали zip, распакуйте его там же и проверьте, что оба файла лежат прямо в worlds_local, а не во вложенной папке с именем архива.
  6. Укажите имя мира на вкладке Startup - имя файла без расширения, с учётом заглавных букв.
  7. Запустите сервер и следите за консолью, пока он загружается.

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

На сервере не находится worlds_local

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

Надёжный способ найти любое сохранение Valheim у любого хостера - поискать файл с расширением .fwl. Где бы он ни лежал, именно эту папку и читает сервер.

Укажите имя мира и запустите сервер#

Имя мира - единственная настройка, от которой зависит, будет ли использована ваша загрузка. Сервер берёт аргумент -world, добавляет .fwl и .db и ищет эти файлы. Если находит - загружает их; если нет - молча создаёт под этим именем новый мир со случайным сидом.

С какими аргументами на самом деле запускается сервер
./valheim_server.x86_64 -nographics -batchmode \    -name "Longship Crew" -port 2456 -world "Midgard" \    -password "a-long-unrelated-phrase" -crossplay \    -saveinterval 600 -backups 4

В панели эту строку набирать не нужно: вы заполняете поле имени мира на вкладке Startup, а команду панель собирает сама. С -world "Midgard" сервер ищет Midgard.fwl и Midgard.db. Пробелы в именах миров работают, но это ещё одна вещь, в которой нужно не ошибиться, - если вы называете новый мир, одно слово избавит от лишних хлопот.

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

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

Когда сервер игнорирует ваш мир#

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

Вместо вашего мира появился новый. Имя на вкладке Startup не совпадает с файлами. Загляните в worlds_local: там будет ваша пара и вторая пара с тем именем, которое использовал сервер. Исправьте имя, удалите новую пару и перезапустите сервер.

Мир загружается, но рельеф не тот. .fwl и .db взяты из разных миров или из разных моментов времени - обычно это .db от сегодняшнего дня и .fwl из резервной копии. Загрузите оба файла заново из одной папки и в один и тот же момент.

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

После загрузки сервер не запускается. Мир сохранён более новой версией игры, файл обрезан из-за прерванной передачи, или .db был загружен FTP-клиентом в режиме ASCII как текст. Проверьте, что размер файла на сервере совпадает с размером на вашем компьютере до байта. SFTP по умолчанию передаёт данные в двоичном виде; если в вашем клиенте есть настройка режима передачи, она должна стоять на binary.

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

Игроки видят «incompatible version». Сервер обновился, а клиенты нет, или наоборот. Все клиенты и сервер должны быть на одной сборке. В большинстве панелей перезапуск сервера подтягивает последнюю версию; клиентам нужно дождаться, пока Steam закончит обновление.

Как перенести мир обратно или к другому хостеру#

Те же два файла переносят мир в любую сторону.

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

Чтобы переехать от другого хостера, процесс тот же, только на старой стороне шаги идут в обратном порядке: остановите старый сервер, скачайте его пару из worlds_local, загрузите на новый и укажите имя. Хостеры на Linux держат мир по тому же пути .config/unity3d/IronGate/Valheim/worlds_local/, если не задают -savedir; хостеры на Windows обычно показывают его в AppData или в каком-нибудь своём -savedir. Сами файлы в обоих случаях одинаковые.

Если в мире стоят моды, переносите и моды. Мир, построенный с модом, который добавляет элементы построек, вроде Valheim Plus или какого-нибудь строительного мода, содержит объекты, о которых ванильная игра не знает. Без того же мода на новом сервере эти элементы исчезнут или не загрузятся. В статье моды Valheim на BepInEx на сервере разобрано, какие моды должны стоять на сервере, а какие только на клиенте.

Храните копию не только на сервере#

Как только ваш мир переехал на сервер, этот сервер становится единственной актуальной копией. Версия на вашем компьютере перестаёт меняться в момент загрузки. Отнеситесь к этому серьёзно.

  • Уменьшите интервал сохранения. По умолчанию -saveinterval равен 1800 секундам, то есть при падении можно потерять до тридцати минут строительства. 600 стоит короткого подвисания раз в десять минут и ограничивает потерю.
  • Делайте резервную копию перед каждым обновлением игры и перед установкой любого мода. Обновления иногда меняют формат сохранения, и мир, сохранённый новой версией, старая открыть не сможет.
  • Храните резервные копии не только в `worlds_local`. Собственные автоматические копии Valheim лежат рядом с миром, на том же диске. Они защищают от повреждённого сохранения, но не от удалённого сервера и не от неудачной загрузки.

В RE:NODE у каждого тарифа Valheim есть слоты для резервных копий, которые хранятся не на той машине, которую защищают; копию можно сделать вручную, запускать по расписанию на вкладке Schedules, скачать и восстановить одной кнопкой. В статье резервные копии, которые действительно восстанавливаются объясняется, почему проверять стоит именно восстановление. Обо всём остальном, что касается работы мира после запуска, - администраторы, порты, коды кроссплея и модификаторы мира, - справочником служит руководство по выделенному серверу Valheim, а в статье модификаторы мира и пресеты Valheim разобрано, как поменять сложность мира, который вы уже перенесли.

FAQ#

Сохранятся ли мой персонаж и инвентарь?

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

Можно ли загрузить мир, в который играли в кооперативе прямо из игры?

Да. Мир, который хостили через внутриигровую опцию сервера, - это обычный мир в папке worlds_local у хоста. Человек, который его хостил, присылает вам пару .db и .fwl, а вы загружаете её ровно так, как описано здесь.

Нужно ли загружать файлы .old и резервные копии?

Нет. Нужны только Name.db и Name.fwl. Пара .old и резервные копии с отметкой времени полезны только как копия для восстановления, а сервер создаёт свои, как только сохраняет мир.

Можно ли вместо загрузки файлов указать сид мира?

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

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

Хранить в worlds_local можно оба, но сервер запускает только один за раз - тот, на который указывает имя мира. Чтобы переключиться, нужно остановить сервер, поменять имя на вкладке Startup и запустить снова. Каждый мир сохраняет свой прогресс.

Моя группа играет на Xbox. Смогут ли они зайти в мир, который я загрузил с PC?

Да, если на сервере включён кроссплей. Игроки Xbox заходят по коду подключения, который сервер выводит при старте с включённым кроссплеем, а игроки на PC могут использовать код или адрес. Файлу мира всё равно, на какой платформе играют игроки.


Комментарии

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

0/2000