今回は今人気のゲーム、Palworldのゲームサーバー構築について書こうとおもいます。
CentOS7や8の更新が打ち切られるということで、CentOS系の派生であるRockyLinuxを導入してみた。
現在発売されてるPalworldは?
!結論 現在はクロスプレイができず、マルチするならSteam版を購入して下さい!
(2024年1月24日現在)
!発売されてるPalworldは大きくわけて2種類存在し、Steam版とXbox Game Pass版があります!
!Steam版のみサーバーに接続でき、Xbox Game Pass版は招待コードを使用しアクセスする方法です!
!Xbox Game Pass版は招待コード制で、マルチは4人までしかできません!
今回はその構築方法をLinux(RockyLinux)版で紹介する。
システム要求 | |
CPU | 2 vCPU (公式推奨は4コア以上) |
Memory | 公式推奨 16GB以上 安定稼働 32GB(サーバー起動のみで8GBのメモリーを消費します) |
Storage | ゲームサーバーデータはおよそ10GB程度 |
OS | WindowsとLinux |
Internet | ブロードバンドインターネット接続。ポート開放必要(デフォルト:8211 UDP) |
1.OSを最新にしよう
1 |
# dnf -y update |
その後、再起動しておきましょう。
1 |
# reboot |
2.SELinuxを無効化する
CentOSにはセキュリティ対策としてSELinuxというものが用意されています。SELinuxを適切に設定することでより強固なサーバを構築することができるのですが、今回はSELinuxを無効にしておきます。
1 |
# getenforce |
Enforcingになってる場合のみ以下のコマンドを入力する。
すでにPermissiveになってたらコマンド不要。
以下のコマンドで無効化します。
1 |
# setenforce 0 |
3.一般ユーザーを作成します
ここではpalworldというユーザーを作成する
設定するユーザー名は自由です
1 2 |
# useradd palworld # passwd palworld |
パスワードは任意で設定してください。
ユーザーにSudo権限を付与する
1 |
sudo usermod --append -G wheel palworld |
4.SteamCMDのインストール
palworldユーザーになる
1 |
su - palworld |
5.SteamCMDをインストールするディレクトリを作成する
ここではSteamCMDを格納するフォルダとゲームを格納するフォルダを作成します。
1 |
$ mkdir Steam |
palworldを格納するフォルダも作成する
1 |
$ mkdir pal |
6.SteamCMDをインストールする
glibc.i686 libstdc++.i686 tar をインストールします
1 2 3 4 5 |
sudo dnf install perl-Compress-Zlib curl lsof glibc.i686 libstdc++.i686 bzip2 $ cd Steam $ curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - $ cd |
7.palworld のサーバーをインストールする
ここから実行する作業は時間がややかかります。
Steamからデータをダウンロードするのでややかかるので気長に待ちましょう。
1 2 3 |
$ cd Steam $ ./steamcmd.sh |
実行するとプロンプトが変わり、 Steam> の表記になります。
そのまま実行すれば大丈夫です。
8.ユーザー認証不要な、anonymous でログインする
1 |
login anonymous |
9.ゲームサーバーをインストールする場所を決める。今回は先程作ったフォルダに格納する
1 |
force_install_dir /home/palworld/pal |
10.palworldのApp IDを指定してインストールする
1 |
app_update 2394010 validate |
(ここで時間がかかります。お茶でも用意してゆっくり待ちましょう)
すべてダウンロードできて数字が100%になったら終了しましょう。
[ 0%] Checking for available update…
[—-] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (0 of 59782 KB)…
[ 0%] Downloading update (3057 of 59782 KB)…
[ 5%] Downloading update (7090 of 59782 KB)…
[ 11%] Downloading update (9608 of 59782 KB)…
[ 16%] Downloading update (12122 of 59782 KB)…
[ 20%] Downloading update (14868 of 59782 KB)…
…
[ 98%] Downloading update (59782 of 59782 KB)…
[100%] Download Complete.
1 |
quit |
11.サーバーを起動してみる(確認)
サーバー起動をしてみます。
ここでは一度エラーが出ますが、回避方法も載せておきます。
インストールディレクトリーへ移動
1 |
cd /home/palworld/pal |
起動確認します
1 |
./PalServer.sh |
$ ./PalServer.sh
Shutdown handler: initalize.
Increasing per-process limit of core file size to infinity.
sh: line 1: xdg-user-dir: command not found
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
dlopen failed trying to load:
/home/steam/.steam/sdk64/steamclient.so
with error:
/home/steam/.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Sys_LoadModule failed to load: /home/steam/.steam/sdk64/steamclient.so
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
dlopen failed trying to load:
/home/steam/.steam/sdk64/steamclient.so
with error:
/home/steam/.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Sys_LoadModule failed to load: /home/steam/.steam/sdk64/steamclient.so
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
dlopen failed trying to load:
/home/steam/.steam/sdk64/steamclient.so
with error:
起動するとエラーが連発すると思います。
その場合の回避方法は以下の通りです。
12.エラーが出た場合の回避方法
1 |
mkdir -p ~/.steam/sdk64/ |
再度、Steamにログインし、追加ファイルをDLする
1 2 3 4 5 6 7 8 |
$ cd Steam $ ./steamcmd.sh Steam> login anonymous Steam> app_update 1007 Steam> quit |
13.再度起動してみる
1 2 3 |
cd /home/palworld/pal ./PalServer.sh |
[palworld@localhost ]$ ./PalServer.sh
Shutdown handler: initalize.
Increasing per-process limit of core file size to infinity.
sh: line 1: xdg-user-dir: command not found
dlopen failed trying to load:
steamclient.so
with error:
steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Loaded ‘/home/steam/.steam/sdk64/steamclient.so’ OK. (First tried local ‘steamclient.so’)
CAppInfoCacheReadFromDiskThread took 4 milliseconds to initialize
dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
Setting breakpad minidump AppID = 2394010
[S_API FAIL] Tried to access Steam interface SteamUser021 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface SteamFriends017 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface STEAMAPPS_INTERFACE_VERSION008 before SteamAPI_Init succeeded.
[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils004 before SteamAPI_Init succeeded.
1-2行エラーが見えますがここは問題ないです。
with error:
steamclient.so: cannot open shared object file: No such file or directory
14.PalServer.shにオプションを追加してみる
これは任意ですが、オプションを入れることで設定を編集できます。
実行ファイルが格納されてる palの中にあるPalServer.shを編集し、オプションを入れることが可能です。
PalServer.shのオプション | |
port=8211 | サーバーの待ち受けに使うポート番号を変更します。 |
players=32 | サーバーの最大参加人数を変更します。 |
-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS | マルチスレッドCPU環境において性能を向上させます。 最大で4スレッド程度まで効果がありこれ以上のスレッド数を割り当ててもあまり意味がありません。 |
-publicip | -publicip=X.X.X.X サーバーが立っているネットワークのグローバルIPアドレスを手動で指定することができます。 指定しない場合は自動的に検出されます。うまく機能しない場合は手動設定を試してみてください。 |
EpicApp=PalServer | コミュニティサーバーとして設定します。変更してはいけません。 |
15.Systemdに登録する
OSが無事に起動することが確認できたら、自動で起動できるようにsystemdに登録します。
1 |
sudo vi /etc/systemd/system/palworld-dedicated.service |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[Unit] Description=Palworld Dedicated Server Wants=network-online.target After=syslog.target network.target nss-lookup.target network-online.target [Service] ExecStart=/home/palworld/pal/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=palworld Group=palworld TimeoutStartSec=300 [Install] WantedBy=multi-user.target |
16.ゲームの起動・自動起動・再起動
自動起動をON
1 |
sudo systemctl enable palworld-dedicated.service |
リロード
1 |
sudo systemctl daemon-reload |
Server自体の起動
1 |
sudo systemctl start palworld-dedicated.service |
Serverを停止
1 |
sudo systemctl stop palworld-dedicated.service |
Serverのステータスを確認したいとき(状態)
1 |
systemctl status palworld-dedicated.service |
17.ポート開放をする
palworldのゲームはUDP 8211(変更可)を開放します。
デフォルトの8211で設定した場合は以下の通りに開放しましょう。
1 2 3 |
sudo firewall-cmd --permanent --add-port=8211udp sudo firewall-cmd --reload |
構築方法は以上になります。
次回の記事ではサーバーの設定方法と、自動起動の方法等を解説していきます。
閲覧数 451 件
What do you think?
You must be logged in to post a comment.