【パルワールド】マルチプレイから専用サーバーへの移行手順【自宅サーバー】

※当サイトはアフィリエイト広告(Amazonアソシエイト含む)を利用しています。

プログラミング

公式サイトや以下の記事の内容を参考にしています。

最大32人 パルワールド Linux 専用サーバの立て方 - Qiita
現在のパルワールドは「Steam版」のみ専用サーバに接続できます。「Xbox PC Game Pass版」は招待コードを使ったマルチプレイのみ可能で、その場合は最大4人までのプレイに限られます。公式による…

この記事の想定読者は、最初はマルチプレイ(招待コード)で遊んでいたが、人数が増えた、24時間遊びたいなどの理由で専用サーバー(dedicated server)に移行したい方です。

サーバーの設定から、データ移行まで扱います。

自宅サーバーを想定していますが、VPSなどでも動作するはずです。

VPSで作る方はこちらから。


v0.1.2.0(2024/01/21現在)で作成しています。

なお、Linuxのインストール方法についてはこの記事では解説しません。

steam用のユーザーを作成

SteamCMDを安全に実行するために、steamというアカウントを新しく作成し、ユーザーを切り替えます。

$ sudo useradd -m steam
$ sudo passwd steam
$ su steam

SteamCMDのインストール

SteamCMDに必要なパッケージと、SteamCMDをインストールします。

なお、以下に示すコードはubuntuでの例です。

その他のディストリビューションをお使いの方ははこちらの方法でインストールしてください。

$ sudo add-apt-repository multiverse
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install steamcmd

ディレクトリの作成

管理しやすくするためにパルワールド用のディレクトリを作成します。

$ mkdir ~/palworld/

専用サーバーのインストール

専用サーバーをディレクトリを指定してインストールします。

$ steamcmd
steam> force_install_dir ~/palworld/
steam> login anonymous
steam> app_update 2394010 validate
steam> exit

サーバーの起動確認

インストールディレクトリに移動し、シェルスクリプトを実行すると、サーバーが起動します。

$ cd ~/palworld/
$ ./PalServer.sh

もし下記のエラーメッセージが表示された場合

.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory

次の手順を実行してください。

$ mkdir -p ~/.steam/sdk64/
$ ln -s ~/palworld/linux64/steamclient.so ~/.steam/sdk64/

自動起動の設定

サーバーの起動と同時に実行されるように、systemdに登録します。

$ sudo nano /etc/systemd/palworld-server.service
[Unit]
Description=Palworld Dedicated Server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
ExecStartPre=/home/steam/steamcmd/steamcmd.sh +force_install_dir /home/steam/palworld +login anonymous +app_update 2394010 validate +quit
ExecStart=/home/steam/palworld/PalServer.sh port=8211 players=32 -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
Restart=always
User=steam
Group=steam
TimeoutStartSec=300

[Install]
WantedBy=multi-user.target

以上の内容を記載して、Ctrl+S(保存)、Ctrl+X(終了)を押してください。ポート番号やユーザー名、最大プレイヤー人数などは適宜書き換えてください。専用サーバーは初期設定でUDP 8211を使用します。

ExecStartPreの行で起動前に専用サーバーを更新しています。

デーモンをリロードし、自動で起動するように設定します。先程作ったファイルを編集するたびにデーモンのリロードが必要です。

$ sudo systemctl daemon-reload
$ sudo systemctl enable palworld-server.service

サーバーの起動

上から順番に、起動、状態確認、停止のコマンドです。

$ sudo systemctl start palworld-server.service
$ systemctl status palworld-server.service
$ sudo systemctl stop palworld-server.service

ファイアウォールの設定

例としてufwの設定を行います。専用サーバーは初期設定でUDP 8211を使用します。

$ sudo ufw enable
$ sudo ufw allow 8211
$ sudo ufw reload

ポート開放の設定

お使いのルーターでポート開放をしてください。専用サーバーは初期設定でUDP 8211を使用します。

ルーターによっては設定の名称がポートマッピングやポートフォワーディング、静的NATなどの場合もあります。

サーバーへ接続

ゲームクライアントを起動し、「マルチプレイに参加する(専用サーバー)」を選択します。

下部の入力欄に『IPアドレス:ポート番号』を入れ、「接続」を押します。

公式サイトより

自宅内から接続する場合はサーバーのローカルIPアドレス、自宅外から接続する場合はグローバルIPアドレスを入力してください。

サーバーの設定

有志の方が設定ファイルジェネレーターを作ってくれています。

PalwebWorld_Setting_Gen
生成シートPalWorldSetting.iniジェネレーター【ご注意】 このドキュメントは共同編集できるようになっています。入力内容は他の人に見えてしまいます。 ご使用の際は必ず、「ファイル」-「コピーを作成」でマイドライブに保存してご利用ください うっかり値を触った場合は、初期値と同じに戻して、ServerName...

これを使って生成した設定値を、以下のファイルに保存してください。

~/palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

セーブデータの引き継ぎ(サーバー側)

元々招待コードを作っていた人のパソコンにデータが保存されています。

C:\Users\{ユーザー名}\AppData\Local\Pal\Saved\SaveGames\{ユーザーID}\{ワールドID}\

「Players」「Level.sav」「LevelMeta.sav」の3つのファイルを下記のディレクトリにコピーしてください。

~/palworld/Pal/Saved/SaveGames/0/{ワールドID}/

ファイルのコピーにはWinSCPなどを使うと便利です。

なお、v0.1.2.0(2023/01/21現在)の時点では、元々招待コードを作っていた人のデータは引き継げない(?)ので、事前にチェストにアイテムを移動させたり、パルを別の人に譲渡しておいてください。

セーブデータの引き継ぎ(ローカル側)

マルチプレイに参加していた人のパソコンにも先程の場所にローカルデータが保存されています。

C:\Users\{ユーザー名}\AppData\Local\Pal\Saved\SaveGames\{ユーザーID}\{ワールドID}\

ワールドIDはサーバー側の人と共通です。

専用サーバーに一度参加したあと、マルチプレイのワールドIDのフォルダーにある「LocalData.sav」を専用サーバーのワールドIDのフォルダーにコピーしてください。

マルチプレイのホストだった人も「LocalData.sav」をコピーしてください。

コメント

  1. ・。・ より:

    サーバーを立てる予定で、招待コードを作成していた立場です。
    記事の内容的には招待コード側の人はLocalData.savを移さないようですが、LocalData.savを入れるのではうまく動かないってことでしょうか?

    • GardenTreeGardenTree より:

      こちらの記載漏れです。
      マルチプレイのホストの人もLocalData.savをコピーしてください。

  2. 愛餡 より:

    「v0.1.2.0(2023/01/21現在)の時点では、元々招待コードを作っていた人のデータは引き継げない」ってあったけどマルチプレイのホストの人もLocalData.savをコピーすれば引き継げるようになるのかな?

    • GardenTreeGardenTree より:

      マルチプレイのホストの人もLocalData.savをコピーしてください。
      ただし、装備やパルなどは引き継げず、チュートリアルの進行やマップなどが引き継げます。

  3. malt より:

    装備やパルなどは引き継げず、チュートリアルの進行やマップなどが引き継げるとのことなのですが、レベルや振り分けたステータス情報なども引き継がれるのでしょうか。
    単純にパルを含めた「所持品」のデータが無くなるという感じですか?

    • GardenTreeGardenTree より:

      レベルや振り分けたステータス情報なども消えてしまいます。所持品のデータもなくなります。

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