Pterohost docs

Обновление 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 - самый частый способ получить битый сейв. Поэтому порядок строго такой:

  1. Предупредить игроков через RCON Broadcast.
  2. Принудительно сохранить мир командой Save.
  3. Корректно остановить сервер через Shutdown (с сейвом), а не DoExit и не kill -9.
  4. Сделать бэкап папки Pal/Saved.
  5. Обновить билд через steamcmd +app_update 2394010 validate.
  6. Запустить сервер и проверить версию.

Шаг 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 - ошибки поиска функций);
  • сервер падает при старте сразу после инициализации мода;
  • часть модов работает, часть - нет (частичное несовпадение).

Правильный порядок для моддед-сервера:

  1. Сделать бэкап (как обычно).
  2. Обновить сервер через app_update.
  3. Не запускать сервер с включёнными модами сразу.
  4. Обновить UE4SS и каждый мод до версий под новый билд.
  5. Только потом стартовать.

Не пытайтесь обновлять моды “на всякий случай” до выхода их обновлений - лучше временно отключить моды и запустить ванильный сервер, чем ловить краши. Детально процесс обновления модов и восстановления 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, и после патча они перестают грузиться или крашат сервер. После апдейта моды нужно обновлять под новую версию отдельно - подробности в статье про моды.