Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions 使用说明.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# 重要!重要!重要!

> ### :warning: 由于原作者在2周前(2020/02/10)做了关键变更[“Migrate from uesave to palworld-save-tools”](https://github.com/skydiver-jay/palworld-host-save-fix/commit/d7f2cf8b9f627537d7d1c521c2ab9157f148ad9e),使用palworld-save-tools代替了uesave,导致工具的安装及使用发生了变化,无法按照原先翻译的中文版使用说明使用新版本的工具。本人早已完成了自己游戏存档的迁移,所以短期内并没有计划使用、验证新版本的工具并更新中文版使用说明,所以在[此处](https://github.com/skydiver-jay/palworld-host-save-fix/tree/%E8%80%81%E7%89%88%E6%9C%AC%E8%AE%B0%E5%BD%95)保留了老版本工具。如想使用可下载(仓内zip压缩包),并按照中文版说明使用。
> ### ℹ️ 虽然老版中文说明无法指导使用新版工具,但可以帮助理解工具的原理,在尝试使用新版本工具前可以参考一下,避免直接使用新版本工具误操作导致存档损坏。
> ### :warning: 以下中文说明不适用于新版本工具(即2020/02/10 [“Migrate from uesave to palworld-save-tools”](https://github.com/skydiver-jay/palworld-host-save-fix/commit/d7f2cf8b9f627537d7d1c521c2ab9157f148ad9e) 提交后的版本)










# Palworld Host Save Fix

> ### :warning: 请任何时候都提前备份好自己的存档数据!

#### 本工具主要用于存档迁移,有如下几种场景的场景:
- 将原邀请码模式的多人游戏存档,迁移到新建的专属服务器模式。 // 下面将主要说明该场景的操作方法,主要面向那些前期使用邀请码模式和小伙伴玩耍的同学,在搭建专用服务器后,可以接着之前的进度继续玩。
- 将存档在Windows/Linux专属服务器模式间迁移.

#### 本工具迁移存档的工作逻辑:
- 在新服务器创建的世界中新建一个角色,产生一个新的存档文件(新的GUID)。
- 将原存档数据(旧的GUID)解码,提取数据,再编码覆盖新GUID的存档文件。


## 使用方法

