Перенос мира Palworld: с одиночной игры на сервер и между хостингами
Как перенести мир Palworld из single-player и co-op на dedicated server и мигрировать сейв между хостингами: где лежит save, world-id, фикс привязки персонажей.
Перенос мира Palworld - одна из самых частых задач для админа: сначала люди играют вдвоём-вчетвером в co-op, упираются в лимит 4 игрока и привязку к хосту, а потом хотят перевести накопленный прогресс на полноценный dedicated server. Отдельная история - миграция между хостингами, когда меняется провайдер или тариф. В обоих случаях техника похожа (копируем файлы сейва), но подводные камни разные: single-player-мир тащит за собой известную проблему с персонажами, а dedicated-to-dedicated переезжает почти бесшовно. Разберём оба сценария по шагам, с путями к файлам, командами и фиксом привязки персонажей через community-утилиты.
Как устроен сейв Palworld
Прежде чем что-то копировать, важно понять структуру. Palworld хранит весь мир в одной папке с 32-символьным hex-идентификатором (WorldID):
SaveGames/<slot>/<WorldID>/
├── Level.sav # весь мир: карта, базы, палы, инвентари игроков
├── LevelMeta.sav # метаданные (имя мира, дата, превью)
├── WorldOption.sav # настройки мира на момент создания
└── Players/
├── <PlayerUID>.sav
└── <PlayerUID>.sav
Ключевой момент: Level.sav содержит не только мир, но и данные персонажей - уровень, характеристики, инвентарь. Файлы в папке Players/ - это лишь “паспорт” привязки конкретного PlayerUID к его записи внутри Level.sav. Именно рассинхрон между PlayerUID в single-player и на dedicated ломает миграцию персонажей.
<slot> в single-player равен вашему SteamID64, а на dedicated-сервере это всегда 0. Отсюда первое правило переноса: путь назначения на сервере - всегда SaveGames/0/.
Где лежит локальный сейв (single-player и co-op)
На Windows одиночные и co-op миры хранятся в профиле пользователя:
%LOCALAPPDATA%\Pal\Saved\SaveGames\<SteamID64>\<WorldID>\
Разворачивается это, например, в:
C:\Users\Ivan\AppData\Local\Pal\Saved\SaveGames\76561198000000000\A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6\
Чтобы быстро попасть в папку, нажмите Win+R и вставьте:
%LOCALAPPDATA%\Pal\Saved\SaveGames
Внутри вы увидите папку с числовым именем (ваш SteamID64), а в ней - одну или несколько папок с hex-именами. Каждая hex-папка - отдельный мир. Если миров несколько, определить нужный проще всего по дате изменения Level.sav или по превью в самой игре (порядок в списке “Continue” совпадает с сортировкой по последнему запуску).
Свой SteamID64 можно подсмотреть прямо в имени родительской папки - он совпадает с числом из SaveGames\.
Pterohost - Palworld-хостинг с NVMe SSD, автобэкапами и DDoS-защитой: переносите мир без потери прогресса. Промокод 4START даёт -20% на первый заказ. Перенести мир на Palworld хостинг
Сценарий 1: перенос single-player или co-op мира на dedicated
Это самый востребованный, но и самый капризный сценарий. Мир, базы и палы переедут корректно, а вот с персонажами придётся повозиться - об этом ниже отдельная секция.
Шаг 1. Сделайте бэкап
Никогда не переносите мир без резервной копии обеих сторон. Полностью заархивируйте локальную папку мира и текущую серверную папку Saved. Подробно про схему бэкапов и ротацию - в статье бэкап Palworld-сервера. Минимум - руками:
# на сервере, перед любыми манипуляциями
tar -czf ~/pal-backup-before-migration.tar.gz \
-C /home/palworld/palserver/Pal/Saved SaveGames Config
Шаг 2. Остановите сервер и найдите его WorldID
Dedicated server при первом запуске создаёт пустой мир в Pal/Saved/SaveGames/0/<WorldID>/. Остановите сервер (иначе он перезапишет файлы автосейвом каждые 30 секунд) и посмотрите текущий WorldID:
sudo systemctl stop palworld
ls /home/palworld/palserver/Pal/Saved/SaveGames/0/
Вы увидите одну hex-папку - это “чистый” мир, который сервер создал сам. Мы его заменим на ваш локальный.
Шаг 3. Скопируйте файлы мира
Скопируйте с Windows-машины на сервер три файла из корня локального мира - Level.sav, LevelMeta.sav, WorldOption.sav - плюс папку Players. Через scp с локального компьютера:
# из папки локального мира на Windows (Git Bash / WSL / PowerShell scp)
scp -r Level.sav LevelMeta.sav WorldOption.sav Players/ \
palworld@SERVER_IP:/home/palworld/palserver/Pal/Saved/SaveGames/0/NEW_WORLD_ID/
Здесь NEW_WORLD_ID - это hex-папка, которую сервер создал в шаге 2. Проще заменить её содержимое, чем менять имя. Альтернатива - удалить пустую папку сервера, залить свою локальную папку целиком (с её исходным WorldID) и прописать этот ID вручную (см. следующий шаг).
Шаг 4. Переименование world-id и привязка в конфиге
Dedicated server грузит не первую попавшуюся папку, а ту, чьё имя указано в Pal/Saved/Config/LinuxServer/GameUserSettings.ini:
[/Script/Pal.PalGameLocalSettings]
DedicatedServerName=NEW_WORLD_ID
Значение DedicatedServerName должно точно совпадать с именем hex-папки в SaveGames/0/. Логика простая:
- Оставили папку сервера и залили файлы внутрь - ничего в конфиге менять не нужно.
- Залили свою папку с исходным (локальным) WorldID - впишите этот WorldID в
DedicatedServerNameи удалите пустую серверную папку.
Проверьте права доступа, иначе сервер не прочитает файлы:
sudo chown -R palworld:palworld /home/palworld/palserver/Pal/Saved/SaveGames/0/
Запустите сервер и зайдите в мир - карта, базы, палы и постройки будут на месте.
Проблема миграции персонажей
Вот здесь начинается главная боль. Palworld хранит персонажа игрока внутри Level.sav и привязывает его к PlayerUID, который в single-player выводится из SteamID хоста. На dedicated PlayerUID при первом заходе генерируется по-другому, из-за чего клиент не находит “свою” запись.
Что происходит на практике:
| Персонаж | Что переносится | Итог |
|---|---|---|
| Host (владелец single-player мира) | Мир, базы, палы - да; сам персонаж - нет | Заходит “новичком”, уровень и инвентарь сброшены |
| Гостевые (co-op invite) | Только их постройки и палы в общей гильдии | Персонажи теряются полностью |
Мир, гильдии, базы и пойманные палы остаются в целости - это общий прогресс. Теряется именно личный прогресс персонажа: уровень, статы, содержимое рюкзака и слоты команды палов у конкретного игрока. Палы, оставленные в базах и на пастбищах, никуда не денутся - пропадают только те, что были “на руках” у персонажа.
Почему так
В co-op гостевые персонажи технически принадлежат сессии хоста и не имеют самостоятельного PlayerUID-файла, пригодного для dedicated. При переезде движок не может сопоставить старого гостя с новым Steam-подключением, поэтому создаёт чистого персонажа. Host-персонаж существует в Level.sav, но его UID нужно вручную “пересадить” на новый серверный UID.
Ручной обходной путь без утилит
Если правкой сейва заниматься не хочется, самый надёжный путь такой:
- Перенесите только мир (Level.sav + WorldOption.sav), приняв, что все зайдут новыми персонажами.
- Через RCON выдайте игрокам стартовые ресурсы или используйте admin-команды, чтобы компенсировать сброс.
- Палы из старых баз остаются - их можно забрать из ящиков и пастбищ.
Это грубо, но не требует стороннего софта и не рискует повредить сейв.
Community save-tools для фикса привязки персонажей
Чтобы сохранить уровень и инвентарь персонажей, сообщество написало конвертеры сейвов. Они разбирают бинарный GVAS-формат Palworld (.sav - это сжатый zlib GVAS) и умеют переназначать UID.
Популярные утилиты:
- palworld-save-tools - базовый Python-конвертер .sav в JSON и обратно. Даёт возможность вручную отредактировать любые поля.
- PalWorld-Save-Editor / save-editor-форки - надстройки с командами вида “перенести персонажа host на dedicated”, “сменить владельца гильдии”, “починить осиротевшие постройки”.
Типичный сценарий фикса host-персонажа:
# 1. Распаковать серверный Level.sav в JSON
python3 convert.py Level.sav
# 2. В Level.sav.json найти запись старого персонажа по его PlayerUID
# и переназначить на новый UID, который dedicated присвоил игроку
# (UID виден в имени файла в папке Players/ после первого захода)
# 3. Собрать обратно
python3 convert.py Level.sav.json
Порядок работ на практике:
- Дайте каждому игроку один раз зайти на новый сервер - создастся его файл
Players/<NewUID>.sav. - Остановите сервер, сделайте бэкап.
- Через save-editor перепривяжите старую запись персонажа из Level.sav к этому NewUID.
- Запустите сервер - игрок войдёт со старым уровнем и инвентарём.
Важные оговорки: утилиты community-уровня, при мажорных апдейтах Palworld формат сейва меняется и конвертеры отстают на несколько дней. Всегда работайте на копии, а не на живом Level.sav. Гостевые co-op персонажи восстановить сложнее всего - иногда проще пересоздать их и добавить в гильдию заново. Детали настройки самого сервера после переноса - в гайде Palworld dedicated server, а параметры мира в настройке PalWorldSettings.ini.
Сценарий 2: перенос между хостингами и dedicated-серверами
Хорошая новость: миграция dedicated-to-dedicated почти беспроблемна, потому что формат сейва на обоих концах одинаковый - никакой конвертации UID не требуется, персонажи переезжают вместе с миром.
Шаг 1. Остановите оба сервера
# на старом хостинге
sudo systemctl stop palworld
# убедитесь, что процесс не пишет автосейв
Останавливать нужно оба конца: старый - чтобы получить консистентный сейв, новый - чтобы он не перезаписал залитые файлы.
Шаг 2. Скопируйте всю папку мира
Копируем целиком папку 0/<WorldID>/ со всеми файлами и папкой Players:
# со старого хостинга на новый напрямую (rsync сохраняет права)
rsync -avz \
/home/palworld/palserver/Pal/Saved/SaveGames/0/ \
palworld@NEW_HOST:/home/palworld/palserver/Pal/Saved/SaveGames/0/
Заодно перенесите конфиги, чтобы настройки мира совпали:
rsync -avz \
/home/palworld/palserver/Pal/Saved/Config/LinuxServer/ \
palworld@NEW_HOST:/home/palworld/palserver/Pal/Saved/Config/LinuxServer/
Шаг 3. Проверьте DedicatedServerName и права
На новом хостинге убедитесь, что DedicatedServerName в GameUserSettings.ini указывает на тот же WorldID, что вы залили. Если копировали конфиг целиком - значение уже правильное. Поправьте владельца файлов:
sudo chown -R palworld:palworld /home/palworld/palserver/Pal/Saved/
sudo systemctl start palworld
Между dedicated-серверами не меняйте имя WorldID без необходимости: PlayerUID-привязки завязаны на структуру, и переименование папки без правки конфига приведёт к тому, что сервер просто создаст новый пустой мир рядом.
Про IP, порты и подключение игроков
После переезда сменится адрес сервера. Игрокам нужно заново прописать IP:8211 в Join Multiplayer Game - про это подробно в подключении к Palworld-серверу. App ID серверного билда не меняется (2394010), игровой порт остаётся 8211/UDP, RCON - 25575/TCP, REST API - 8212/TCP.
Чеклист безопасного переноса
Короткий список, чтобы ничего не забыть:
- Бэкап обоих концов до начала - обязательно.
- Оба сервера остановлены на время копирования.
- Скопированы Level.sav, LevelMeta.sav, WorldOption.sav и папка Players.
- Имя WorldID-папки совпадает с
DedicatedServerName. - Владелец файлов - пользователь, под которым работает сервис (chown).
- Для single-player: заранее предупредите игроков о возможном сбросе персонажей.
- Для dedicated-to-dedicated: WorldID не переименован.
Pterohost - готовая инсталляция Palworld и помощь с миграцией мира: DDoS-защита, ежедневные бэкапы, поддержка 24/7. Промокод 4START даёт -20% на первый заказ. Заказать Palworld сервер
Часто задаваемые вопросы
Можно ли перенести одиночный мир Palworld на dedicated server?
Да, мир (Level.sav и WorldOption.sav) переносится копированием папки в SaveGames/0/. Но персонажи мигрируют плохо: гостевые персонажи co-op теряются, а host-персонаж требует ручного пересоздания или конвертации через community save-tools.
Где хранится локальный сейв Palworld на Windows?
В %LOCALAPPDATA%\Pal\Saved\SaveGames\<SteamID64>\<WorldID>\. SteamID64 - это ваш числовой Steam-идентификатор, WorldID - 32-символьный hex-код мира. Внутри лежат Level.sav, LevelMeta.sav, WorldOption.sav и папка Players.
Почему после переноса мира пропадает персонаж и прогресс?
Палы, базы и постройки хранятся в Level.sav и переносятся нормально. Инвентарь и уровень игрока привязаны к записи в Level.sav по внутреннему UID персонажа. На dedicated этот UID генерируется заново, поэтому старый персонаж не подхватывается без правки save-editor.
Как перенести мир между двумя хостингами Palworld?
Остановите оба сервера, скопируйте всю папку Pal/Saved/SaveGames/0/<WorldID>/ со старого хостинга на новый, сохранив имя WorldID. Персонажи здесь мигрируют корректно, так как формат dedicated-to-dedicated идентичен. Обязательно сделайте бэкап перед переносом.
Нужно ли переименовывать папку world-id при переносе?
При переносе single-player на dedicated можно оставить исходный WorldID или задать свой - главное, чтобы имя папки совпадало со значением, которое сервер запишет в DedicatedServerName. Между dedicated-серверами имя WorldID лучше не менять, чтобы не сломать привязки.