Palworld Rconでサーバーコマンド実行! ~コマンドで安全にシャットダウンやセーブ等自在にコントロール~

皆さんこんにちは、Rcatです。
今回はリリースからすさまじい勢いの新作パルワールドのサーバー管理系の話です。
このゲーム、何が優秀かって専用サーバーを立てられる上に、それがLinux対応でさらに驚くべきことにRCONに対応してるんです。
ここまでサーバー環境が整ったゲームはARK以来です。
こういったゲームは、サーバー環境構築も楽しめて2度美味しいという私にとってとてもとても楽しみがいのあるゲームとなっております。
というわけで早速RCON試してみました。


RCONって何?

Rconとは主にゲームサーバーで用いられている通信プロトコルのことで、これに対してコマンドを送信することで、外部からサーバーコマンドの実行ができる仕組みです。
有名な例ではMinecraftがいつのまにか対応していましたね。
例えば、皆さんサーバーどうやって落としてますか?Ctrl+Cですか?Killですか?なんか不安ですね。正しくシャットダウンコマンドで終了するために、RCONでshutdownコマンドを使用できます。

さて、それで何がうれしいのかという話ですが、Rconで通信できえすれば、どんなクライアントからもサーバーの操作が可能ということです。
私がよくやる方法だとDiscordのbotと連携して、サーバー参加者も起動や停止が行える仕組みを構築し、サーバー主の都合に左右されづらい、環境の構築などがあります。
詳しくは下記の記事で実際に構築して紹介しています。

実際に試してみる

前提

この記事では、Linuxのサーバーを使用かつでPythonが利用できることが前提です。とはいえ、LinuxならデフォルトでPythonが使えるので特に気にしなくて大丈夫です。
また、Rconで指示をする際に使うスクリプトは私が自作したオリジナルです。通信フォーマットが簡単なのでつい自作してしまいました…。
一応、ライブラリは存在するみたいなので、「Rcat?そんなやつ信用できねえ」って方はそっちを使用してもいいかもしれません。
スクリプト本体とサーバーの準備方法については、下記の記事をご確認ください。

実際にコマンドを入力してみる

まずRCONを使うには設定をしておく必要があります。
設定ファイルの場所について説明しておきます。
私の場合は”palworld"という名前のフォルダにサーバーをインストールしました。
その前提で設定ファイルのパスを書くと以下のようになります。
・デフォルトの設定が記載されたファイル
palworld/DefaultPalWorldSettings.ini
・実際に設定を記述するファイル
palworld/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

記述の手順としては、デフォルトの設定内容を実際に記述するファイルにコピペします。
RCONに関係する設定は以下であり、管理者パスワードとRCONを有効に設定してください。
それ以外の部分はその他の設定なのでお好みで構いません。

AdminPassword="ここに管理者パスワード設定",RCONEnabled=True,RCONPort=25575

サーバーコマンド

下記を参考にコマンドの入力ができるのかどうか試してみました。
ちなみにRCONから使用する場合はスラッシュはいらないみたいです。

指示の方法

下記の方法でRconスクリプトを起動できます。
スクリプトの構文は以下の通りです。
サーバーを立てているパソコンと同じパソコンで実行する場合、IPアドレスはlocalhostで大丈夫です。
また、スペースを挟んで複数の引数を受け付けるコマンド、(シャットダウンなど)の場合は""で囲ってください。

構文
$python3 rcon2.py IPアドレス ポート番号 管理者パスワード "コマンド"

例
$python3 rcon2.py localhost 25575 PASSWD "shutdown 60 1punkanmatteyaru"

サーバーの情報を表示

インフォコマンドで表示できます。
コマンドには大文字や小文字は関係ないみたいですね。

$ python3 rcon2.py localhost 25575 PASSWD  INFO
Welcome to Pal Server[v0.1.3.0] Rcat Server

$ python3 rcon2.py localhost 25575 PASSWD info
Welcome to Pal Server[v0.1.3.0] Rcat Server

$ python3 rcon2.py localhost 25575 PASSWD Info
Welcome to Pal Server[v0.1.3.0] Rcat Server

ログイン中のプレイヤーをリスト

$ python3 rcon2.py localhost 25575 PASSWD ShowPlayers
name,playeruid,steamid
Rcat999,123456789,12345678912345678

コンソールにプレーヤーの一覧が返されました。
IDは書き換えています。

サーバー全体にメッセージを表示

$ python3 rcon2.py localhost 25575 PASSWD "Broadcast Yaho"
Broadcasted: Yaho

適当にヤッホーと打ち込んでいました。
ゲーム内では左側に表示されるようですね。

サーバーをセーブする

$ python3 rcon2.py localhost 25575 PASSWD Save
Complete Save

セーブが完了したようです。
ゲーム内では特に表示などはありませんでした。

サーバーをシャットダウンする

$ python3 rcon2.py localhost 25575 PASSWD "shutdown 60 The server will stop after 1 minute."
The server will shut down in 60 seconds. Please prepare to exit the game.

シャットダウンコマンドは後ろに秒数とメッセージをつけることができます。
メッセージが途中で切れてますが、これは自作のRcon通信が悪いのか、それともゲームが悪いのかは分かりません。特に問題がないので追及はしません。
文字化けしている箇所は日本語打てないか試したところです。

そして、1分後にホストから強制的に切断されました。シャットダウン成功したようです。
このタイトルに限らず、いろんなサーバーの立て方を見てますが、建て方だけで止め方書いてないことが多いんですよね…
CTRL + Cとかの強制終了でいいんですかね?
私はそういうの怖いので、どんなゲームでもできる限りシャットダウンコマンドを使用するようにしています。

まとめ

今回はちょっとマニアックなRconについて触れてみました。
ここを自在に操ることで、サーバー管理の幅が非常に広がりますので、ぜひぜひ使ってみることをお勧めします。

RCONのスクリプトはトップで紹介した、サーバー管理ツールに含まれています。

情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。