パルワールド、やっていますでしょうか。
マルチプレイサーバー(4人までのサーバー)でやっていたけど人が増えて専用サーバー(32人までのサーバー)に移行したい…
そんな方もいるかと思います。
現在(2024/1/25時点)ではそのままマルチプレイサーバーのファイルを専用サーバーにコピーするだけではホストのプレイヤーデータが移行できません。
今回はその対処法を含めて書いていこうと思います。
事前にバックアップなどは取っておいてください。
ちなみに結構面倒です…
※2024/1/25時点での方法となるためアップデートなどで不具合などがあるかもしれません。
追記:GUI形式で実行できるツールも登場しました。(実行方法はGitHub参照)
こちらを使用するほうが簡単にセーブの移行が可能かと思われます。
詳しい手順はGithubページの手順を参照してください。
2024/2/9 追記:GUI形式で実行するツールの方法に記事を変更しました。
参考記事↓(詳しい説明はここを読んだほうがいいかも)
マルチプレイサーバーでギルドを脱退し、専用サーバーを起動
移行元のサーバーであるマルチプレイサーバーでホストの方でギルドの作成者の場合はギルドリーダーを他の方に譲り、ギルドを脱退しておいてください。
その後、必要なファイルを生成させるために一度サーバーを起動しておきます。
フォルダの確認
マルチプレイサーバーのデータが保存されているフォルダを確認しておきます。
C:\Users\ユーザー名\AppData\Local\Pal\Saved\SaveGames
などにあるかと思います。(Steamのローカルフォルダの閲覧などから探してください)
そこにある数字の羅列のフォルダに入るとそこにワールドデータが保存されているフォルダがあります。
ここでは
6EE3BC1647210F0D491167B55B424526(数字はランダムなので表示されている名前は違うと思います)
というフォルダがありますのでそれを使用していきます。
この中に
backup
Player
Level.sav
LevelMeta.sav
LocalData.sav
WorldOption.sav
があれば大丈夫です。
ここでワールドのファイルはバックアップを取っておき先程のフォルダ名6EE3BC1647210F0D491167B55B424526(数字は人によって異なる)
をコピーしておいてメモ帳などに控えておいてください。後で使用します。
サーバーの設定を変更する
次に専用サーバーのフォルダ(…\PalServer\Pal\Saved\Config\WindowsServer)に移動し、
そこにある「GameUserSettings.ini」を開きます。
DedicatedServerName= という行があるのでメモしたフォルダの名前に変更します。
次に専用サーバーのフォルダ(…\PalServer\Pal\Saved\SaveGames\0)に移動し、
そこにあるフォルダの名前を先程メモしたフォルダの名前 6EE3BC1647210F0D491167B55B424526 に変更します。
ファイルを移動させる
WorldOption以外の
すべてのデータを古いマルチプレイサーバーから新しい専用サーバーにあるフォルダに移動させます
その後専用サーバーを起動しホストのプレイヤーが専用サーバー入りキャラを作成しておきます。
Playerフォルダに新しいファイルが作成されたことを確認してください。
何個かファイルがありますが古いホストのセーブデータ(000000…1.sav)と
先ほど新しく作成したsavファイル(********…000.sav)があれば大丈夫です。
新しく作成したファイルは更新日時などで判断してください。
この時点ででホスト以外のセーブデータは転送できたので
ホストのセーブデータを転送させる手順に入ります。
必要な実行ファイルのダウンロード及びホスト移行の実行
ここからホストのセーブファイルを移行させていきます。
こちらのファイルをダウンロードしてください。
Assetsをクリックして「palworld-host-save-fix.exe」をクリックします。
不審なダウンロードをブロックしましたと出ますがウイルスなどは入ってないので
続けてダウンロードしてください。
ダウンロードする場所は適当な作業しやすいフォルダなどにダウンロードしてください。
続けて、先ほどマルチプレイサーバーのデータをコピーしてきた専用サーバーのすべてのファイルを
同じフォルダにコピーしてください
「palworld-host-save-fix.exe」を起動します。
「Windows によって PC が保護されました」と出ますが詳細情報をクリックして実行します。
↑このようなウインドウが出たら「Browse」をクリックして
先ほどコピーしてきたファイルの「Level.sav」を選択します。
選択後、処理が始まるのでしばらく待ちます。
ここでウィンドウが応答なしになっても処理は続いているので消さないでください。
処理が終わると選択できるタブが2つ出てくると思います
上の選択タブでは古いマルチプレイサーバーでのホストプレイヤーを選択、
下の選択タブでは新しい専用サーバーでのホストプレイヤーを選択
新しい専用サーバーのホストプレイヤーはレベルが0なのでわかりやすいと思います
正しく選択できていることを確認できたら「Migrate」をクリック。
その後確認ウィンドウが出てくるのでOKをクリックします。
処理が始まるのでしばらく待ちます…
このような表示が出たら処理完了です。
OKを押して閉じます。
フォルダにあるexeファイル以外をコピーします
コピーできたら専用サーバーの中のファイルを置き換えるように貼り付けます
置き換えが完了したら実際に専用サーバーに入ってキャラを確認します。
引き継げていることを確認したら作業は完了となります。
まとめ
自分のメモも兼ねてこの記事を書かせていただきました。
こんなことをしなくてもファイルを移すだけですべてのプレイヤーのセーブデータがコピーできるようになればいいのですが現時点では面倒な手順をこなす必要があります。
セーブ関連でのバグも多く専用サーバーでオフラインのプレイヤーがいる状態で他のプレイヤーがギルドを抜けるとオフラインのプレイヤーがサーバーに入る際、無限ロードが発生するらしいです。
いいゲームなのでこのあたりのバグは勿体無く感じます。
出て間もないゲームなので早く修正が来てほしいです。
必要なファイル、ソフトのダウンロード
ここからホストのセーブファイルを移行させていきます。
こちらのファイルをダウンロードして解凍してください。(右上の緑のボタン「Code」から)
このツールpalworld-host-save-fixを使ってセーブデータの転送を行います。
Githubのページにも使い方は書かれていますがここにも書いていきます。
Pythonを使用するためPythonをインストールしておいてください。
MicrosoftStoreなどからインストールするのが一番楽かと思われます。
次に こちら のサイトにアクセスして「rustup-init.exe」をダウンロードします。
Windowsは青い文字で書かれたrustup-init.exeを押せばダウンロードできます。
その後ダウンロードしたファイルを開きインストールを進めていきます。
未インストールの場合VisualStudioも追加でインストールされます。
その後もう一度 1 を選択すればRustがインストールされます。
次に管理者としてコマンドプロンプトを開き、次のコマンドを実行します。
cargo install --git https://github.com/trumank/uesave-rs.git
Unreal Engine のセーブデータを解凍するツールがインストールされます。
インストールが完了したらいったんコマンドプロンプトは閉じます。
palworld-host-save-fixを実行する
palworld-host-save-fixを実行するために適当な場所に一時フォルダを作成しておいてください。
ここではCドライブ直下に作成しました。(フォルダの名前はPalWorldHostSaveFixとしました)
そこに先ほど解凍したpalworld-host-save-fixの中にある fix-host-save.py を入れます。
同じ場所に古いマルチプレイサーバーの中のデータを入れます。
その後「Player」フォルダーに入り
この記事の「専用サーバーでプレイヤーを作成し、サーバーの設定を変更する」で最後に別の場所に退避させたファイルを入れます。
この時点で「Player」フォルダ内に
古いマルチプレイサーバーでのホストのセーブ「000000000000000000001.sav」
新しい専用サーバーで作られたセーブ「XXXXX00000000000.sav」
の2種類があれば大丈夫です。
管理者としてコマンドプロンプトを再度開きcdコマンドで作成したフォルダに移動します。
cd C:\PalWorldHostSaveFix
ここでPythonスクリプトを実行していきます。
次のコマンドを実行する必要があります
python fix-host-save.py <uesave.exe> <save_path> <host_guid>
<>で囲われている引数について解説していきます。
<uesave.exe>
コマンドでダウンロードしてきたUnrealEngineのセーブデータを回答するソフトuesave.exe
の場所を指定します。
自分の場合「C:\Users\ユーザー名\.cargo\bin\uesave.exe」になりました。
<save_path>
文字通りセーブデータのパスを指定します。
ここでは作成したフォルダにセーブデータを入れたため
「C:\PalWorldHostSaveFix」になります。
<host_guid>
ホストのプレイヤーIDを入力します。
この記事の「専用サーバーでプレイヤーを作成し、サーバーの設定を変更する」で最後に別の場所に退避させたファイルの名前を入力します。
仮に「XXXXX00000000000」とします。
まとめると
python fix-host-save.py C:\Users\ユーザー名\.cargo\bin\uesave.exe C:\PalWorldHostSaveFix XXXXX00000000000
となります。
これをコマンドプロンプトに入力し、実行すると(画像小さくてすみません…)
バックアップを取るように通知する警告が表示されるので Enter を押して続行します。
すると処理が始まるので1,2分くらい待ちます。
Fix has been applied! Have fun! と表示されるまで待ち、表示されたら処理完了となります。
処理が完了したら一時フォルダ「C:\PalWorldHostSaveFix\Players」フォルダの中身のsavファイルを
専用サーバーの「Player」フォルダにコピーします
その後専用サーバーを念の為バックアップした後開きます。
すると進行状況がマルチプレイサーバーの状態になっているはずです。
以上で移行は完了となります。
コメント
cargo install –git https://github.com/trumank/uesave-rs.git
ではなく、
cargo install –git https://github.com/trumank/uesave-rs.git
かと思います。
コメントありがとうございます。
ブログの仕様上コードブロックにしないと2連続でハイフンがあった場合1つの文字になってしまうようです…
コメントのお陰で気付く事ができ、修正させていただきました。
「palworld-host-save-fixを実行する」のところで私の環境下では手順通りのスクリプトを入力すると
fix-host-save.py
と出てしまいうまく進行することができません。newとoldの値についてご教唆いただけると幸いです
コメントありがとうございます。
エラーの文章は「fix-host-save.py」の一文だけでしょうか?
一文だけではエラーの原因が特定しにくのですが、
ありそうなエラーとしては
1.C:\PalWorldHostSaveFix (実行するフォルダ)内に fix-host-save.py が存在しない
2.C:\PalWorldHostSaveFix (実行するフォルダ)内に Level.sav が存在しない
Level.savも必要なファイルの一つです。
古いマルチプレイサーバーからコピーして実行するフォルダ内に配置してください。
3.C:\PalWorldHostSaveFix (実行するフォルダ)内に 「Player」フォルダ が存在しない
C:\PalWorldHostSaveFix\Player が必要になりそこに
古いセーブデータ「00000000000000000000000000000001.sav」と
新しいセーブデータ「XXXXXXXX000000000000000000000000.sav」(こちらの名前はランダム)
を配置します。
4.「Player」フォルダ内に正しいファイルがない
「Player」フォルダ内には古いホストセーブデータ
「00000000000000000000000000000001.sav」 と
専用サーバーに入った際に生成される新しいセーブデータ
「XXXXXXXX000000000000000000000000.sav」(こちらの名前はランダム)
の2つが必要になります。
5.コマンド名やフォルダパスが間違っている。
ブログ内のものをそのままコピーして使用すると機能しません。
自分の環境に合わせたフォルダパス、GUIDを使用してください。
などが挙げられます。
また動画で手順を確認するのも有効かもしれません。
https://www.youtube.com/watch?v=B7U-BkYYjy0
この動画は当ブログとはフォルダ構造などは違いますが文字より理解がし易いかもしれません。
少し早いので一時停止しながら見たほうがいいかもしれません。
Pythonスクリプトを実行するのところで、python3.12.1をインストール済みにも関わらず「python」とだけ出て何も起きません。
元のページにはpython3とだけ書かれていたのですが、バージョン等の指定はありますでしょうか?
コメントありがとうございます。
Pythonのバージョンに特に指定はありませんでしたがpython3.12.1なら動くと思われます。
恐らくなのですが「Python」とだけ表示される場合、アプリ実行エイリアスが関係しているかもしれません。
Windows11の場合。
設定→アプリ→アプリの詳細設定→アプリ実行エイリアス
からpython.exeとpython3.exeの2つだけオフにしてみてください。
それでも改善しなければPythonの再インストールなどを試してみてください。
自分はMicrosoftStoreからPython3.12をダウンロードしましたが問題なく動作しました。
データの移行はできましたが、キャラデータの移行ができず新規で作成されました。
マルチプレイサーバーで作成したキャラデータの移行方法はありますでしょうか。
コメントありがとうございます。
マップデータやホスト以外のセーブデータはスクリプトを使用しなくても使用できるためその場合だとスクリプトがうまく実行できていない可能性があります。
このブログ記事
もしくはこのRedditポストを翻訳すれば参考になるかもしれません
https://www.reddit.com/r/Palworld/comments/19cb8su/complete_guide_to_transfer_a_coop_save_file_incl/
また、この記事で紹介したツールよりも開発が進み使いやすくGUIで操作できるツールも登場しました。
https://github.com/JannikBirn/palworld-host-save-fix
この記事の手順と少し異なる部分はありますがGithubのページをGoogle翻訳などで翻訳すれば
わかりやすい手順が書かれています。
こちらの記事を元に実行したところ、
マップデータのみ移行されてレベルやパル、ファストトラベルなどが引き継がれていない事象が起きています。
投稿主様はこう言ったことなく移行できておりますか?
また、解決に向けた心当たりあればお教えいただきたいです
コメントありがとうございます。
ファイルの仕様上マップデータやホスト以外のセーブデータはスクリプトを使用しなくても使用できるためその場合だとスクリプトがうまく実行できていない可能性があります。
私の環境
Python3.12(MicrosoftStoreでダウンロードしました)
Windows11
で実行しましたが問題なく動作しました。(手順はこのブログと同じやり方)
このRedditポストのコメント欄などを翻訳すれば参考になるかもしれません。私もここを参考に行いました。
https://www.reddit.com/r/Palworld/comments/19cb8su/complete_guide_to_transfer_a_coop_save_file_incl/
fix-host-save.pyを実行すると、エラーが出ます。
Traceback (most recent call last):
File “C:\Users\pc\Documents\palworld saved\fix-host-save.py”, line 244, in
main()
File “C:\Users\pc\Documents\palworld saved\fix-host-save.py”, line 43, in main
temp_new = str(int(new_guid[x-1] + new_guid[x], 16))+’,\n’
IndexError: string index out of range
コメントありがとうございます。
244行目のエラーはかなり多くの方が発生しているらしいのですが明確な原因はまだわかっていません。
恐らくPythonのバージョンが違うなどの原因かもしれません。
既にMicrosoftStoreのPython3.12を使用している場合、原因はわかりません。
使用していない場合こちらのPythonに切り替えてみてください。
また、このRedditポストを翻訳すれば参考になるかもしれません
https://www.reddit.com/r/Palworld/comments/19cb8su/complete_guide_to_transfer_a_coop_save_file_incl/
Fix has been applied! Have fun! と出て、ファイルを専用サーバーの方に移してサーバーに入ったのですが、キャラクリ画面から始まってしまいます。解決方法がありましたら教えていただきたいです。
コメントありがとうございます。
スクリプトが成功は成功しているのでそれ以外の問題かもしれません。
サーバー側の設定で-nosteamを使用している場合新しいキャラデータとなってしまいます。
もしくはWindowsからLinuxのサーバーに移行する場合は恐らく機能しないです。
凄く助かる記事をありがとうございます
もし見落としていたらごめんなさい
これゲスト側の人も一度サーバーに入ってキャラデータを取得して混ぜる作業が必要ですか?
コメントありがとうございます。
ホストのプレイヤーIDを知ることが目的なため
専用サーバーを作成して入るのはホストのみで大丈夫です。
こんばんは。
逆に専用サーバーのワールドを、マルチやソロ用として移行することはできますか?
コメントありがとうございます。
こちらのツールを使えば可能かもしれません。
https://github.com/JannikBirn/palworld-host-save-fix
詳しい手順はGithubページの手順を参照してください。
https://github.com/JannikBirn/palworld-host-save-fix/releases
ページのAssetsからexeファイルをダウンロードできます。
問題が起きてしまいました
最後のコマンドプロンプトのデータ結合に成功し、そのデータをサーバー側に移動しました
そしてサーバーに入るとキャラクリから始まってしましました
もしかしてサーバーのデータの中に古い方の00000~1のデータも必要でしょうか?
また、他のコメントに同じ内容があったので参考にしようかと思いましたが、-nosteamというのを使っている場合になるということでしたがデフォルトでそうなっているのでしょうか?
ワールドのコンフィグとサーバーのコンフィグを見ましたがそのような文字列は含まれていませんでした
steam版でプレイしています
コメントありがとうございます。
移行し終えた後であればサーバーのデータの中に古い方の00000~1フォルダは不要です
が移行するフォルダ(スクリプトを実行する際の「Player」フォルダ)には必要になります。
-nosteamはじぶんから入力しなければ入ることは無いと思います。
どうしても成功しないのであればスクリプトを変えて
https://github.com/JannikBirn/palworld-host-save-fix/releases
こちらのexeファイルの使用をおすすめします。
つい最近出たツールですがこちらの記事のスクリプトよりも遥かに簡単に実行できます。
※実行する前には必ずバックアップを取っておいてください。
簡単に使い方を説明すると
1. exeを起動したあと「browse」ボタンを押し
専用サーバーのワールドデータ内にある「Level.sav」を選択
2. 選択してすぐ処理が開始されるので暫く待つ
(応答なしになっても処理は継続しているので消さないでください)
3. 処理が完了したらワールドのプレイヤーデータがロードされます
表示が変わりプレイヤーを選択するタブが2つ表示されるので移行したいプレイヤーを選択
上が移行したいプレイヤーデータなので前のホストの名前とレベルのプレイヤーを選択してください
下が上書きされるプレイヤーデータなので新しく作成したホストのプレイヤーを選択してください(なにもしていなければLvl.0と表示されていると思います)
下のプレイヤーデータは削除されるため下のプレイヤーデータを選択する際は注意してください。(バックアップを取っているのであれば大丈夫です)
4. Migrateを押しOKを押すとプレイヤーをデータの移行が開始されます
暫く待つと新しいタブがでてきてFinishedと表示されているなら完了となります。
あとは専用サーバーを開いてホストのデータが正しく移行されていることを確認してください。
文字でわかりにくければ動画を上げてくれている方もいるためこちらも参考になるかもしれません
https://www.youtube.com/watch?v=Uhq9dYvnQ68
python fix-host-save.pyのところを私の環境に書き換えて走らせると
python fix-host-save.py <uesave.exe> <save_path> <new_guid> <old_guid> <guild_fix>
と出て進みません。
初心者なので丁寧に教えていただけると幸いです。
お願いします。
コメントありがとうございます。
こちらのブログで紹介しているスクリプトにもアップデートが入りコマンドにも変更があったようです。
時間が経って使いやすいツールも登場したので
初心者の方であればこちらのexeファイルの使用をおすすめします。
https://github.com/JannikBirn/palworld-host-save-fix/releases
つい最近出たツールですがこちらの記事のスクリプトよりも遥かに簡単に実行できます。
※実行する前には必ずバックアップを取っておいてください。
簡単に使い方を説明すると
1. exeを起動したあと「browse」ボタンを押し
専用サーバーのワールドデータ内にある「Level.sav」を選択
2. 選択してすぐ処理が開始されるので暫く待つ
(応答なしになっても処理は継続しているので消さないでください)
3. 処理が完了したらワールドのプレイヤーデータがロードされます
表示が変わりプレイヤーを選択するタブが2つ表示されるので移行したいプレイヤーを選択
上が移行したいプレイヤーデータなので前のホストの名前とレベルのプレイヤーを選択してください
下が上書きされるプレイヤーデータなので新しく作成したホストのプレイヤーを選択してください(なにもしていなければLvl.0と表示されていると思います)
下のプレイヤーデータは削除されるため下のプレイヤーデータを選択する際は注意してください。(バックアップを取っているのであれば大丈夫です)
4. Migrateを押しOKを押すとプレイヤーをデータの移行が開始されます
暫く待つと新しいタブがでてきてFinishedと表示されているなら完了となります。
あとは専用サーバーを開いてホストのデータが正しく移行されていることを確認してください。
文字でわかりにくければ動画を上げてくれている方もいるためこちらも参考になるかもしれません
https://www.youtube.com/watch?v=Uhq9dYvnQ68