AzureでPalworld専用サーバーへワールド移行!Steam・Xbox Game Passのローカルマルチを移行した手順とハマったポイント

Linux

本記事ではAzureでPalworldサーバーを構築後のデータ移行について執筆する。

Azureでのサーバー構築については別記事で執筆予定。

構築環境

  • Palworld:v1.0.2.101103
  • Azure Ubuntu 24.04 LTS
  • VMサイズ:Standard D4s v3(4vCPU / 16GB RAM)
  • Docker Compose
  • Dockerイメージ:thijsvanloef/palworld-server-docker
  • ホスト:Steam版
  • ゲスト:Xbox Game Pass版

構築の経緯

ローカルマルチではホストがゲームを起動していないと遊べません。そのため、ホストがいない時間でも遊べる環境を作りたいと考えました。

Azureは利用した時間だけ課金されるため、24時間起動しない運用であればVPSより安くなる可能性があります。また、業務でAzureを触る機会があり、基本的な操作には慣れていたことも選んだ理由です。

実現したいこと

  • Azure上にPalworldコミュニティサーバーを構築
  • ローカルマルチのワールドを移行
  • SteamホストとXbox Game Passゲストのデータを引き継ぐ
  • 毎日深夜1時にPalworldサーバー自動シャットダウン

ローカルマルチのワールドを移行

1.移行元ホストがAzureで作った専用サーバーにアクセス。

2.適当にキャラを作り、ゲーム開始後すぐにログアウト。

3.するとAzureサーバーのPlayers配下にplayer IDが格納される。

Pal/Saved/SaveGames/0/xxxxxxxxxxxxxxxx/Players

4.格納されたplayer IDをメモ。これがホスト用のplayer IDと分かるようにする。

┗.sav前の32桁の数字がplayer ID。

5.移行元ゲストがAzureで作った専用サーバにアクセス。

6.適当にキャラを作り、ゲーム開始後すぐにログアウト。

7.格納されたplayer IDをメモ。これがゲスト用のplayer IDと分かるようにする。

8.Palworld Save Converter | TroubleChute Hubで移行元ワールドデータを変換する。

STEP 1

移行元ホストのworldフォルダをアップロード。

C:\Users\ユーザ名\AppData\Local\Pal\Saved\SaveGames\XXX\32桁の英数字

すると移行元のプレーヤー情報が表示される。

STEP 2

メモしたホスト用のplayer IDを右側に張り付ける。

STEP

メモしたゲスト用のplayer IDをNew player ID (optional)に張り付ける。

その後チェックを入れ、Convertを押下。

すると、変換後のワールドデータが指定したフォルダへ出力される。

9.変換したフォルダの中身をAzureのワールドフォルダ配下に上書きする。

※上書きの前にAzureのパルワールドコンテナを停止してください。

※重要

ワールドデータをコピーする際は WorldOption.sav はコピーしないこと をおすすめします。

このファイルにはサーバー設定も保存されており、コピーするとSERVER_NAMEなどが反映されない原因になる場合があります。

10.パルワールドコンテナ起動。

docker compose up -d 

11.ゲームにログインしてデータ移行できてるか確認。

キャラクター作成に飛ばなかったら成功です。


ハマったポイント① サーバー名が変更されない

症状

PalWorldSettings.ini にサーバー名が反映されているのに、ゲーム内では Default Palworld Server のまま表示される現象が発生。

原因

移行元から

WorldOption.sav

をコピーしていため。

解決方法

docker compose down 

パルワールドコンテナ停止。

WorldOption.sav

を退避(リネーム)

WorldOption.sav.bak
docker compose up -d 

パルワールドコンテナ起動。

ゲームを開始し、コミュニティサーバーにて設定したサーバ名を検索。

コミュニティサーバー一覧で、設定したサーバー名を検索し正しく表示されることを確認。


ハマったポイント② 最大人数が32人のまま

使用した thijsvanloef/palworld-server-docker では、MAX_PLAYERS は反映されず、PLAYERS を使用する必要がありました。

compose.yaml

MAX_PLAYERS: "2"

では変更されなかった。

PLAYERS: "2"

が正しい。

PalWorldSettings.ini

ServerPlayerMaxNum=2

になっていることも確認。


ハマったポイント③ SCPでコピーできない

ゲームデータを移行元pcからAzureへ移行する際、コマンドラインでSCP転送を試みました。

しかしSCPコマンドでは公開鍵認証で苦戦したため、GUIで操作できるWinSCPを利用しました。

WinSCPを使う場合はAzureの秘密鍵pemファイルをppkファイルに変換が必要です。

後日別記事で執筆予定。


移行結果

  • キャラクター:〇
  • 拠点:〇
  • パル:〇
  • ワールド:〇
  • サーバー名:〇(WorldOption.sav対応後)
  • マップ:拠点は表示されるが、大部分が未踏に。要検証。

まとめ

Azureへ移行したことで、ホストPCを起動しなくてもゲームを開始できるようになり、2人で遊ぶ環境がかなり快適になった。

ローカルマルチからAzure専用サーバーへの移行自体は問題なく行えた。

一方でマップが拠点以外未踏になってしまった。

一番苦戦したのは、WorldOption.sav がサーバー設定を保持していたことです。

PalWorldSettings.ini ではサーバー名を変更できていても、WorldOption.sav をコピーしているとゲーム内では Default Palworld Server のまま表示されました。

コミュニティサーバーでは同じ名前のサーバーが複数表示されるため、自分のサーバーを判別しづらくなります。

defaultで検索するとたくさんでてくる↓

同じ症状で困っている方は、WorldOption.sav をコピーせずに移行する、もしくは一度退避してからサーバーを起動してみてください。

私の環境ではこれで Default Palworld Server の問題が解消し、設定したサーバー名で正常に表示されるようになりました。

コメント

タイトルとURLをコピーしました