#### 软件依赖:
- Python 3
- [uesave-rs](https://github.com/trumank/uesave-rs)

#### 命令行说明:
`python fix-host-save.py <uesave.exe> <save_path> <new_guid> <old_guid>`
`<uesave.exe>` - Path to your uesave.exe // ussave的安装路径

`<save_path>` - Path to your save folder // 存档文件夹路径,为了安全起见,这里作者建议将存档数据拷贝到一个临时文件夹下进行操作,此处就输入临时文件夹路径

`<new_guid>` - GUID of the player on the new server // 新的GUID

`<old_guid>` - GUID of the player from the old server // 旧的GUID,对于邀请码模式,房主的GUID默认为00000000000000000000000000000001,其他玩家的GUID随机,且在他们自己的电脑上无法找到,GUID和存档文件都在房主的主机上,如果想要确认各个小伙伴的GUID,可以安排先后进入原邀请码模式,观察存档文件的刷新时间,来判断对应关系,这样才能在后续迁移后恢复各自的存档不产生错乱

#### 命令行样例:
`python fix-host-save.py "C:\Users\John\.cargo\bin\uesave.exe" "C:\Users\John\Desktop\my_temporary_folder\2E85FD38BAA792EB1D4C09386F3A3CDA" 6E80B1A6000000000000000000000000 00000000000000000000000000000001`

## 将原邀请码模式的多人游戏存档,迁移到新建的专属服务器模式(Windows服务器) // Linux服务器请自行类推

#### 前置条件:
- 安装好了Python3和uesave。 // 其中uesave安装后,安装路径下如果没有`uesave.exe`则表示安装失败。
- 专属服务器已经安装好,并且可以正常运行,且可以连接并进入游戏。


#### 迁移操作步骤: //先迁移原房主的存档
1. 把房主本地的存档文件夹(位于`C:\Users\<username>\AppData\Local\Pal\Saved\SaveGames\<random_numbers>`路径下)复制到专属服务器的一个临时目录,并记录存档文件夹的文件夹名,如`2E85FD38BAA792EB1D4C09386F3A3CDA`。
2. 打开服务器上如下路径`PalServer\Pal\Saved\Config\WindowsServer\GameUserSettings.ini`的配置文件, 修改`DedicatedServerName`字段的值为第1步中记录的文件夹名,如:`DedicatedServerName=2E85FD38BAA792EB1D4C09386F3A3CDA`.
3. 将复制过来的存档文件夹,如`2E85FD38BAA792EB1D4C09386F3A3CDA`,后面使用`<your_save_here>`代指,复制到专属服务器的存档路径下:`PalServer\Pal\Saved\SaveGames\0`路径下;并删除`<your_save_here>\WorldOption.sav`以便后续对游戏配置的修改能够生效(配置修改通过修改`PalWorldSettings.ini`配置文件实现)。
4. 尝试连接服务器,并创建新角色,然后退出游戏,以便在服务端生成新的GUID存档目录;一个新的存档文件`.sav`会出现在`PalServer\Pal\Saved\SaveGames\0\<your_save_here>\Players`路径下,文件名为`新的GUID.sav`,记录这个`新的GUID`(比如`6E80B1A6000000000000000000000000`),后续运行工具需要该参数。
5. 关闭服务器(为了存档安全)。
6. 将`PalServer\Pal\Saved\SaveGames\0\<your_save_here>`存档文件夹复制到一个临时文件夹中,如`C:\Users\John\Desktop\my_temporary_folder\<your_save_here>`,并**同时做好数据备份(为了安全)**。
7. 如果已经安装好了本工具所需的依赖,请准备好uesave的完整路径,如`C:\Users\John\.cargo\bin\uesave.exe`。
8. 由于原邀请码模式的房主的存档GUID默认为`00000000000000000000000000000001`,不用特别确认(后续如果想要迁移其他小伙伴的存档,则必须确认好各个小伙伴的存档GUID)。
9. 现在我们已经准备好Python3环境,记录了`新的GUID`(比如`6E80B1A6000000000000000000000000`) 、`旧的GUID`(`00000000000000000000000000000001`)、uesave的完整路径`C:\Users\John\.cargo\bin\uesave.exe`。
10. 在Windows CMD中运行本工具,命令如下:`python fix-host-save.py "C:\Users\John\.cargo\bin\uesave.exe" "C:\Users\John\Desktop\my_temporary_folder\2E85FD38BAA792EB1D4C09386F3A3CDA" 6E80B1A6000000000000000000000000 00000000000000000000000000000001`,工具将会解码原存档数据,读取数据,再次编码写入新的存储文件`新的GUID.sav`;请注意,此时的操作均在临时文件夹中执行,执行完,如果工具报错,则将临时文件夹下的存档文件夹,再次复制回`PalServer\Pal\Saved\SaveGames\0`,覆盖原文件夹。
11. 连接服务器,确认是否进入了原邀请码模式的房主的角色,并活动5分钟,确认已经捕获的帕鲁可以正常攻击、放在基地的帕鲁可以正常工作,如果不行则参考本项目原英文版README文件中的 [\[Pal bug\] workaround](#pal-bug) 相关内容修复该异常。(本人在迁移存储过程中没有遇到这个问题,就不翻译了)
12. (以下步骤为可选)如果想迁移其它小伙伴的存档,则根据下面的步骤操作即可,**期间注意经常性地进行数据备份**;如果小伙伴接受从0开始一个新角色,则可忽略。
13. 前面提到,该工具的原理是用原邀请码模式的角色存档数据覆盖新建的专属服务器角色数据来达到存档迁移的目的,所以想要迁移小伙伴的数据,逻辑上与迁移房主的存档是一致的,不同点在于小伙伴们地存档都在房主的存档文件夹下,并且GUID随机,需要确认各个小伙伴与GUID的对应关系。这里,本人推荐,可以要求小伙伴按顺序逐个连接之前的邀请码模式的世界,每连接一个,就在房主本地的存档路径下观察`.sav`的修改时间,最新发生修改的文件的文件名就是这位小伙伴的GUID。
14. 确认好小伙伴们各自的GUID后,就要求小伙伴们逐个连接新的专属服务器,并创建新角色,每创建一个新角色,观察专属服务器上存档路径下`.sav`的新增情况及修改时间,确认每个小伙伴新存档的GUID。
15. 当每个小伙伴的新、旧GUID都准备好了,则根据步骤`5-11`的逻辑,依次恢复每个小伙伴的存档;比如第一位小伙伴A的新GUID为`XXXXXXXXXXXXXXXXXXXXXXXXA`,旧GUID为`JJJJJJJJJJJJJJJJJJJJJJA`,那么工具命令参考如下:`python fix-host-save.py "C:\Users\John\.cargo\bin\uesave.exe" "C:\Users\John\Desktop\my_temporary_folder\2E85FD38BAA792EB1D4C09386F3A3CDA" XXXXXXXXXXXXXXXXXXXXXXXXA JJJJJJJJJJJJJJJJJJJJJJA`。
16. 操作完每一位小伙伴的存档迁移后,最好要求小伙伴连接服务器确认是否已恢复原邀请码模式的角色,并可正常游戏。

## 其它场景的存档迁移,逻辑类似,理解了本工具的主要原理后,参考上述场景类推,并且辅助原英文README文件,相信各位小伙伴一定能够得心应手地迁移存档。