見出し画像

パルワールド Xbox game pass PCからSteamへのセーブ移行について

先日Xbox game pass PCにてサブスクで遊んでいたパルワールドについて、サブスクの初回導入特典である3ヶ月100円のサービスが切れたため、Steam版の買い切りに移行を決めました。

その際にXbox game pass版のセーブデータの移行を考えていて、Google先生を前に余裕の構えを見せてました。
結果的にセーブデータの移行は出来たのですが、紆余曲折あったので、当時の心境を思い出しながら、Noteに記そうと思いました。
※御託は良いからさっさとやり方教えろください。という方は、「セーブデータ移行手順」に飛んでくださいw


第一部:脳死状態でのセーブデータ移行作業

いつも通り、それらしい文言でGoogle先生に問い合わせしました。そしたら出るわ出るわ先人たちの知恵だらけで、いつも通りマニュアル人間と化して、粛々とデータ移行を開始しました。

先人の知恵その1

先人の知恵その2

ところが、実際に試してみると上手くいかない?!
具体的には、セーブデータ移行っぽい感じは出来ているけど、直前まで遊んでいたデータでは無い。古いセーブデータだ!
この感覚を例えるなら、一人残業してコーディングやドキュメントの作成を行い、クラウド上にデータを保存したはずが、ローカルにあるデータの保存をしない状態でクラウドにデータを保存したため、ヘッダコメントやタイトルだけ記載したすっからかんのファイルがクラウドに置かれていたという状況を、翌日見つけたという感じです。

あまりピンと来ない例えは置いておいて、要は血と涙の結晶が消え去ったということです。
Game PassからSteamへのクロスプレイは公式未サポートなので、結局そんなもんか、、、いやそんなことない。まだ諦めるには早いということで、海外ニキ達の知見に頼ることにしました。

第二部:絶望の中での既視感

海外ニキ達のことだから、結局同じように
「palworld xbox game pass save migration steam」みたいな文言でGoogle使えばええんやろという感じで調べました。
「たくさん英語出てくる!何か期待出来るぞ!」と、原因不明のバグのログをそのままGoogleでコピペしたときにStackoverflowのページがトップに出てきたときのような感じで、文面は理解せずともキーワードを見て、何とか対処してみました。
しかし、1文ずつ試してみると、「あれ?やってること日本語のサイトと同じだ。。。」と、軽い絶望を味わいました。海外でも同じだとしたら、もう公式が何とかしてくれるのを待つしか無いのか。。。

そんなとき、業務の中で原因不明のバグの調査担当を経験した感覚が降りてきました。
自分:「調査して、同じような現象の記事を見つけましたが、原因分かりません。対策効きません。すみません」
上司:「じゃあどうするの?これ解消しないと、リリース出来ないよ?」
自分:「知見のありそうな人に聞いてみます」
上司:「了解。なにか分かったら連絡してね」
自分(チャット):「XXXさん。こんな問題が出ていて、XXXまで調査で判明しているのですが、XXXとなる直接原因が分かりません。過去に似たようなケースやなにか気づくことありませんか?」
知見ある人(チャット):「いやー。見たこと無いな。XXXのあたりの記事に似たような現象あるよ」
自分(心の声):「その記事は1週間前に見つけているよ」
自分(チャット):「ご確認ありがとうございます!記事のご共有ありがとうございます。内容確認してみます」
自分:「やっぱやることは同じだよなぁ。何か別口でヒント探さないと。。。」

というね。上司が現場作業を見る余裕もなく、その話を聞いている周りの同僚も自分のタスクがあるから調査の手伝いもしてくれないというプロジェクトチームとは何なのかを考えさせられる感覚です。

今回の場合、所詮ゲームデータなわけで上司や家族から詰められることは無いのですが、何故か中途半端にクローズさせるわけにはいかないという謎の使命感が芽生えました。エンジニアとしてのプライドですかねw

第三部:海外ニキ達の叫び

検索文言を変えたり、Youtubeを片っ端から見たりと、どこかに同じ境遇の人がいないかを探し続けました。
いなかったです。
ということは、ついに詰みかな?という感じです。
そんな中、もう一度手順ミスが無いかSteam版パルワールドの再インストールを行い、先人たちの手順をやり直しました。
その時に、ふと頭の中に「バグの無いシステムは存在しない」という微妙な品質のモジュールをリリースしてしまった際に、顧客の偉い方がフォローしてくれた言葉を思い出しました。
そして、こんかいのセーブデータ移行の肝となる以下のツールがバグっているのでは?という思考に変わりました。

