RE:NODE

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

Palworld: перенос кооп-мира на сервер

Перенос мира Palworld из кооператива на выделенный сервер: где лежит сохранение, DedicatedServerName, WorldOption.sav и host save fix для потерянного персонажа хоста.

0 прочтений

Чтобы перенести кооперативный мир Palworld на выделенный сервер, скопируйте папку мира из %LOCALAPPDATA%\Pal\Saved\SaveGames\<SteamID>\<WorldID>\ на компьютере хоста в Pal/Saved/SaveGames/0/ на сервере, удалите из неё WorldOption.sav, пропишите DedicatedServerName=<WorldID> в GameUserSettings.ini сервера и запустите сервер. Базы и палы всех игроков переедут целыми, и каждый гость сохранит своего персонажа. Не сохранит только один человек - хост: в кооперативе его персонаж записан под фиксированным ID-заглушкой, а на выделенном сервере игрока узнают по его настоящему аккаунту, поэтому сервер встречает хоста созданием персонажа. Чтобы вернуть персонажа хоста, нужен ещё один шаг с инструментом от сообщества. В этой статье разобрано всё это, включая то, что делать, если что-то пошло не так.

Почему хост теряет персонажа#

Palworld хранит каждого игрока отдельным файлом в папке Players мира, с именем из 32-символьного ID. На выделенном сервере этот ID выводится из аккаунта игрока на платформе. В кооперативе гости получают такой же ID, поэтому их файлы переезжают нетронутыми. А хост - нет: в кооперативном мире хост всегда записан как 00000000000000000000000000000001.sav, кем бы он ни был.

code
<WorldID>/Players/    00000000000000000000000000000001.sav   the co-op host    4A7F2C1E000000000000000000000000.sav   a guest    9C21B08D000000000000000000000000.sav   another guest

Когда хост заходит на выделенный сервер, сервер ищет файл с его настоящим ID, не находит и начинает нового персонажа. Старый по-прежнему лежит в папке, ни к кому не привязанный. Гильдия, базы и палы тоже ссылаются на старый ID, поэтому простого переименования файла недостаточно: сам мир хранит этот ID во многих местах внутри Level.sav.

Решение - переписать эти ссылки со старого ID на новый. Именно это и делают инструменты host save fix.

Перед началом#

Сначала соберите четыре вещи; когда они готовы, перенос проходит быстро.

Что нужноОткуда берётся
Папка кооперативного мираКомпьютер хоста, см. ниже
Работающий выделенный сервер на той же версии игрыВаш хостер или SteamCMD, приложение 2394010
Доступ к файлам сервераФайловый менеджер или SFTP
Python 3 и инструмент host save fix (только для персонажа хоста)Устанавливаются на любой компьютер

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

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

Где найти кооперативное сохранение#

У версии из Steam на Windows кооперативные миры лежат здесь:

code
%LOCALAPPDATA%\Pal\Saved\SaveGames\<SteamID64>\<WorldID>\

Вставьте первую часть пути в адресную строку Проводника. Внутри папки, названной по SteamID64 хоста, лежит по одной папке на каждый мир, у каждой имя - 32-символьный шестнадцатеричный ID. Если их несколько, посмотрите дату LevelMeta.sav в каждой или проверьте, какая изменялась последней; мир, в который вы играли вчера вечером, - тот, у которого сегодняшние отметки времени.

Папка мира выглядит так:

code
<WorldID>/    Level.sav         the world: bases, pals, structures, items    LevelMeta.sav     name and metadata for the world list    WorldOption.sav   the settings the world was created with    Players/          one file per character    backup/           rolling backups, if enabled

Прежде чем делать что-то ещё, скопируйте всю папку в надёжное место на компьютере. Эта копия - ваш путь назад, если все следующие шаги провалятся.

Загрузка мира#

