AWS IT ゲーム パルワールド

AmazonLinux2でPALWORLDサーバーを設定する

以前、AWSでPALWORLD用のサーバーを建てる方法を紹介しました。本記事ではPALWORLDサーバー内の設定を説明します。

Qiita: 最大32人 パルワールド Linux 専用サーバの建て方 (AlmaLinux)にわかりやすくまとめられていますが、Amazon Linux 2に設定する場合だと若干コマンドが違ったりしたのでパルワールドサーバーを設定した方法を公開します。

サーバーへ接続

SSMセッションマネージャを使用して接続します。

 $ aws ssm start-session --target <EC2インスタンスのID>

SteamCMDのインストール

Valve Developer Comunityを参考に設定していきます。

以下コマンドで必要なパッケージのインストールをします。

$ sudo yum install glibc.i686 libstdc++.i686

続いてSteamユーザの作成をしてパスワードを変更します。

$ sudo useradd -m steam
$ sudo passwd steam

rootユーザのままsteamcmdを起動することはセキュリティリスクがあるのでご注意ください。この手順にあるようにrootとは別のユーザで実行するようにしましょう。

Steamユーザにスイッチ します。

$ sudo -u steam -s

ホームディレクトリに移動して、作業ディレクトリを作成します。

$ cd /home/steam
$ mkdir ~/Steam && cd ~/Steam

以下コマンドでLinux用のSteamCMDをダウンロードします。

$ curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

インストール用のスクリプトを実行します。

$ ./steamcmd.sh

プロンプトにSteam>と表示されれば成功です。
exitコマンドで一旦抜けておきます。

> exit

パルワールドサーバーのダウンロードと起動

ここからはパルワールドのテックガイドを参考に設定します。

下記コマンドで専用サーバーをダウンロードします。

/home/steam/Steam/steamcmd.sh +login anonymous +app_update 2394010 validate +quit

ダウンロードしたディレクトリに移動します。通常は以下にダウンロードされています。

cd ~/Steam/steamapps/common/PalServer

サーバーを起動します。

./PalServer.sh

steamclient.soに関するエラーが表示された場合

サーバー起動のコマンドを試してみると以下のエラーが表示されました。

/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

パルワールドのテックガイドにも次の通り案内があります。

この手順をサーバー運用後に実施するとキャラクター再作成からゲームがスタートします。 すでにプレイ中のサーバーでは実施しないことをおすすめします。

https://tech.palworldgame.com/dedicated-server-guide#windows-steamcmd

以下のコマンドで修正できるようですが、すでにプレイ中のサーバーで実施しないようご注意ください。

$ mkdir -p ~/.steam/sdk64/
$ /home/steam/Steam/steamcmd.sh +login anonymous +app_update 1007 +quit
$ cp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/

このあとサーバー起動するとエラーは出ていますが、問題なく動作しました。

$ ./PalServer.sh
Shutdown handler: initalize.
- Existing per-process limit (soft=65535, hard=65535) is enough for us (need only 65535)
Increasing per-process limit of core file size to infinity.
sh: 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 2 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.

ポートは以下の記事でセキュリティグループで解放済みですので、このままPALWORLDサーバーに接続可能です。

PALWORLDから接続してみよう

設定したサーバーに対して、PALWORLDからアクセスしてみます。

サーバーの グローバルIP(EC2のパブリックIP):8211 を入力して、接続します!

正常に動作していれば接続できるはずです!
もし接続できない場合は接続先のIPアドレスが正しいか、また、サーバー上でなにかエラーが出ていないかを確認します。

OS起動時にパルワールドサーバーが自動起動するようにする

steamユーザである場合は一度exitして、rootユーザになっておきます。

viでサービス定義ファイルを作成します。

sudo vi /etc/systemd/system/palworld-server.service

ファイルの中身は以下の内容を設定します。

以下をコピーします。vi上でpキーを押してペーストし、下記を貼り付け、:wqと入力して書き込んで閉じることができます。

[Unit]
Description=Palworl Server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
ExecStart=/home/palworld/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

デーモンをリロード

