Palworld – Migration from Windows Dedicated Server (Steam) to Linux Server

Note: This guide is not for coop to dedicated server!

When transferring save data from Steam dedicated server to Linux SteamCMD, a common problem is that players’ data will lost, in this guide I will provide a possible reason of this phenomenon and steps to correctly transfer save data.

Prerequisites

Linux Server with SteamCMD and Palworld dedicated server installed, you should be able to launch the server and join it.

TL:DR

  1. Copy your save folder from …\SteamLibrary\steamapps\common\PalServer\Pal\Saved\SaveGames\0\{YOUR_SAVE_ID} on Windows.
  2. Paste your save folder at .steam/SteamApps/common/PalServer/Pal/Saved/SaveGames/0/{YOUR_SAVE_ID}.
  3. Modify DedicatedServerName in .steam/SteamApps/common/PalServer/Pal/Saved/Config/LinuxServer/GameUserSettings.ini to YOUR_SAVE_ID.
  4. Create folder .steam/sdk64 (mkdir -p ~/.steam/sdk64).
  5. Copy .steam/steamcmd/linux64/steamclient.so to .steam/sdk64/steamclient.so.
  6. Modify (or create if not exist) the content of .steam/SteamApps/common/PalServer/Binaries/Linux/steam_appid.txt to 1623730.
  7. Modify the permission of steam_appid.txt to 444 (chmod 444 .steam/SteamApps/common/PalServer/Binaries/Linux/steam_appid.txt) and disable its parent folder to delete files (sudo chattr +a .steam/SteamApps/common/PalServer/Binaries/Linux). This is used to prevent the server modify steam_appid.txt again.
  8. Launch the server, if you see there is something like “Setting breakpad minidump AppID = xxxxxxx” in your server output, everything should be OK.

Cause of the Problem

The key problem is that the GUID of player is different between Linux and Windows. When you join a Linux server, you cannot get the same GUID that you previously used on Windows, therefore, server will treat you as a new player. But why GUID are different? I think it may related to the Steam API and the way palword generate GUID, followings are only my guess.

When a player join a palworld server, the server will first try to use Steam API to obtain player’s ID, and then based on this ID generate a GUID for the player. However, if Steam API is not available, the server will then generate GUID based on other unknown rules/values. On Windows platform, you launch a dedicated server from Steam, so, usually, Steam API is always available and well configured, then the GUID is generated based on your Steam ID. But on Linux platform, you need to provide steamclient.so and steam_appid.txt to make Steam API available. If you didn’t set these, the server will then generate GUID based on some unknown rules/values of the player, which is totally different from the GUID generated on Windows.

To check this, you can set AdminPassword in PalWorldSettings.ini, join a server, type /AdminPassword {YOUR_ADMIN_PWD} in chat box to become a administrator, then press ESC and your user ID will be displayed on the screen. You should find out that the value is different between Linux and Windows for the same player.

Helena Stamatina
About Helena Stamatina 3021 Articles
I love two things in life, games and sports. Although sports were my earliest interest, it was video games that got me completely addicted (in a good way). My first game was Crash Bandicoot (PS1) from the legendary studio Naughty Dog back in 1996. I turned my passion for gaming into a job back in 2019 when I transformed my geek blog (Re-actor) into the gaming website it is today.

Be the first to comment

Leave a Reply

Your email address will not be published.


*