結果的にバグっているどころか、最新版に適用出来ていたというオチなのですが、当時は「バグっててくれ!」という心境で、issueの一覧を見ました。
そうすると、「palworld」というタイトルがありました!

結果的にこのissueが解決のルートとなりました。
頑張って英語を読んでいくと、

「レベル44だったのにレベル41になっているぞ!どうなってんだ!」
「Xboxのサブスク期間切れちゃったけど、解消出来るの?」
「パルワールドのバージョン1.5.1と1.5.2が分岐点だね。互換性もっていないんじゃないの?」
「最新版で解消されるの?一から開始しないといけないんじゃね?」

という私の気持ちを代弁してくれるニキ達がおり、

最後に別のツールを使えば解消出来るぞ。というコメントがあり、それが以下のツールでした。

ツールを見ると、.savデータをJsonに変えてくれるというツールでした。心の中で「Jsonに変える?!そっから何かキーでも指定して、パースでもすんのか?クッソだるいやんけ」と読むのを諦めようとしましたが、そこはエンジニアとしてちょっと頑張ってみました。
そしたらなんてこと無い手順でした。脳死で対応出来ました。
Thank you cheahjs. I'll never forget your such a kind Instructions.

セーブデータ移行手順

  • 以下のURLにアクセスしてXGP-save-extractorをダウンロードしてください。

xgp-save-extractor.exeを選択してください。最新バージョンでOKです。

以下のようなデータが出力されます。
今回はpalworld_xxxxxとなっているデータを使います。

  • palworld_xxxxxを解凍します。

以下のようなデータが出力されます。

解凍したフォルダの直下
0BExxxxから始まるフォルダの中

※この中にある「Level」というフォルダが曲者でした。

  • 以下のリンク先からpalworld-save-toolをダウンロードしてください。


最新バージョンでOKです
  • palworld-save-toolを解凍してください。

以下のようなフォルダが出力されます。

Pythonをインストールしてください。
Windowsの場合は、スタートパネルに「cmd」と入力して、コマンドプロンプトを起動させたあと、「python」と入力すればOKです。

下のWindowsパネルを押下して、上の検索部分に「cmd」を入力するとコマンドプロンプトが出てきます。


インストールされていない場合は、Microsoft storeが起動して最新版のpythonをインストールする画面が表示されます。
既にインストール済の人は、バージョンの確認をしてください。3.9よりも新しければOK。古い場合はアップデートをお願いします。

  • XGP-save-extractorで出力された「Level」フォルダにある「01.sav」ファイルをpalworld-save-tool内にある「convert」にドラッグ&ドロップしてください。

以下の画面が出てきたら、「詳細情報」をクリックすると、下に「実行する」が出てくるので、実行してください。

ちょっと待つと「01.sav」と同じフォルダに「01.sav.json」ファイルが作成されます。

  • 出力された「01.sav.json」ファイルを再度palworld-save-tool内にある「convert」にドラッグ&ドロップしてください。

jsonファイルをsavファイルに変換しようとするので、「既に同じファイルあるけど上書きする?(Yes/No)」と出てくるので、「y」を入力しましょう。

ファイルが作成し直されればOKです。(更新日時が変更されていることを確認してください)

  • データ移行を行います。

前提条件①:steam版で1つセーブデータ用のユーザを作っておいてください。Worldやキャラクターデータも含めてデータ移行するので、全部デフォルトでOKです。起動直後にゲーム終了でOKです。
前提条件②:セーブデータ移行中はパルワールドを停止しておいてください。

①以下のフォルダに移動してください。

%USERPROFILE%/AppData/Local/Pal/Saved/SaveGames

②数値のフォルダに移動してください。

③再度数値のフォルダに移動してください。

④それぞれファイルの③のフォルダへコピーを行います。
XGP-save-extractorで出力されたファイルからは以下のファイルを上書きコピーしてください。
Playersフォルダ
LevelMeta.sav 
LocalData.sav 
WorldOption.sav

次にpalworld-save-toolで作成し直した「01.sav」ファイルを「Level.sav」に名前変更してください。

名前変更した「Level.sav」ファイルを③のフォルダにある「Level.sav」に上書きしてコピーしてください。

⑤Steam版のパルワールドを起動してください。
Xbox game passで構築した全てが反映されたデータでパルワールドを楽しめます!

あとがき

おそらく困っている人がいるだろうということで、英語を翻訳しつつも、何か面白い記事にさせたいという欲求があり、このような形になりました。
技術力で解消したわけではなく、運が良かっただけの結果になりますが、同じような境遇の人がいましたら、参考にして頂ければと思います。

この記事が気に入ったらサポートをしてみませんか?