Пока сервер остановлен:

  1. Загрузите всю папку <WorldID> в Pal/Saved/SaveGames/0/ на сервере. Папка 0 - то место, где выделенный сервер хранит свои миры. Загружайте саму папку, а не её содержимое россыпью.
  2. Удалите WorldOption.sav из загруженной папки. Пока он существует, в нём хранятся настройки кооперативного мира, и они могут переопределять PalWorldSettings.ini вашего сервера. В руководстве по настройкам сервера Palworld объясняется, почему именно из-за этого шага отредактированные настройки кажутся неработающими.
  3. Папку backup из загрузки можно удалить, чтобы сэкономить место. Сервер делает свои копии.
  4. Укажите серверу мир. Отредактируйте Pal/Saved/Config/LinuxServer/GameUserSettings.ini (WindowsServer на сервере с Windows):
Pal/Saved/Config/LinuxServer/GameUserSettings.ini
[/Script/Pal.PalGameLocalSettings]DedicatedServerName=4F6A2D1B8C9E4E1F9A0B3C5D7E8F1A2B

Значение - это имя папки, в точности. Если файла ещё нет, запустите сервер один раз без мира, чтобы он создал папки, остановите его и потом редактируйте. Если строка уже есть с другим ID - миром, который сервер сгенерировал при первом запуске, - замените этот ID на свой.

  1. Запустите сервер и следите за консолью. Удачная загрузка проходит тихо; верный признак неудачи - совершенно новая папка мира, появившаяся в SaveGames/0/ рядом с вашей: это значит, что DedicatedServerName не совпал и сервер создал свежий мир.

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

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

Как вернуть персонажа хоста#

Распространённый инструмент - созданный сообществом «Palworld Host Save Fix», который с помощью библиотеки «palworld-save-tools» декодирует Level.sav, заменяет старый ID хоста на новый везде, где он встречается, и записывает сохранение обратно. Есть версии для командной строки и с графическим интерфейсом, а когда формат сохранения меняется, появляются форки. Используйте тот, где заявлена поддержка вашей версии игры.

Порядок действий, который работает:

  1. Когда мир загружен и запущен, хост заходит на сервер и создаёт нового персонажа. Имя любое - это заглушка. Затем хост выходит.
  2. Остановите сервер. При этом записывается файл нового игрока.
  3. Загляните в Pal/Saved/SaveGames/0/<WorldID>/Players/. Там теперь, помимо загруженных вами, есть новый файл - самый свежий по дате. Его имя без .sav - это новый ID хоста. Старый ID - 00000000000000000000000000000001.
  4. Скачайте всю папку мира к себе на компьютер.
  5. Запустите инструмент исправления на скачанной папке с новым и старым ID. Вариант для командной строки выглядит так; точные аргументы зависят от версии, так что прочитайте README инструмента:
bash
$ python fix_host_save.py "C:\palfix\4F6A2D1B8C9E4E1F9A0B3C5D7E8F1A2B" \    9D3E0F2A000000000000000000000000 00000000000000000000000000000001 False
  1. Удалите серверную копию папки мира и загрузите на её место исправленную.
  2. Запустите сервер. Хост заходит и должен найти своего старого персонажа, предметы, гильдию и базы.

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

Странности гильдии и баз после исправления

У этих инструментов есть история мелких известных проблем, которые появляются и исчезают с версиями игры: палы на базе хоста не работают, пока их не поднять и не поставить обратно; владение некоторыми контейнерами или палами в Viewing Cage не переносится; гильдии нужно заново добавить хоста. Некоторые версии инструмента принимают опцию «guild fix» именно для этого. Прежде чем запускать инструмент, прочитайте список известных проблем для своей версии, а после - быстро проверьте: откройте базу, проверьте palbox, проверьте меню гильдии.

Если не хочется связываться с инструментом#

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

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

Как вернуть мир с выделенного сервера в кооператив#

