I am not responisble for any corrupted or lost data. This worked for me, it may not work for you. With that said, this is a VERY manual process at the moment. With this process I successfully restored my guilds characters, levels, and guild assocation along with the guild leader as if nothing had happend.
- palworld-save-tools
- Visual Studio Code
- HxD
- Python (I used 3.10.10 so I included it here, but im sure many other versions work)
Shut down your server and make a backup right now! We will need these files for later. I cannot stress this enough, please keep frequent backups.
After you backup your saves you will have to get your players to reconnect and make new characters. I suggest asking each player one-at-a-time and watching as each save file appears for them and saving each .sav file with a note for each one documenting who is who. If you cannot do this because you do not have easy contact with your players, then you will have to get the ID associations with each name from the Level.sav file after everyone logs in and makes a new character.
Download the palworld-save-tools and extract it somwhere. Open up CMD using hitting the windows key then typing cmd and hitting enter.
Once CMD is open, type this command to switch to the directory you downloaded to.
cd C:\Path\To\palworld-save-tools
A little side note, if your download resides on a drive that is not the C drive like for me I used the E drive, you need to switch to that drive by typing this into CMD either before or after the previous command.
E:
Alternativley (this is my preferred method) is to just right click inside your folder you want to CMD in and click "Open In Terminal".
Copy both your new and old player save files over to the palworld-save-tools directory. Then for each for each of your player save files you will use the command.
python convert-single-sav-to-json.py .\uesave\uesave.exe PLAYERID.sav
After you do each of your players, your folder should be filled with json files now.
So by now you should have a list of each players old sav file and new sav file. Open both your old PLAYERID.sav.json and new PLAYERID.sav.json in Visual Studio Code, from there you will scroll down until you find these lines.
On the left is the old player profile, on the right is the players new profile. Now the two GUIDs here are important to remember. Keep these IDs safe for later, you will need them to restore your levels and guild information!
In the file on the left:
- cf88b114-0000-0000-0000-000000000000
- b25f0602-4a53-5975-81df-f29b00c04361
In the file on the right
- f3972d82-0000-0000-0000-000000000000
- cc9964d7-426b-b774-7857-cc8409d5487f
The file on the left is the one we will be editing. Now you will be replacing the new IDs over the old IDs like so
We are done editing this file. Now we can turn it back into a sav file by doing this command.
python convert-single-json-to-sav.py .\uesave\uesave.exe PLAYERID.sav.json
Last you need to rename the .sav file you just made to your new player id or else it will not load. In my case I will rename CF88B114000000000000000000000000.sav to F3972D82000000000000000000000000.sav. After you do that, copy the new .sav file to your Players Folder.
Now do this for every player, im sorry for those that have a lot of players on their server!
Buckle up because this one is kinda janky due to text editors not dealing with large files well. Be aware you will need a decent amount of ram to do this as the extrator used about 10gb of ram on my pc while creating the levels json data. This will vary depending on the size of your world.
First we need to convert our Level.sav to a json with this command.
This will take a while and output a large file be patient
python convert-single-sav-to-json.py .\uesave\uesave.exe Level.sav
You will have an output file that looks like this
Next you will be opening this file with HxD.
Note: I would love to use a real text editor but couldnt not manage to get one to handle large files.... This is the alternative I used.
Now we want to go to Search->Replace
From there we want to click on "Replace All" old IDs with the new ones.
The first ID replace should look like this
The second ID replace should look like this
Do this for each of your players, save, and you are done with HxD.
The last step is to convert your Level.sav.json back to a sav file using this command.
python convert-single-json-to-sav.py .\uesave\uesave.exe Level.sav.json
Once again, this will take a while and use a lot of ram, be patient.
When this is done, your new Level.sav file is there, ready to copy over to your server folder.
If all goes well, everything should be back to normal.
Hopefully I explained this well, let me know if there are any corrections or any new developments about the save file problem.
That is pretty cool! Automating this process was something I considered but never got around to it. Glad to see someone do it.