最近はPalWorldにどっぷりハマっています。
マルチプレイをする場合は、24時間起動し続けたいわけでなければ無理してサーバを建てるメリットはないんですが、
それでも建てたいかつ、比較的環境を汚したくない人向けの簡単な記事です。
ポート開放や正式な建て方に関しては公式や他のブログを参考にしてください。
あくまで弊宅ではKubernetesクラスタ上でPalWorldを動作させているため、
このやり方はデータのチェックや動作確認で利用していることが多いです。
TL;DR
- PalWorldSettings.iniとGameUserSettings.iniを用意する
- 記事のDockerfileとcompose.yamlを参考にして用意する
ディレクトリ構造
最終的なディレクトリ構造は以下のような形になります。
. ├── compose.yaml ├── Dockerfile ├── GameUserSettings.ini ├── PalWorldSettings.ini └── SaveGames
【任意】SaveGamesを用意する
既にあるセーブデータがあり再利用したい場合は、どうにかしてSaveGamesに以下のような構造でデータを持ってきます。
SaveGames └── 0 └── A091215A35CD4039A7860DEE387F2838 ├── LevelMeta.sav ├── Level.sav └── Players ├── abcedf00000000000.sav └── fdecba00000000000.sav
PalWorldSettings.iniを用意する
PalWorldSettings.iniはジェネレーターなどが有志で公開されているので、それを参考に用意してください。
補足
ジェネレーターや他のブログを見ればわかりますが、現状反映されない項目が多くあります。
ですが、誰かがホストとしてゲームを実行している場合はより多くの設定が反映されるため、
現時点ではサーバを用意するメリットは基本的に薄いケースがあります。
GameUserSettings.iniを用意する
こちらは他のやり方だとあまり用意するケースはないかと思いますが、 このファイルには起動時に利用するセーブデータの指定を行うことができます。
コンテナの再作成や既にあるサーバのデータを再利用したいケースのために用意しています。
[/Script/Pal.PalGameLocalSettings] AudioSettings=(Master=0.500000,BGM=1.000000,SE=1.000000,PalVoice=1.000000,HumanVoice=1.000000,Ambient=1.000000,UI=1.000000) GraphicsLevel=None DefaultGraphicsLevel=None bRunedBenchMark=False bHasAppliedUserSetting=False DedicatedServerName=A091215A35CD4039A7860DEE387F2838 AntiAliasingType=AAM_TSR DLSSMode=Performance GraphicsCommonQuality=0
A091215A35CD4039A7860DEE387F2838
に関しては文字列に書き換えます。
デフォルトでは16進数で命名されていますが、正直なんでも良いです。
既にあるセーブデータを流用する場合は、SaveGames/0
配下のディレクトリ名に合わせて指定してください。
SaveGames └── 0 └── B091215A35CD4039A7860DEE387F2121
この場合A091215A35CD4039A7860DEE387F2838
はB091215A35CD4039A7860DEE387F2121
に書き換えます。
Dockerfileを用意する
以下を参考にDockerfileを作成します。
FROM ubuntu:22.04 RUN apt update -qq \ && apt install -y vim ca-certificates curl lib32gcc-s1 xdg-user-dirs \ && apt clean \ && rm -rf /var/lib/apt/lists/* RUN useradd -m steam USER steam # FYI: https://developer.valvesoftware.com/wiki/SteamCMD#Linux ENV STEAM_ROOT_PATH /home/steam/Steam ENV STEAMCMD /home/steam/Steam/steamcmd.sh RUN mkdir -p $STEAM_ROOT_PATH WORKDIR $STEAM_ROOT_PATH RUN curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - \ && $STEAMCMD +quit RUN mkdir -p $HOME/.steam/sdk64/ \ && $STEAMCMD +login anonymous +app_update 1007 +quit \ && cp $STEAM_ROOT_PATH/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so $HOME/.steam/sdk64/ # # FYI: https://tech.palworldgame.com/dedicated-server-guide#linux RUN $STEAMCMD +login anonymous +app_update 2394010 validate +quit WORKDIR $STEAM_ROOT_PATH/steamapps/common/PalServer RUN mkdir -p Pal/Saved/SaveGames CMD ["./PalServer.sh"]
copmose.yamlを用意する
以下を参考にcompose.yaml
を作成します。
services: palworld: build: . image: palworld restart: always ports: - 32111:8211/udp volumes: - ./PalWorldSettings.ini:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini - ./GameUserSettings.ini:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/GameUserSettings.ini - ./SaveGames:/home/steam/Steam/steamapps/common/PalServer/Pal/Saved/SaveGames
ちょっと長いですが、PalWorldSettings.ini、GameUserSettings.ini、SaveGamesをコンテナにマウントしています。
コンテナを起動する
ここまでくれば後は起動は簡単です。
docker compose up -d
と実行し、しばらく待てば接続できるようになります。
停止させたい場合は、
docker compose stop
と入力するだけです。
おまけ
WSL 2で動かしてるけど接続できない
Docker Desktop for Windowsではなく、WSL 2に直接インストールしたDocker Engineの場合、 WSL 2がUDPのポートフォワードに対応していないためアクセスすることができません。
大人しくDocker Desktop for Windowsをインストールしておきましょう。
サーバのアップデートが必要
コンテナを停止した後にコンテナイメージを再作成すればOKです。
# 停止 docker compose stop # イメージの再作成 docker compose build --no-cache # 起動 docker compose up -d