《幻兽帕鲁》迁移合作存档到独立服务器
本文是根据 https://github.com/xNul/palworld-host-save-fix 的说明,对《幻兽帕鲁》从合作模式迁移存档到独立服务器的原理和流程的概括,如有问题请参考原文。
前置信息
同一个 Steam 用户,在不同平台的服务器上会得到不同的 GUID
原文给的步骤比较繁琐,但是整体思路是,旧的服务器的用户加入新的服务器,得到 GUID,通过两个 GUID 的差异得到计算方法,更新其它所有用户存档的文件名。
合作模式存档位置和结构
存档位置:
C:\Users\<USERNAME>\AppData\Local\Pal\Saved
具体到特定世界:
C:\Users\<USERNAME>\AppData\Local\Pal\Saved\SaveGames\<STEAM_USER_ID>\<WORLD_ID>\
世界存档的详细结构:
backup/
Players/
00000000000000000000000000000001.sav
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.sav
Level.sav
LevelMeta.sav
LocalData.sav
WorldOption.sav
Linux Delicated Server 存档位置和结构
以此为例: https://github.com/jammsen/docker-palworld-dedicated-server
game/Pal/Saved/
Config/
LinuxServer/
GameUserSettings.ini
SaveGames/
0/
WORLD_ID/
backup/
Players/
00000000000000000000000000000001.sav
Level.sav
LevelMeta.sav
LocalData.sav
其中 GameUserSettings.ini 中,有如下选项指定了要加载哪个世界:
DedicatedServerName=<WORLD_ID>
注意:如果是 Windows Delicated Server,那么 GameUserSettings.ini 位于 Config/ 下面的 WindowsServer/ 目录中,其它相同。
过程总结
所以存档的迁移过程分为以下几步:
- 从合作模式的存档文件夹中,复制想要的世界文件夹 <WORLD_ID>,到,服务器的存档文件夹的对应位置 SaveGames/0/ 下面
- 编辑服务器的 GameUserSettings.ini,把
DedicatedServerName
的值修改为世界文件夹的名字 <WORLD_ID> - 启动服务器,原合作模式,主机 Steam 用户,加入新的服务器,稍微做点什么然后退出
- Delicated Server 上应当已经在 SaveGames/0/<WORLD_ID>/Players/ 下面生成了新的 .sav 文件,复制其文件名作为 new_guid
- 用 00000000000000000000000000000001 作为 old_guid。使用 palworld-host-save-fix 工具,根据说明更新旧的存档,得到修改后的 .sav 文件。注意对存档进行备份
- 把生成的 .sav 文件复制到服务器的 SaveGames/0/WORLD_ID/Players/ 下面。
- 重启服务器并测试连接