Open5

Palworld Dedicated Serverのセーブデータをローカルでも利用できるようにする

UnnamedEngineerUnnamedEngineer

大まかな流れは以下と認識

  • 自分のUIDを特定する
  • 各セーブデータに記載されている自分のUIDをローカル用のUIDに修正する
UnnamedEngineerUnnamedEngineer

自分のUIDを特定する

UIDの特定はjqとかでスマートやろうとしたけどjsonが巨大すぎて失敗
大人しく目grepした
プレイヤー名が日本語ならunicodeに変換しなきゃいけないっぽい
自分はそうではなかったのでその作業はやってない

PLAYER_NAME=<自分のプレイヤー名>

pipenv run palworld-save-tools Level.sav
grep -5 ${PLAYER_NAME} Level.sav.json

こんな感じのデータの見つかる

        {
                "player_uid": "xxxxxxxxx-0000-0000-0000-000000000000",
                "player_info": {
                        "last_online_real_time": 26879912250000,
                        "player_name": "<自分のプレイヤー名>"
                }
        },
UnnamedEngineerUnnamedEngineer

各セーブデータに記載されている自分のUIDをローカル用のUIDに修正する

00000000-0000-0000-0000-000000000001がローカル用のUID

PLAYER_ID=<自分のUID>
sed -i s/${PLAYER_ID}/00000000-0000-0000-0000-000000000001/g Level.sav.json
pipenv run palworld-save-tools Level.sav.json 

pipenv run palworld-save-tools Players/${PLAYER_ID}.sav
sed -i s/${PLAYER_ID}/00000000-0000-0000-0000-000000000001/g Players/${PLAYER_ID}.sav.json
pipenv run palworld-save-tools Players/${PLAYER_ID}.sav.json
mv Players/${PLAYER_ID}.sav Players/00000000000000000000000000000001.sav