0%

PalWorld のセーブデータを解析してわかった事

きっかけ

サーバーにある Palworld のデータはローカルプレイで使える様に移動できるのか疑問だったので調べてわかった事をメモ。

ikuma0366 さんの記事を見て、この情報をベースにセーブデータを覗いてみました。

セーブデータの場所

専用サーバーで遊んだ場合

専用サーバー全体のセーブデータとプレイヤー毎のセーブデータがわかれている。
どちらもサーバー側で保存されているので、プレイヤー側でセーブデータを探しても見つからない。

専用サーバーのセーブデータ

1
PalServer/Pal/Saved/SaveGames/0/<サーバーID>/Level.sav

内容例

情報量が多く json 化すると 数GBの容量になる、中身を覗いてみて、わかった事だけメモ。

  • 接続した事のあるプレイヤー情報
  • 捕獲された後のパル情報
  • 各プレイヤーの最後にいた位置
  • 他にも沢山ありすぎてワロタ
  • その他、プレイヤー毎のセーブデータ以外の情報全て

プレイヤー毎のセーブデータ

1
PalServer/Pal/Saved/SaveGames/0/<サーバーID>/Players/<プレイヤーID※先頭8文字>以降は0.sav
  • ファイル名の例
    1
    813399F0000000000000000000000000.sav

813399F0 という8文字目までを見れば ok

内容例

こっちは情報量が比較的少なく、json 化しても 数KBの容量、中身を覗いてみて、わかった事だけメモ

  • キャラメイクの設定値
  • レシピ アンロック情報(アンロックした事があるレシピのみ記載)
  • ボスの討伐状況(倒した事があるパルのみ記載)
  • パルを捕まえた数(捕まえた事があるパルのみ記載なので全て1以上)
  • 手記の入手状況(入手した事がある手記のみ記載)

このファイル内にプレイヤー名の記載はないため Level.sav から確認するのが確実

コンプリートしたデータを一つ用意できればコンプリートしたデータを他のプレイヤーにコピーする事はできそう

ソロで遊んだ場合

以下のパスにセーブデータが保存されている様ですが、この記事では、この中のセーブデータについては触れてないです。

1
C:\Users\noma3\AppData\Local\Pal\Saved\SaveGames\<ワールドのID>

.sav の中身の見方

.sav は Unreal Engine のゲームで使われるセーブデータではあるものの、Unreal Engine 経由でないと直接中身を見る事が出来ないので、

有志が作成したツール(convert.py)を使って、json 化する必要がある

また、Unreal Engine のゲームは .json をセーブデータとして扱わないので、もしセーブデータを書き換えて使いたいなら .sav に戻してやる必要がある。

このツールの動作には python 3.9 以上が必要との事、一応 3.12 でも動作した。

json 化の方法

1
convert.py "savファイルのパス" --to-json

.sav 化の方法

1
convert.py ".jsonファイルのパス" --from-json

おまけ

Level.sav.json からプレイヤーを探す正規表現

vim で使った正規表現なので サクラエディタ だと少し変わるかも。

1
IsPlayer": {\n.*\": true

これで接続したことのあるプレイヤー名を確認した。

筆者が管理してるサーバーのプレイヤーID.sav 対応表

ファイル名 ユーザー名
813399f0*.sav noma
65332aeb*.sav KOB
06d842d5*.sav sakura
e74926a0*.sav yocha-424
120f57b4*.sav pia24mo
e7574940*.sav にゃんごろげ
98e4c6ac*.sav せつこ
d3a7451e*.sav mavu33