Обновление Palworld-сервера после патчей без потери мира
Как безопасно обновить Palworld dedicated server после патча: RCON Save и Shutdown, бэкап, steamcmd app_update 2394010 validate, скрипт-обёртка и авто-апдейт.
Palworld обновляется часто, и клиент Steam накатывает патч автоматически при следующем запуске. Проблема в том, что dedicated server сам не обновляется - и как только у игрока клиент ушёл вперёд, он ловит ошибку подключения с несовпадением версий (version mismatch), а сервер продолжает крутить старый билд. Ситуация типичная: вышел хотфикс, к вечеру половина игроков не может зайти, а вы не знаете, тронет ли апдейт сейв. В этой статье - безопасный процесс обновления Palworld-сервера через RCON и SteamCMD, скрипт-обёртка, отслеживание патчей и что делать с модами. Установку с нуля тут не дублируем - она разобрана в отдельной статье установка Palworld dedicated server.
Почему возникает version mismatch
Palworld требует, чтобы клиент и сервер работали на одном билде. Проверка версии происходит на этапе рукопожатия по порту 8211/UDP, ещё до загрузки в мир. Когда Pocketpair выпускает патч:
- клиент игрока обновляется автоматически при запуске Steam (если не отключено ручное управление обновлениями);
- серверный билд (app ID 2394010) остаётся на старой версии, пока вы не запустите
app_updateвручную; - игрок с новым клиентом получает отказ в подключении, а тот, кто ещё не перезапустил Steam, заходит нормально.
Отсюда правило: серверный билд надо подтягивать в течение часов после релиза патча, а не дней. Ниже - как делать это без риска для мира.
Правильный порядок обновления
Главная ошибка - убить процесс сервера на ходу или дать SteamCMD перезаписать файлы, пока движок ещё пишет автосейв. Palworld сохраняет мир каждые 30 секунд, и обрыв на середине записи Level.sav - самый частый способ получить битый сейв. Поэтому порядок строго такой:
- Предупредить игроков через RCON
Broadcast. - Принудительно сохранить мир командой
Save. - Корректно остановить сервер через
Shutdown(с сейвом), а неDoExitи неkill -9. - Сделать бэкап папки
Pal/Saved. - Обновить билд через
steamcmd +app_update 2394010 validate. - Запустить сервер и проверить версию.
Шаг 1-3: остановка через RCON
RCON слушает 25575/TCP (при RCONEnabled=True). Даём игрокам время выйти из боёв, сохраняем и гасим:
RCON="rcon -a 127.0.0.1:25575 -p strong-admin-pass"
$RCON "Broadcast Server_update_in_2_minutes"
sleep 90
$RCON "Broadcast Update_in_30_seconds_saving_world"
$RCON "Save"
sleep 5
$RCON "Shutdown 30 Updating_server"
Shutdown 30 <msg> даёт движку 30 секунд на финальный сейв и корректное закрытие сессий. Дождитесь, пока процесс PalServer-Linux-Shipping реально завершится, - только после этого трогайте файлы. Подчёркивания в Broadcast и Shutdown заменяются пробелами в чате.
Проверить, что процесс умер:
pgrep -f PalServer-Linux-Shipping || echo "server stopped"
Если через 45 секунд процесс всё ещё висит - только тогда можно послать SIGTERM (не SIGKILL): pkill -TERM -f PalServer-Linux-Shipping.
Шаг 4: бэкап перед апдейтом
Бэкап делается всегда, независимо от того, “мелкий” патч или крупный. Архивируем SaveGames и Config целиком:
SAVE_DIR=/home/palworld/palserver/Pal/Saved
BACKUP_DIR=/backups/palworld
DATE=$(date +%Y%m%d-%H%M)
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/pre-update-$DATE.tar.gz" -C "$SAVE_DIR" SaveGames Config
Отдельный префикс pre-update- удобен: если после патча мир поведёт себя странно, вы сразу найдёте архив, сделанный ровно перед обновлением. Подробнее про стратегию резервных копий и ротацию - в статье бэкапы Palworld-сервера.
Шаг 5: обновление билда
Обновление - это тот же app_update, что и при установке, с ключом validate, который сверяет контрольные суммы и докачивает только изменившиеся файлы:
steamcmd +force_install_dir /home/palworld/palserver \
+login anonymous \
+app_update 2394010 validate \
+quit
validate замедляет процесс (сверка всех файлов), но защищает от частично скачанного билда - именно частичная докачка обычно и приводит к падению сервера сразу после старта. Для планового обновления validate оставлять стоит всегда.
Шаг 6: старт и проверка версии
Запускаем сервер (через systemd или скрипт) и убеждаемся, что версия сменилась:
systemctl start palworld
sleep 20
rcon -a 127.0.0.1:25575 -p strong-admin-pass "Info"
Команда Info вернёт имя сервера и номер версии - он должен совпасть с версией клиента. После этого попросите одного игрока зайти и подтвердить, что version mismatch ушёл.
Скрипт-обёртка обновления
Ручной прогон шести шагов каждый патч - путь к ошибкам. Соберём всё в один скрипт update-palworld.sh, который делает остановку, бэкап, апдейт и старт:
#!/bin/bash
set -euo pipefail
SERVER_DIR=/home/palworld/palserver
SAVE_DIR="$SERVER_DIR/Pal/Saved"
BACKUP_DIR=/backups/palworld
RCON="rcon -a 127.0.0.1:25575 -p strong-admin-pass"
APPID=2394010
echo "[1/5] Warning players and saving world"
$RCON "Broadcast Server_update_starting_in_60_seconds" || true
sleep 55
$RCON "Save" || true
sleep 5
$RCON "Shutdown 15 Updating_server" || true
echo "[2/5] Waiting for shutdown"
for i in $(seq 1 30); do
pgrep -f PalServer-Linux-Shipping >/dev/null || break
sleep 2
done
pkill -TERM -f PalServer-Linux-Shipping 2>/dev/null || true
sleep 3
echo "[3/5] Backup before update"
DATE=$(date +%Y%m%d-%H%M)
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/pre-update-$DATE.tar.gz" -C "$SAVE_DIR" SaveGames Config
echo "[4/5] Updating build $APPID"
steamcmd +force_install_dir "$SERVER_DIR" \
+login anonymous \
+app_update "$APPID" validate \
+quit
echo "[5/5] Starting server"
systemctl start palworld
echo "Done. Check version:"
sleep 20
$RCON "Info" || true
Скрипт идемпотентен по стопу (не падает, если сервер уже выключен, - отсюда || true на RCON-командах) и всегда делает бэкап между остановкой и апдейтом. Запуск - sudo ./update-palworld.sh после того, как заметили новый патч.
Pterohost - Palworld-хостинг с NVMe SSD и DDoS-защитой, где апдейт сервера ставится в один клик из панели. Промокод 4START даёт -20% на первый заказ. Арендовать Palworld сервер
Как отслеживать выход патчей
Чтобы не узнавать о патче от недовольных игроков, следите за источниками в порядке оперативности:
| Источник | Что смотреть | Оперативность |
|---|---|---|
| SteamDB, app 2394010 | Вкладка Depots - время последнего билда серверного depot | Самое раннее, до changelog |
| SteamDB Patchnotes | Официальные заметки к патчу | Через несколько часов |
| Steam News (в клиенте) | Анонсы Pocketpair по игре | Одновременно с патчем |
| Discord Pocketpair | Хотфиксы и известные баги | Оперативно, но текстом |
Практический приём: серверный depot на SteamDB меняет Last Updated раньше, чем выходит публичный changelog. Если видите свежий билд server depot - значит, клиенты вот-вот начнут обновляться, и пора запускать апдейт сервера, не дожидаясь заметок.
Проверить текущую установленную версию билда локально можно через манифест SteamCMD:
grep -A5 '"2394010"' \
/home/palworld/palserver/steamapps/appmanifest_2394010.acf
Поле buildid в этом файле - то, что вы сравниваете с последним билдом на SteamDB, чтобы понять, отстаёте ли вы.
Совместимость сейвов между версиями
Хорошая новость: сейвы Palworld в подавляющем большинстве патчей forward-compatible - новый серверный билд без проблем открывает мир, сохранённый на предыдущей версии. Именно поэтому обновление обычно проходит незаметно для игроков, кроме короткого простоя.
Важные оговорки:
- Обратной совместимости нет. Если вы обновились, сервер поработал и записал мир уже на новом билде, откатить сервер на старую версию и открыть этот же мир, как правило, не выйдет. Поэтому бэкап делается именно ДО апдейта - он даёт вам точку отката вместе со старым билдом.
- Редкие структурные патчи. Иногда крупные обновления (сезонные, с новыми механиками) меняют формат данных внутри
Level.sav. Разработчик обычно предупреждает, но полагаться на это нельзя - страховка всё та же, свежий бэкап. - Персонажи игроков (
Players/<steam-id>.sav) обновляются вместе с миром. Отдельно их мигрировать не нужно, но и они входят в тот же бэкап папкиSaved.
Правило простое: не удаляйте pre-update-*.tar.gz минимум пару дней после обновления - пока не убедитесь, что мир стабилен на новой версии.
Обновление и моды: что ломается
Если на сервере стоят моды через UE4SS или нативные патчи - обновление почти гарантированно их сломает. Причина в том, что UE4SS и нативные моды привязаны к смещениям (offsets) внутри конкретного бинарника PalServer-Linux-Shipping, а каждый патч сдвигает эти адреса. Симптомы после апдейта:
- сервер стартует, но моды не грузятся (в логе UE4SS - ошибки поиска функций);
- сервер падает при старте сразу после инициализации мода;
- часть модов работает, часть - нет (частичное несовпадение).
Правильный порядок для моддед-сервера:
- Сделать бэкап (как обычно).
- Обновить сервер через
app_update. - Не запускать сервер с включёнными модами сразу.
- Обновить UE4SS и каждый мод до версий под новый билд.
- Только потом стартовать.
Не пытайтесь обновлять моды “на всякий случай” до выхода их обновлений - лучше временно отключить моды и запустить ванильный сервер, чем ловить краши. Детально процесс обновления модов и восстановления UE4SS разобран в статье про моды на Palworld-сервере.
Автообновление через systemd + таймер
Автоматизировать апдейт можно, но с оговорками: слепой авто-апдейт опасен на модед-серверах и на проде с активным онлайном, потому что перезапустит сервер посреди игры. Для ванильного сервера с ночным окном тишины - вполне рабочая схема.
Создаём oneshot-сервис /etc/systemd/system/palworld-update.service, который вызывает наш скрипт:
[Unit]
Description=Palworld server update
Wants=network-online.target
After=network-online.target
[Service]
Type=oneshot
ExecStart=/home/palworld/update-palworld.sh
И таймер /etc/systemd/system/palworld-update.timer - раз в сутки в 05:00, когда онлайна нет:
[Unit]
Description=Daily Palworld update check
[Timer]
OnCalendar=*-*-* 05:00:00
Persistent=true
[Install]
WantedBy=timers.target
Активация:
systemctl daemon-reload
systemctl enable --now palworld-update.timer
systemctl list-timers palworld-update.timer
Меры предосторожности при автообновлении:
- Скрипт всегда делает бэкап перед
app_update- без этого автоматизацию включать нельзя. steamcmd ... validateдокачает билд, только если он изменился, так что таймер вхолостую почти не грузит систему - реальная перекачка идёт лишь в дни патчей.- На модед-сервере авто-апдейт не включайте: обновлённый билд сломает моды, а таймер этого не заметит. Обновляйтесь вручную.
- Держите окно апдейта в часы минимального онлайна, а игрокам покажите расписание рестартов, чтобы простой в 05:00 никого не удивлял.
Тонкая настройка PalWorldSettings.ini под нагрузку и другие параметры мира тут не разбираются - им посвящена статья настройка Palworld-сервера.
Pterohost - игровой хостинг с DDoS-защитой, авто-бэкапами и панелью, где обновление Palworld делается кнопкой. Промокод 4START даёт -20% на первый заказ. Заказать Palworld хостинг
Часто задаваемые вопросы
Почему игроки не могут зайти на Palworld-сервер после патча?
Это version mismatch: клиент обновился в Steam автоматически, а серверный билд отстаёт. Клиент и сервер обязаны быть на одной версии, иначе Palworld отдаёт ошибку подключения. Решение - обновить сервер через steamcmd app_update 2394010 validate и перезапустить.
Обязательно ли делать бэкап перед обновлением Palworld-сервера?
Да, всегда. Хотя сейвы Palworld обычно forward-compatible и старый мир открывается на новом билде, редкие патчи меняют структуру Level.sav. Бэкап всей папки Pal/Saved перед апдейтом - единственная страховка от повреждения мира.
Как узнать, что вышел патч для Palworld сервера?
Отслеживайте SteamDB для app 2394010 (вкладка Patchnotes и Depots показывают время последнего билда), Steam News по игре и официальный Discord Pocketpair. На SteamDB видно точное время выхода build раньше, чем появляется changelog.
Совместимы ли сохранения Palworld между версиями?
В большинстве случаев да - новый серверный билд открывает мир от предыдущей версии (forward-compatible). Обратной совместимости нет: откатить сервер на старую версию и открыть мир, сохранённый уже на новом билде, обычно не получается. Поэтому бэкап делают ДО обновления.
Ломает ли обновление сервера моды и UE4SS?
Почти всегда. UE4SS и нативные моды привязаны к смещениям в конкретном билде PalServer, и после патча они перестают грузиться или крашат сервер. После апдейта моды нужно обновлять под новую версию отдельно - подробности в статье про моды.