sudo systemctl daemon-reload

自動起動の設定

sudo systemctl enable palworld-server.service

サービスの起動

sudo systemctl start palworld-server.service

サービス状態の確認

sh-4.2$ sudo systemctl status palworld-server.service
● palworld-server.service - Palworl Server
   Loaded: loaded (/etc/systemd/system/palworld-server.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2024-01-24 17:44:31 UTC; 16s ago
 Main PID: 1623 (PalServer.sh)
   CGroup: /system.slice/palworld-server.service
           ├─1623 /bin/sh /home/steam/Steam/steamapps/common/PalServer/PalServer.sh port=8211 players=32 -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
           └─1631 /home/steam/Steam/steamapps/common/PalServer/Pal/Binaries/Linux/PalServer-Linux-Test Pal port=8211 players=32 -useperfthreads -NoAsyncLoadingThrea...

Jan 24 17:44:32 ip-10-1-0-4.ap-northeast-1.compute.internal PalServer.sh[1623]: steamclient.so
Jan 24 17:44:32 ip-10-1-0-4.ap-northeast-1.compute.internal PalServer.sh[1623]: with error:
Jan 24 17:44:32 ip-10-1-0-4.ap-northeast-1.compute.internal PalServer.sh[1623]: steamclient.so: cannot open shared object file: No such file or directory
Jan 24 17:44:32 ip-10-1-0-4.ap-northeast-1.compute.internal PalServer.sh[1623]: [S_API] SteamAPI_Init(): Loaded '/home/steam/.steam/sdk64/steamclient.so' OK. ...t.so')
Jan 24 17:44:32 ip-10-1-0-4.ap-northeast-1.compute.internal PalServer.sh[1623]: CAppInfoCacheReadFromDiskThread took 2 milliseconds to initialize
Jan 24 17:44:32 ip-10-1-0-4.ap-northeast-1.compute.internal PalServer.sh[1623]: Setting breakpad minidump AppID = 2394010
Jan 24 17:44:32 ip-10-1-0-4.ap-northeast-1.compute.internal PalServer.sh[1623]: [S_API FAIL] Tried to access Steam interface SteamUser021 before SteamAPI_Init...eeded.
Jan 24 17:44:32 ip-10-1-0-4.ap-northeast-1.compute.internal PalServer.sh[1623]: [S_API FAIL] Tried to access Steam interface SteamFriends017 before SteamAPI_I...eeded.
Jan 24 17:44:32 ip-10-1-0-4.ap-northeast-1.compute.internal PalServer.sh[1623]: [S_API FAIL] Tried to access Steam interface STEAMAPPS_INTERFACE_VERSION008 be...eeded.
Jan 24 17:44:32 ip-10-1-0-4.ap-northeast-1.compute.internal PalServer.sh[1623]: [S_API FAIL] Tried to access Steam interface SteamNetworkingUtils004 before St...eeded.
Hint: Some lines were ellipsized, use -l to show in full.

active (running) となっていますね!起動できたようです

Qiita: 最大32人 パルワールド Linux 専用サーバの建て方 (AlmaLinux)にはこの他自動アップデートの設定や、セーブデータのバックアップ方法など、有益な情報がまとまっていますのでぜひご一読ください!

ゲームバランスを調整する

ここからはパルワールドテックガイドにある内容を今回の記事向けに説明します。

Steamユーザにスイッチ します。

$ sudo -u steam -s

今回はLinuxを使っていますので、SteamCMDの設定ファイルは以下にあります。サーバーを一度起動しないと生成されない点に注意です。

~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

デフォルト設定は以下にあります。

~/Steam/steamapps/common/PalServer/DefaultPalWorldSettings.ini

パルワールドのテックガイドにはデフォルト設定を設定ファイルにコピーしたのち、必要な設定のみ変更することをおすすめされていますので、従います。デフォルト設定に戻したい場合はコピーして上書きします。

$ cp -ip ~/Steam/steamapps/common/PalServer/DefaultPalWorldSettings.ini ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

viエディタ等でコピー先のファイルの内容を変更します。

$ vi ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

ファイル内に設定値できる値の説明は以下のとおりです。

パラメータ説明
Difficultyゲームの難易度
DayTimeSpeedRate昼の経過速度
NightTimeSpeedRate夜の経過速度
ExpRate経験値の入手倍率
PalCaptureRate捕獲確率の倍率
PalSpawnNumRateパル出現倍率 ※パフォーマンスに影響します
PalDamageRateAttackパルの与えるダメージ倍率
PalDamageRateDefenseパルの受けるダメージ倍率
PlayerDamageRateAttackプレイヤーの与えるダメージ倍率
PlayerDamageRateDefenseプレイヤーの受けるダメージ倍率
PlayerStomachDecreaceRateプレイヤーの満腹度減少倍率
PlayerStaminaDecreaceRateプレイヤーのスタミナ減少倍率
PlayerAutoHPRegeneRateプレイヤーのHP自然回復倍率
PlayerAutoHpRegeneRateInSleepプレイヤーの睡眠時HP回復倍率
PalStomachDecreaceRateパルの満腹度現象倍率
PalStaminaDecreaceRateパルのスタミナ減少倍率
PalAutoHPRegeneRateパルのHP自然回復倍率
PalAutoHpRegeneRateInSleepパルの睡眠時HP回復倍率(パルボックス内)
BuildObjectDamageRate建築物に対するダメージ倍率
BuildObjectDeteriorationDamageRate建築物の劣化速度倍率
CollectionDropRate採集アイテムの入手量倍率
CollectionObjectHpRate採集オブジェクトのHP倍率
CollectionObjectRespawnSpeedRate採集オブジェクトのリスポーン間隔
EnemyDropItemRateドロップアイテム量の倍率
DeathPenaltyデスペナルティ None : ロスト無し, Item : 装備品以外のアイテム, ItemAndEquipment : すべての装備品とアイテム, All : 全ての装備品と装備品と手持ちパル
GuildPlayerMaxNumギルドの最大人数
PalEggDefaultHatchingTimeキョダイタマゴの孵化にかかる時間(h)
ServerPlayerMaxNumサーバーに参加できる最大人数
ServerNameサーバー名
ServerDescriptionサーバー説明
AdminPasswordAdminPassword
ServerPasswordサーバーパスワード
PublicPort外部公開ポート
PublicIP外部公開IP
RCONEnabledRCONの有効化
RCONPortRCONで使用するポート
ゲームバランスの設定パラメータ

将来のアップデート用に予約されたパラメータ(現時点では未実装)も存在しています。

サーバーを再起動します。

sudo systemctl restart palworld-server.service

再度接続して、設定が反映されたことを確認します。

まとめ

本記事ではAmazon Linux 2をパルワールドサーバーとして設定する方法を説明しました。

個人的には意外と簡単にインストールできる印象でした。

専用サーバーでは32人の大人数でプレイできたり、ゲーム設定を好みで調整できるなど、メリットがありますのでぜひサーバー構築にチャレンジしてみてください!

  • この記事を書いた人

ハリネズミくん

このサイトを運営しています。
普段はITエンジニアとして活動しています。
購入したもののレビューや、ゲーム、PCの設定や、筋トレ、その他生活改善情報などを発信していきます。
- 2021年8月ブログ開設 -

オススメの記事一覧

1

友達とプレイする際、一緒にプレイする時間を決めていればホストがサーバーを立てることで問題なくプレイできますが、ホストのプ ...

2

タルコフ(Excape from Tarkov)はタスクを進めることで大量の経験値を取得できるので、どんどん進めていきた ...

3

アイロンがけについて、このように思ったことはありませんか? シワを伸ばす方法はアイロンがけだけではないのです。できれば手 ...

4

健康寿命を延ばしたい!と思ったことはありませんか?老いるということに関して、そういうものなんだ、自然の摂理なんだ、と諦め ...

5

「睡眠の質」意識されていますか? 意識しているよという方もいれば、気づいたらYouTubeやNetflix、SNSなんか ...

-AWS, IT, ゲーム, パルワールド
-, , ,