Перейти к содержанию

Как перенести и восстановить серверного персонажа ServerManager

Привязка .fch к Steam64 и имени, ожидание pending=0, выбор backupId и различие живого восстановления и замены при остановленном сервере.
Версия не проверена

ServerManager хранит и восстанавливает персонажей на сервере. Перенос существующего .fch выполняется при полностью остановленном сервере; восстановление исправного серверного персонажа также доступно отдельной административной командой. В обоих случаях важны Steam64 владельца, точное имя персонажа и завершённое серверное сохранение.

Область применения и условия

Информация
Инструкция описывает ServerManager 1.2.3 от sighsorry. Автор требует Valheim 1.0.20, мод на сервере и всех клиентах и отключённый crossplay. Он также просит убрать ServerCharacters и старые отдельные DLL OrbOfDiscord, избегая других модов, управляющих теми же сохранениями. Это сторонняя система персонажей, а не обычная функция Manage Saves.

При loadServerCharacterOnJoin: true вернувшийся игрок получает последнее принятое сервером состояние. Изменения из одиночной игры не заменяют его. По умолчанию локальный персонаж с прогрессом не допускается, если у сервера ещё нет его сохранения; такой отказ не перезаписывает локальный файл.

Найдите серверное хранилище

Каталог ServerManager лежит в активной папке сохранений Valheim, а не в профиле менеджера модов. Для Windows автор указывает %USERPROFILE%/AppData/LocalLow/IronGate/Valheim/ServerManager; при запуске с -savedir используется <savedir>/ServerManager. Внутри characters/<Steam64>/ хранятся основные файлы и резервные копии.

Персонажи используют это хранилище совместно между мирами. Для независимых серверов на одном компьютере автор рекомендует разные -savedir. Не переносите серверные настройки, персонажей и Discord credentials в общий модпак.

Импорт существующего .fch

  1. Полностью остановите сервер и сделайте копию его файлов. При плановом завершении работающего сервера предварительно выполните save и дождитесь подтверждения завершённого character checkpoint, описанного ниже.
  2. Подтвердите 17-значный Steam64 ID владельца и используйте его каталог characters/<Steam64>/.
  3. Скопируйте нативный .fch и назовите его Steam_<Steam64>_<lowercase-character-name>.fch. Для части имени используйте имя, записанное внутри персонажа, в нижнем регистре.
  4. Не меняйте внутреннее имя и Player ID. Сохраняйте все пробелы имени, включая начальные, конечные и повторяющиеся.
  5. Оставьте loadServerCharacterOnJoin: true, запустите сервер, проверьте журнал и подключитесь соответствующим персонажем.

Отдельной папки import и шага конвертации в этой процедуре нет. Не кладите .old, .signature или .serverbackup в активное хранилище. Для старой нативной резервной копии автор предлагает взять её .fch и переименовать копию по той же схеме; совместимость версий игры и модов всё равно должна сохраняться.

Сначала завершите серверное сохранение

Для запланированной остановки или восстановления выполните save и ждите в журнале подтверждение WorldCharacterCheckpointCompleted ... pending=0 для этого сохранения. Прогресс можно смотреть через sm:status. Одного уведомления World saved недостаточно: запись персонажей ещё может выполняться в фоне.

Подтверждение охватывает обновления, уже принятые сервером к моменту контрольной точки. Оно не обещает запись каждого последнего действия клиента. Локальный файл или Steam Cloud также не доказывают, что сервер успел сохранить персонажа.

Восстановление командой на работающем сервере

  1. Попросите нужного игрока выйти и оставаться отключённым до конца процедуры.
  2. Выполните save и дождитесь завершения checkpoint с pending=0.
  3. Введите sm:characterbackups MyHero, заменив MyHero нужным именем. Если имя содержит пробелы, заключите его полностью в двойные кавычки.
  4. Выберите backupId, который вернула команда, и выполните sm:characterrestore MyHero <backupId>. Используйте именно этот ID, а не имя файла или номер строки списка.
  5. Дождитесь явного сообщения об успехе и только затем разрешите игроку подключиться.

Автор указывает эти команды для F5 или серверной консоли с необходимыми административными правами. Живое восстановление требует исправного основного файла и совпадающего Player ID. Для отсутствующего или повреждённого основного файла, а также персонажа самого хоста используйте вариант с остановленным сервером.

Восстановление заменой файла

  1. Остановите сервер до замены. Для локального хоста закройте и саму игру.
  2. Сохраните копию текущих файлов перед изменениями и выберите нужный backup из каталога соответствующего Steam64.
  3. Скопируйте выбранную резервную копию поверх основного файла, убрав временную метку и добавочный суффикс коллизии; расширение .fch оставьте. Сохраните правильную схему имени основного файла.
  4. Не переименовывайте .fch.pending в основной файл. Установите loadServerCharacterOnJoin: true перед повторным подключением.
Информация
Не заменяйте .fch у работающего сервера: сохранённое в памяти состояние может перезаписать вашу замену. Восстановление меняет персонажа, а не мир; сомнительный результат сначала проверьте, прежде чем повторять процедуру. Подробности автор помещает в characters/HowToRestore.txt. Команды и копирование файлов в этом гайде только описаны — нами они не выполнялись.

Гайд был полезен?