Как перенести и восстановить серверного персонажа ServerManager
ServerManager хранит и восстанавливает персонажей на сервере. Перенос существующего .fch выполняется при полностью остановленном сервере; восстановление исправного серверного персонажа также доступно отдельной административной командой. В обоих случаях важны Steam64 владельца, точное имя персонажа и завершённое серверное сохранение.
Область применения и условия
При loadServerCharacterOnJoin: true вернувшийся игрок получает последнее принятое сервером состояние. Изменения из одиночной игры не заменяют его. По умолчанию локальный персонаж с прогрессом не допускается, если у сервера ещё нет его сохранения; такой отказ не перезаписывает локальный файл.
Найдите серверное хранилище
Каталог ServerManager лежит в активной папке сохранений Valheim, а не в профиле менеджера модов. Для Windows автор указывает %USERPROFILE%/AppData/LocalLow/IronGate/Valheim/ServerManager; при запуске с -savedir используется <savedir>/ServerManager. Внутри characters/<Steam64>/ хранятся основные файлы и резервные копии.
Персонажи используют это хранилище совместно между мирами. Для независимых серверов на одном компьютере автор рекомендует разные -savedir. Не переносите серверные настройки, персонажей и Discord credentials в общий модпак.
Импорт существующего .fch
- Полностью остановите сервер и сделайте копию его файлов. При плановом завершении работающего сервера предварительно выполните save и дождитесь подтверждения завершённого character checkpoint, описанного ниже.
- Подтвердите 17-значный Steam64 ID владельца и используйте его каталог characters/<Steam64>/.
- Скопируйте нативный .fch и назовите его Steam_<Steam64>_<lowercase-character-name>.fch. Для части имени используйте имя, записанное внутри персонажа, в нижнем регистре.
- Не меняйте внутреннее имя и Player ID. Сохраняйте все пробелы имени, включая начальные, конечные и повторяющиеся.
- Оставьте loadServerCharacterOnJoin: true, запустите сервер, проверьте журнал и подключитесь соответствующим персонажем.
Отдельной папки import и шага конвертации в этой процедуре нет. Не кладите .old, .signature или .serverbackup в активное хранилище. Для старой нативной резервной копии автор предлагает взять её .fch и переименовать копию по той же схеме; совместимость версий игры и модов всё равно должна сохраняться.
Сначала завершите серверное сохранение
Для запланированной остановки или восстановления выполните save и ждите в журнале подтверждение WorldCharacterCheckpointCompleted ... pending=0 для этого сохранения. Прогресс можно смотреть через sm:status. Одного уведомления World saved недостаточно: запись персонажей ещё может выполняться в фоне.
Подтверждение охватывает обновления, уже принятые сервером к моменту контрольной точки. Оно не обещает запись каждого последнего действия клиента. Локальный файл или Steam Cloud также не доказывают, что сервер успел сохранить персонажа.
Восстановление командой на работающем сервере
- Попросите нужного игрока выйти и оставаться отключённым до конца процедуры.
- Выполните save и дождитесь завершения checkpoint с pending=0.
- Введите sm:characterbackups MyHero, заменив MyHero нужным именем. Если имя содержит пробелы, заключите его полностью в двойные кавычки.
- Выберите backupId, который вернула команда, и выполните sm:characterrestore MyHero <backupId>. Используйте именно этот ID, а не имя файла или номер строки списка.
- Дождитесь явного сообщения об успехе и только затем разрешите игроку подключиться.
Автор указывает эти команды для F5 или серверной консоли с необходимыми административными правами. Живое восстановление требует исправного основного файла и совпадающего Player ID. Для отсутствующего или повреждённого основного файла, а также персонажа самого хоста используйте вариант с остановленным сервером.
Восстановление заменой файла
- Остановите сервер до замены. Для локального хоста закройте и саму игру.
- Сохраните копию текущих файлов перед изменениями и выберите нужный backup из каталога соответствующего Steam64.
- Скопируйте выбранную резервную копию поверх основного файла, убрав временную метку и добавочный суффикс коллизии; расширение .fch оставьте. Сохраните правильную схему имени основного файла.
- Не переименовывайте .fch.pending в основной файл. Установите loadServerCharacterOnJoin: true перед повторным подключением.
Гайд был полезен?