現在のパルワールドは「Steam 版」のみ専用サーバに接続できます。
『Xbox Game Pass 版』は招待コードを使ったマルチプレイのみ可能で、その場合は最大4人までのプレイに限られます。
公式による Palworld tech guide - Dedicated server guide、パルワールド JapaneseQ&A も合わせて参照してください。
本記事は「方法3: Linux - SteamCMD」をより詳細に説明する内容です。
ゲーム内で設定できるマルチプレイでは、1 つの世界に同時に最大 4 人が参加できますが、専用サーバーをホストした場合、その数は最大 32 人になります。
(非公式ですが、それ以上もいけるらしい)
キャラクターはワールドに依存し、最初から Linux で専用サーバを建てることで、友人と 24 時間パルワールドをプレイすることができます。
よってパルワールドでは 24 時間の稼働に適した専用サーバ(Dedicated Server)プログラムが開発元からリリースされています。
この記事は Linux にある程度精通した方向けになっています。
またサーバが置かれた環境のネットワークポート開放の知識も必要です。
また VPS の有償サービスを利用して誰もがサーバを建てられる 簡単なパルワールド専用サーバの建て方 ページもあります。
サーバ情報
現時点のパルワールド Dedicated Server はメモリ消費が大きいです。
大人数で安定した 24 時間稼働のためには 32 または 64GB 載せましょう。
この記事は以下の環境で試しており、4人までであればこのスペックでも安定稼働しています。
スペック | 値 | 備考 |
---|---|---|
OS | AlmaLinux 8.9 (Minimal) | Ubuntu などでも問題ありませんが、適宜コマンドを読み替えて下さい |
CPU | 2 vCPU | 公式推奨は 4コア 以上 |
Memory | 8 GB | 公式推奨は 16GB 以上、安定稼働のためには 32GB |
HDD | 100 GB | 24/01 時点でサーバファイルの総容量は 4.8 GB |
公開ポート | 8211 (UDP) | デフォルトポート |
SELinux | 無効 |
VPS やミニPCなど、メモリの搭載に限りがある場合はスワップ領域を大きめに作成することで公式推奨値を下回るメモリでもある程度は安定した稼働ができます。
ただしディスクの I/O 性能に大きく依存しますので、大きめのメモリがあれば素直に割り当てるのが望ましいです。
簡単な構築方法
時間をかけずにゲームサーバー構築したい人向けの方法を紹介。
Docker
最もポピュラーな Docker リポジトリです。自動バックアップなどの機能もあります。
LinuxGSM (Linux GameServerManagers)
ゲームサーバー管理で有名なツールです。
Install のページに従えば、わずか数行で構築が可能です。
手動インストール
ここからは手動でインストールする方法です。 AlmaLinux 8.8
1. SELinux の無効化
SELinux を無効化します。サーバが再起動します。
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 再起動して反映
reboot
2. palworld ユーザの作成
palworld
ユーザを作成します。sudo 権限をつけます。
# palworld ユーザを作成
sudo useradd -m palworld
# palworld ユーザのパスワードを設定
passwd palworld
# sudo を付与
sudo usermod --append -G wheel palworld
# palworld ユーザになる
su - palworld
3. steamcmd インストール
# glibc.i686 libstdc++.i686 tar をインストール
sudo dnf install -y glibc.i686 libstdc++.i686 tar
# steamcmd_linux.tar.gz をダウンロードする
curl -o steamcmd_linux.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
# steamcmd_linux.tar.gz の解凍
tar xf steamcmd_linux.tar.gz
# steamcmd.sh を実行
./steamcmd.sh
Ubuntu / Debian の場合
Ubuntu
sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd
steamcmd
Debian
sudo apt update; sudo apt install software-properties-common; sudo apt-add-repository non-free; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd
steamcmd
4. Palworld Dedicated Server のインストール
Palworld の Dedicated Server をインストールします。
Palworld の購入とは関係なくコンピュータにダウンロードすることができます。
(もちろん接続してプレイするには Palworld の購入が必要です)
# ユーザ認証は不要なので anonymous でログインします
> login anonymous
# /home/palworld/Steam/palworld/ をインストールディレクトリに指定します
> force_install_dir /home/palworld/Steam/palworld/
# Palworld の App ID である 2394010 を指定してインストール
> app_update 2394010 validate
# progress が 100 になるのを待つ
# steamcmd を抜ける
> quit
インストールが完了し、palworld ユーザに戻っていれば OK です。
Update state (0x81) verifying update, progress: 99.61 (4710917917 / 4729403737)
Success! App '2394010' fully installed.
Steam>quit
[palworld@localhost ~]$
インストールしたプログラム一覧
[palworld@localhost ~]$ tree /home/palworld/Steam/palworld
/home/palworld/Steam/palworld
├── DefaultPalWorldSettings.ini
├── Engine
│ ├── Binaries
│ │ ├── Linux
│ │ │ ├── CrashReportClient
│ │ │ ├── CrashReportClient.debug
│ │ │ ├── CrashReportClient.sym
│ │ │ └── libEOSSDK-Linux-Shipping.so
│ │ └── ThirdParty
│ │ └── Steamworks
│ │ └── Steamv153
│ │ └── x86_64-unknown-linux-gnu
│ │ └── libsteam_api.so
│ ├── Content
│ │ └── SlateDebug
│ │ └── Fonts
│ │ ├── LastResort.tps
│ │ └── LastResort.ttf
│ ├── Extras
│ │ └── GPUDumpViewer
│ │ ├── GPUDumpViewer.html
│ │ ├── OpenGPUDumpViewer.bat
│ │ └── OpenGPUDumpViewer.sh
│ └── Programs
│ └── CrashReportClient
│ └── Content
│ └── Paks
│ └── CrashReportClient.pak
├── Manifest_DebugFiles_Linux.txt
├── Manifest_NonUFSFiles_Linux.txt
├── Manifest_UFSFiles_Linux.txt
├── Pal
│ ├── Binaries
│ │ └── Linux
│ │ ├── PalServer-Linux-Test
│ │ ├── PalServer-Linux-Test.debug
│ │ └── PalServer-Linux-Test.sym
│ ├── Content
│ │ └── Paks
│ │ └── Pal-LinuxServer.pak
│ └── Plugins
│ └── Wwise
│ └── ThirdParty
│ └── Linux_x64
│ └── Release
│ └── bin
│ ├── libAkAudioInput.so
│ ├── libAkCompressor.so
│ ├── libAkDelay.so
│ ├── libAkExpander.so
│ ├── libAkFlanger.so
│ ├── libAkGain.so
│ ├── libAkGuitarDistortion.so
│ ├── libAkHarmonizer.so
│ ├── libAkMatrixReverb.so
│ ├── libAkParametricEQ.so
│ ├── libAkPeakLimiter.so
│ ├── libAkPitchShifter.so
│ ├── libAkRecorder.so
│ ├── libAkReflect.so
│ ├── libAkRoomVerb.so
│ ├── libAkSilenceGenerator.so
│ ├── libAkSineTone.so
│ ├── libAkSoundSeedAir.so
│ ├── libAkSoundSeedImpact.so
│ ├── libAkStereoDelay.so
│ ├── libAkSynthOne.so
│ ├── libAkTimeStretch.so
│ ├── libAkToneGen.so
│ ├── libAkTremolo.so
│ ├── libAuro.so
│ ├── libMasteringSuite.so
│ ├── libMcDSP.so
│ └── libiZotope.so
├── PalServer.sh
├── linux64
│ └── steamclient.so
├── steamapps
│ ├── appmanifest_2394010.acf
│ ├── downloading
│ └── temp
└── steamclient.so
31 directories, 51 files
5. サーバの起動確認
サーバが起動するか確認します。また root では起動できません。
# インストールしたディレクトリに移動
cd /home/palworld/Steam/palworld
# 起動確認
./PalServer.sh
少しエラーがあるが、このようなメッセージになれば OK。
[palworld@localhost palworld]$ ./PalServer.sh
Shutdown handler: initalize.
Increasing per-process limit of core file size to infinity.
sh: xdg-user-dir: コマンドが見つかりません
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/palworld/.steam/sdk64/steamclient.so' OK. (First tried local 'steamclient.so')
CAppInfoCacheReadFromDiskThread took 3 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.
起動ができたら、自動起動できるようにします。
Ctrl+C で一度サーバを止めましょう。
もし表示が異なる場合は、「遭遇したエラー」を参照してください。
問題なく起動できることが確認できたら、常時稼働させるためにサービスとして登録します。
6. Systemd に登録
OS が立ち上がったタイミングで起動するように systemd に登録します。
sudo vi /etc/systemd/system/palworld-dedicated.service
以下を入力して :wq で保存してください。
またサーバーの起動コマンドは ExecStart=
部分で実行されています。
またその中で呼ばれている起動シェル PalServer.sh
にオプションが存在します。
任意で編集してください。
PalServer.sh オプション | 意味 |
---|---|
port=8211 |
サーバーの待ち受けに使うポート番号を変更します。 |
players=32 |
サーバーの最大参加人数を変更します。 |
EpicApp=PalServer |
コミュニティサーバーとして設定します。下には含まれていません。※参考 |
-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS |
マルチスレッドCPU環境において性能を向上させます。最大で4スレッド程度まで効果がありこれ以上のスレッド数を割り当ててもあまり意味がありません。 |
[Unit]
Description=Palworld Dedicated 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=palworld
Group=palworld
TimeoutStartSec=300
[Install]
WantedBy=multi-user.target
7. ゲーム起動
daemon をリロードしてサーバを起動させましょう。自動起動もするようにします。
# デーモンの再起動
sudo systemctl daemon-reload
# 自動起動設定
sudo systemctl enable palworld-dedicated.service
# サーバの起動
sudo systemctl start palworld-dedicated.service
必要に応じたコマンド
# ゲームサーバを停止させたいとき
sudo systemctl stop palworld-dedicated.service
# ゲームサーバの起動状態を確認するとき
systemctl status palworld-dedicated.service
# ゲームサーバが出力したログを確認するとき
sudo journalctl -u palworld-dedicated.service
8. ポート開放
ポートを開放設定をします。ゲームは UDP 8211
を利用します。
お使いのサーバが置かれた環境によって手順は異なるので、環境のキーワードと合わせて検索してください。
AlmaLinux では firewalld の設定が必要です。
例として参考ページを挙げます。
- Linux firewalldでポート開放する方法(RHEL/CentOS7系) #Linux - Qiita
- Ubuntuのポート開放方法(ファイアウォールを設定する) #Ubuntu - Qiita
- ポートを開放する方法 | バッファロー
9. サーバーへ接続
ゲームを起動し、「マルチプレイに参加する(専用サーバー)」を押下します。
Xbox Game Pass版はこのメニューが表示されず、専用サーバーに参加できません。
まだ読み終わるのは早いです。セーブデータが破損する不具合も発見されています。
継続した運用をするのであれば、最低限 セーブデータバックアップ の設定を行いましょう。
サーバ設定変更
# デフォルト設定ファイルをコピー
cd /home/palworld/Steam/palworld
cp DefaultPalWorldSettings.ini Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
# サーバを停止
sudo systemctl stop palworld-dedicated.service
# 任意の値を変更
vi Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
# サーバの起動(設定反映)
sudo systemctl start palworld-dedicated.service
サーバーの稼働状態では PalWorldSettings.ini
に値が上書きされる動作が起こるようです。
必ず停止してから編集を行って下さい。
設定パラメータ一覧は公式の Palworld tech guide - Optimize game balance を参照してください。
また PalWorldSettings.ini
は横に長く、大変見辛い一行のファイルですが、改行を挟むと初期値に戻ってしまいます。
ServerDescription の設定では \n
を使うことで改行が可能です。
こちらの Palworldサーバ設定ジェネレーター を利用すれば好みの設定値を簡単に作成できます。
設定に関する不具合情報
(Palworld tech guide - Dedicated server guide より)
現状 ServerPassword
を設定すると、IPアドレス指定でサーバにログインできません。
コミュニティサーバ一覧にはなかなか出てこないので、ServerPassword
は空(パスワードなし)にして IP アドレスを隠して運用するのを推奨します。
セーブデータバックアップ
現時点で確認されている不具合
ギルドメンバーがギルドを脱退すると、その時オフライン中のメンバーの個人データが壊れ、壊れたユーザーがログインしようとすると無限ロード画面になる
この不具合は参加者が意図的に引き起こすこともできますので、サーバー管理者はセーブデーターを定期的にバックアップしロールバックできる状態にしておくことが望ましいです。
バックアップスクリプトを用意しましょう。
# バックアップ先のディレクトリ
mkdir -p /home/palworld/backup/
# バックアップ用スクリプト
vi /home/palworld/backup-palworld.sh
#!/bin/bash
# Define source directory and backup directory
SOURCE_DIR="/home/palworld/Steam/palworld/Pal/Saved/SaveGames/0"
BACKUP_DIR="/home/palworld/backup"
DATE=$(date +%Y%m%d_%H%M%S)
# Create a gzip compressed tarball
tar -czf "${BACKUP_DIR}/backup_${DATE}.tar.gz" -C "${SOURCE_DIR}" .
echo "Backup of ${SOURCE_DIR} completed at ${BACKUP_DIR}/backup_${DATE}.tar.gz"
実行権限をつけて、試しにバックアップ
chmod +x /home/palworld/backup-palworld.sh
/home/palworld/backup-palworld.sh
cron で1時間毎に実行するようにします。
# Asia/Tokyo にセット
sudo timedatectl set-timezone Asia/Tokyo
crontab -e
0 * * * * /home/palworld/backup-palworld.sh
(参考元: Palworld Server Community FAQ #Backup Scripts)
バックアップからロールバック(データ復元)を行う場合
# サーバー停止
sudo systemctl stop palworld-dedicated.service
# 壊れた状態にも戻せるよう、一応バックアップを作成
./home/palworld/backup-palworld.sh
# ./Saved/SaveGames/0 の中を削除
rm -rf /home/palworld/Steam/palworld/Pal/Saved/SaveGames/0/*
# ロールバックを行う
tar -xzf backup_(復元先の時刻).tar.gz -C "/home/palworld/Steam/palworld/Pal/Saved/SaveGames/0"
# サーバー起動
sudo systemctl stop palworld-dedicated.service
自動アップデート
サーバのプログラムがアップデートされた場合、自動でアップデートしてサーバを再起動するようにします。
update-palworld.sh
を作成します。
vi /home/palworld/update-palworld.sh
#!/bin/sh
# Steam CMD path
Steamcmd="/home/palworld/steamcmd.sh"
install_dir="/home/palworld/Steam/palworld"
echo "# Check the environment."
date
OLD_Build=`$Steamcmd +force_install_dir $install_dir +login anonymous +app_status 2394010 +quit | grep -e "BuildID" | awk '{print $8}'`
echo "Old BuildID: $OLD_Build"
echo "# Start updating the game server..."
$Steamcmd +force_install_dir $install_dir +login anonymous +app_update 2394010 validate +quit > /dev/null
echo "# Check the environment after the update."
NEW_Build=`$Steamcmd +force_install_dir $install_dir +login anonymous +app_status 2394010 +quit | grep -e "BuildID" | awk '{print $8}'`
echo "New BuildID: $NEW_Build"
# Check if updated.
if [ $OLD_Build = $NEW_Build ]; then
echo "Build number matches."
else
echo "Restart palworld-dedicated.service because an game update exists."
sudo systemctl stop palworld-dedicated.service
sudo systemctl start palworld-dedicated.service
systemctl status palworld-dedicated.service
fi
実行権限をつけます
chmod +x /home/palworld/update-palworld.sh
cron で定期的に実行するようにします。
crontab -e
0 */3 * * * /home/palworld/update-palworld.sh
3時間毎 (0時0分,3時0分,6時0分...) にアップデートがあるかチェックが入り、あればそのままサーバーが再起動します。
またこれだと接続ユーザーは急にサーバーがシャットダウンしていまうので、RCON を組み合わせて、サーバー再起動前にアナウンスを行うようにもできます。
セーブデータの階層
パルワールド Dedicated Server は以下の階層にセーブデータを保存します。
./palworld/Pal/Saved/SaveGames/0/
この階層配下にワールドID毎に保存されます。
また異なるサーバーに移行するには、セーブデータを弄る必要があるようです。こちらをご確認ください。
また Windows で招待コードでワールドを作成されていた方は、以下の階層にセーブデータが存在します。
C:\Users\(ユーザー名)\AppData\Local\Pal\Saved\SaveGames\(ユーザーID)\(ワールドID)\
Admin コマンド
サーバーを管理する上で必要になる、ユーザーのキックやメッセージのブロードキャストなどを管理者操作を必要とする場合、設定の変更が必要になります。
コマンド | 詳細 |
---|---|
/Shutdown {Seconds} {MessageText} | ゲームサーバーの Graceful Shutdown を指定秒数後に行い、サーバー内にメッセージを通知する |
/DoExit | サーバーをただちに強制的にシャットダウンします。技術的な問題がある場合、またはデータが失われる可能性があっても問題がない場合を除き、このオプションを使用することはお勧めできません。 |
/Broadcast {MessageText} | サーバー内のすべてのプレイヤーにメッセージをブロードキャストします。 |
/KickPlayer {PlayerUID or SteamID} | プレーヤーをサーバーからキックします。 |
/BanPlayer {PlayerUID or SteamID} | プレイヤーをサーバーから追放します。プレイヤーは禁止が解除されるまでサーバーに再参加できません。 |
/TeleportToPlayer {PlayerUID or SteamID} | ゲーム内でのみ実行可能。ターゲットプレイヤーの位置へテレポートします |
/TeleportToMe {PlayerUID or SteamID} | ゲーム内でのみ実行可能。ターゲットのプレイヤーを自身の場所へテレポートします |
/ShowPlayers | 接続されているすべてのプレーヤーに関する情報を表示します |
/Info | サーバー情報を表示します |
/Save | ワールドデータをディスクに保存します。サーバーを停止したり、危険なゲームプレイ オプションを実行したりする前に、Pal、プレイヤー、その他のデータが確実に保存されるようにするのに役立ちます。 |
(Palworld Server Admin Commands | Palworld | Knowledgebase Article - Nodecraft より引用)
有効化設定
Admin コマンドを利用するには、PalWorldSettings.ini
で AdminPassword=""
の設定が必要です。
またゲームにログインせずにサーバーのコンソールや同じネットワークから操作が可能になる RCON という仕組みを利用する場合、RCONEnabled も設定しましょう。
(Source RCON Protocol - Valve Developer Community)
{設定したいAdminパスワード}
を任意の文字列にして実行してください。
# 編集前にサーバーを停止
sudo systemctl stop palworld-dedicated.service
# Palworld インストールディレクトリに移動
cd /home/palworld/Steam/palworld
# PalWorldSettings.ini の AdminPassword を変更
sed -i 's/AdminPassword="[^"]*"/AdminPassword="{設定したいAdminパスワード}"/' Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
# RCON を利用する場合のみ
# PalWorldSettings.ini の RCONEnabled=False を True に変更
# RCONPort はデフォルトで 25575
sed -i 's/RCONEnabled=False/RCONEnabled=True/' Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
# PalWorldSettings.ini の値を確認
cat Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
# サーバー起動
sudo systemctl start palworld-dedicated.service
ゲーム内で使う
- チャットを開き「/AdminPassword {Adminパスワード}」をチャットし、管理者になる
-
/
から始まる Admin コマンドを入力する(日本語も可能)
RCON で使う
RCON クライアントの入手
gorcon/rcon-cli のビルド済みリリースを入手します。
# rcon 用のディレクトリを準備
mkdir -p /home/palworld/rcon/
cd /home/palworld/rcon/
# ビルド済みリリース amd64_linux を解凍
curl -LO https://github.com/gorcon/rcon-cli/releases/download/v0.10.3/rcon-0.10.3-amd64_linux.tar.gz
# rcon-0.10.3-amd64_linux/rcon を今の階層に
tar -xvzf rcon-0.10.3-amd64_linux.tar.gz --strip-components=1
rm -f rcon-0.10.3-amd64_linux.tar.gz
# ゲームのサーバー内チャットに Broadcast してみる
./rcon -a "127.0.0.1:25575" -p {設定したAdminパスワード} "Broadcast Hello!"
rcon コマンドの実行
現時点のパスワールドでは RCON 経由の Admin コマンドの実行に注意点があります。
- 最初の
/
は不要 - 日本語が利用できない
- 半角スペースが利用できない
よって RCON でメッセージを送る場合は、_ や - を混ぜた英語としましょう。
例えば「アップデートがあるので1分後にシャットダウンすること」をユーザーに伝えつつシャットダウンする場合は
./rcon -a "127.0.0.1:25575" -p {設定したAdminパスワード} "Shutdown 60 The-server-will-shutdown-in-60-seconds.Please-prepare-to-exit-the-game."
となります。
自動アップデート + サーバー内アナウンス
前述の update-palworld.sh
と RCON を組み合わせて、サーバー再起動前にアナウンスで事前退出を促すようにします。
rcon-cli は /home/palworld/rcon/rcon
にある前提です。
vi /home/palworld/update-palworld.sh
#!/bin/sh
# Steam CMD path
Steamcmd="/home/palworld/steamcmd.sh"
install_dir="/home/palworld/Steam/palworld"
echo "# Check the environment."
date
OLD_Build=`$Steamcmd +force_install_dir $install_dir +login anonymous +app_status 2394010 +quit | grep -e "BuildID" | awk '{print $8}'`
echo "Old BuildID: $OLD_Build"
echo "# Start updating the game server..."
$Steamcmd +force_install_dir $install_dir +login anonymous +app_update 2394010 validate +quit > /dev/null
echo "# Check the environment after the update."
NEW_Build=`$Steamcmd +force_install_dir $install_dir +login anonymous +app_status 2394010 +quit | grep -e "BuildID" | awk '{print $8}'`
echo "New BuildID: $NEW_Build"
# Check if updated.
if [ $OLD_Build = $NEW_Build ]; then
echo "Build number matches."
else
echo "Restart palworld-dedicated.service because an game update exists."
/home/palworld/rcon/rcon -a "127.0.0.1:25575" -p {設定したAdminパスワード} "Broadcast The-server-will-restart-in-60-seconds.Please-prepare-to-exit-the-game."
sleep 60; sudo systemctl stop palworld-dedicated.service
sudo systemctl start palworld-dedicated.service
systemctl status palworld-dedicated.service
fi
遭遇したエラー
[S_API] SteamAPI_Init(): Sys_LoadModule failed to load: … .steam/sdk64/steamclient.so
[palworld@localhost palworld]$ ./PalServer.sh
Shutdown handler: initalize.
Increasing per-process limit of core file size to infinity.
sh: xdg-user-dir: コマンドが見つかりません
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/palworld/.steam/sdk64/steamclient.so
with error:
/home/palworld/.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
[S_API] SteamAPI_Init(): Sys_LoadModule failed to load: /home/palworld/.steam/sdk64/steamclient.so
dlopen failed trying to load:
steamclient.so
with error:
解決策
Steamworks SDK Redist をダウンロードしてコピーする
mkdir -p /home/palworld/.steam/sdk64/
/home/palworld/steamcmd.sh +login anonymous +app_update 1007 +quit
cp /home/palworld/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so /home/palworld/.steam/sdk64/steamclient.so
これで動くようにはなる
[palworld@localhost palworld]$ ./PalServer.sh
Shutdown handler: initalize.
Increasing per-process limit of core file size to infinity.
sh: xdg-user-dir: コマンドが見つかりません
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/palworld/.steam/sdk64/steamclient.so' OK. (First tried local 'steamclient.so')
CAppInfoCacheReadFromDiskThread took 3 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.
サーバを起動し続けるとサーバが落ちる
Dedicated Server にはメモリリークが発生する不具合があるようです。
またサーバプログラムが原因のクラッシュは ./Pal/Saved/Crashes/
ディレクトリ内にクラッシュ毎にログが記録されます。
解決策
Dedicated Server は CPU よりもメモリの消費が特に大きいようで、8GB 以上の割り当て(公式が 16GB に訂正されました)で安定稼働するように見られます。
また継続したゲームプレイをすることで、最初は少ないメモリ消費でも無尽蔵に肥大化していく傾向にあります。サーバーを再起動することでリセットできます。
メモリが限られる環境であれば、スワップ領域を割り当てることで 4GB などの少ないメモリでも比較的安定したプレイができます。
# 16GB のスワップ領域を作成する
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon -p 10 /swapfile
# /etc/fstab に /swapfile none swap sw,pri=10 0 0 を記載する
echo '/swapfile none swap sw,pri=10 0 0' | sudo tee -a /etc/fstab
# 作成されたスワップ領域を確認する
swapon -s
また自宅サーバーやクラウドなど、大きいメモリを載せたサーバーを最初から用意できるのであれば、スワップ領域は使わずに 16GB や 32GB などの割り当てを推奨します。
またスワップでも解決しないようであれば、素直にサーバースペックを上げましょう。
参考リンク
サーバー運用する上で参考になるその他のページ
リンク | 説明 |
---|---|
Palworld Server Admin Commands | Palworld | Knowledgebase Article - Nodecraft | ServerAdmin command がまとまっています |
Palworld Server Community FAQ | 英語圏の Server Community FAQ です。よくまとまっています。 |
コメント
いいね以上の気持ちはコメントで