AWS(Amazon Web Services)にLinux GSM(Game Server Managers)を使ってPalworldを構築したうえで、GSA(Game Server App)で管理してみた。
概要
まず、料金に関して、立てっぱなしが前提なら、ConohaやX ServerなどのVPSのほうが安上がりであり、Conohaであれば16GBプランが割引込で9,430円/月となっている。私としては月約1万を少々お高く感じたので、ゲームをプレイするときだけサーバを上げる運用を前提として、AWSを選定した。
次に、構築に関してはLinux GSM(Game Server Manager)を利用した。ゲームサーバの構築・運用を楽に行えるようにするためのツール。構築やアップデートなど、面倒な処理はすべて半自動でやってくれる。
加えて、GSM推奨のGSAというWebサービスも利用した。ゲーム内の情報をわかり易く表示してくれたり、Discordとの連携機能を提供してくれたり、なかなか使えるサービスだ。Palworldで公式に提供されている、RCON(Remote Console)というAPI(?)を用いて実現されており、ゲームの外から、ゲーム内の情報を取得したり、ゲームの設定を変更したりできる仕組み。RCON自体は一般的な概念らしい、実装はゲームによってまちまちらしいが。
AWS設定
インスタンス選定
メモリ16GBは必要との公式情報をもとに、どのインスタンスタイプが良いか調べた結果、「m7a.xlarge」を選定。オンデマンド料金を見ると「USD 0.23184/h」なので、こまめに電源OFFする前提での運用を想定し、3,441円/月=34.41円/h*5h*20dayと見積もった。加えて、電源OFF時に少額の維持費がかかる。
OS
今回はLinux GSMで構築する前提なので、サポートされている「Ubuntu 20.04 LTS」を選定。
セキュリティグループ
インバウンドに「UDP8211(ゲームプレイ用のデフォルトポート)」と「TCP25575(後述するGSAから接続するためのRCONデフォルトポート)」を開放する。
ElasticIP
このままだと起動し直すたびにIPアドレスが変わるので、ElasticIPを払い出ししてサーバに割り当てる。お値段は0.005 USD/hとのことなので、530円/月ほど。
サーバ構築
Linux GSMで構築
基本は下記手順に則って実施する。抜粋しておくが、変わる可能性があるので、原典を当たっていただきたい。
AWSにおけるUbuntuインスタンスで、SSH可能なデフォルトユーザはubuntu
です。
- まずはUbuntuのパッケージを全体的にアップデート
apt update
apt upgrade
- Dependenciesから必要なパッケージをインストール(詳細は上記リンク参照)
sudo dpkg --add-architecture i386; sudo apt update; sudo apt install curl wget file tar bzip2 gzip unzip bsdmainutils python3 util-linux ca-certificates binutils bc jq tmux netcat lib32gcc1 lib32stdc++6 libsdl2-2.0-0:i386 steamcmd
- Install からゲームをインストール(詳細は上記リンク参照)
adduser pwserver
su - pwserver
curl -Lo linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh && bash linuxgsm.sh pwserver
./pwserver install
- Basic Usageを読んで使い方を理解
GSA(Game Server App)にRCONで接続
GSAに登録する。ちなみに、AWSで固定IPを割り付けていない場合、起動し直すたびに毎回IPアドレスが変わるので、設定し直しが大変というオチ。
PalWorldSettings.iniを編集
まずは、PalworldのRCONを有効化する。./pwserver details | grep Config
を実行すると設定ファイルの場所がわかるので、vi /home/pwserver/serverfiles/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
で編集する。AdminPasswordに任意の文字列を設定し、RCONEnabled=True
とすれば良い。
ServerDescription="",AdminPassword="任意の文字列",ServerPassword="",PublicPort=8211,PublicIP="",RCONEnabled=True,RCONPort=25575,Region=""
./pwserver stop
でPalworldを止めた状態で編集すること。そうしないと、設定が巻き戻る。
GSAでRconConnect設定
Connect Rcon ConnectからServer IP
とRCON port
とRCON password(AdminPassword)
を設定する。Query portは使っていないのか、何でも良かった。
GSAでDediConnect設定
SSH設定をしてやることで、サーバ自体をいじくれるようにもなるらしい。軽くやってみた感じ、rootでのSSHを許容しなければならなさそうだった。