У обратного пути зеркальная проблема: в кооперативе хост должен быть 00000000000000000000000000000001, поэтому тот, кто будет хостить локально, теряет своего персонажа с выделенного сервера, если не переименовать его файл и не переписать сохранение. Те же инструменты умеют делать замену в обратную сторону. Остальное - то же самое в обратном порядке: скачайте папку мира, положите её в папку хоста SaveGames\<SteamID64>\, и мир появится в списке.

Настройки после переезда#

Когда WorldOption.sav удалён, сервер читает Pal/Saved/Config/LinuxServer/PalWorldSettings.ini. Если этот файл пустой, сервер работает на значениях по умолчанию, а они могут сильно отличаться от того, с чем группа играла в кооперативе, - другой штраф за смерть, другие рейты, другой лимит баз. Перед первым вечером на сервере:

  • Скопируйте DefaultPalWorldSettings.ini из корня установки в PalWorldSettings.ini и отредактируйте его.
  • Выставьте рейты и штраф за смерть такими же, как в кооперативном мире, если группа не хочет перемен.
  • Проверьте BaseCampMaxNumInGuild и BaseCampWorkerMaxNum. Если в кооперативном мире было больше баз, чем разрешает сервер, существующие останутся, но новые никто построить не сможет. О том, как эти лимиты связаны с памятью, - в статье память сервера Palworld.
  • Помните, что OptionSettings=(...) должна быть в одну строку.

Серверу также нужен пароль администратора - раньше, чем он понадобится. Об этом - в статье команды администратора Palworld и RCON.

Как это сделать в RE:NODE#

В RE:NODE сервер Palworld начинается с 8 GB памяти - это минимум, при котором перенесённому кооперативному миру с обжитыми базами остаётся комфортно. Загрузите папку мира через файловый менеджер - загрузка папок поддерживается - или по SFTP для большого сохранения; отредактируйте GameUserSettings.ini и PalWorldSettings.ini во встроенном в браузер редакторе и следите за загрузкой в живой консоли. Сделайте резервную копию на вкладке Backups перед загрузкой и ещё одну после исправления хоста, чтобы у каждого этапа была точка восстановления. Слоты резервных копий есть в каждом тарифе, а восстановление - одна кнопка.

Если перенос не удался#

Сервер создал новый мир вместо того, чтобы загрузить мой. DedicatedServerName не совпадает с именем папки, или папка вложена на уровень глубже (SaveGames/0/<WorldID>/<WorldID>/). Исправьте путь или имя и перезапустите. Ваш мир по-прежнему на месте.

Мои настройки сервера игнорируются. WorldOption.sav всё ещё лежит в папке мира. Удалите его при остановленном сервере.

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

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

Персонаж у хоста есть, но его палы не работают. Известная особенность инструмента; поднимите палов в palbox и поставьте снова или запустите исправление заново с исходного сохранения с опцией guild fix.

Мир загружается, но по несколько минут. Большой Level.sav. Для зрелого мира это нормально, и улучшить это можно только сократив мир, а не настройками, - см. резервные копии и сброс мира Palworld.

FAQ#

Теряют ли гости персонажей при переносе мира Palworld на сервер?

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

Где лежит папка кооперативных сохранений Palworld?

У версии из Steam на Windows - в %LOCALAPPDATA%\Pal\Saved\SaveGames\, затем SteamID64 хоста, затем по одной папке на каждый мир с 32-символьным шестнадцатеричным именем.

Зачем удалять WorldOption.sav?

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

Можно ли объединить два кооперативных мира на одном сервере?

Нет. Мир - это один Level.sav. Можно запустить либо один, либо другой, а переносить персонажей между мирами обычными инструментами нельзя.

Сработает ли host save fix после обновления игры?

Только если инструмент обновили под новый формат сохранения. Перед переносом проверьте страницу инструмента и храните нетронутое исходное сохранение, пока хост какое-то время не поиграет на исправленном.


Комментарии

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

0/2000