【配布有】Discord & WEBでARKの専用サーバー管理してみた
ARKでマルチプレイをするときに自分でサーバーを建てると思いますが、管理者のあなたがいないときに、参加者が起動や停止ってできますか?
全員SSHでログインできるならまだしも、普通はできないですよね。
さて、本記事ではそれを解決すべく制作した、ゲームサーバー管理サーバー&DiscordをARKで使う方法を紹介します。
この記事は以下で紹介している管理ツールをARKで使う場合の紹介記事になります。
アップデート情報
本作バージョン2作成しました
Windowsに対応したほか生成AIやリモート管理機能など様々な新機能を搭載しより使いやすくなりました。
※こちらでは本記事の定義非対応なのでご注意ください。
何ができる?
まず何ができるものなのか、簡単に紹介しましょう。
詳細は上で紹介したツールの記事をご確認ください。
サーバーの起動や停止を管理できる
通常はシェルスクリプトから起動し、終了はゲームごとに異なるプロトコルからシグナルを送信すると思いますが、それをボタンひとつでできるようにします。WEBとDiscordで操作できる
メインシステムがWEBサーバーで、管理者はウェブページから起動や停止、シャットダウンなどのボタンを押して操作することができます。
参加者側はDiscordのBOTに対して指示を送ることで、BOTがこのWebサーバーのcgiにアクセスして操作する仕組みです。
ARKでの適用方法
ここではツールに関する記事を読んでいただき、理解している前提でARKで使う方法を解説します
ARKのサーバーは以下のように操作することとします
起動方法
シェルスクリプト終了方法
RCONに"DoExit"コマンドを投げる
さて、ARKのサーバー定義フォルダの中身は以下のようになっています。
start.sh
このスクリプトを実行することで、ARKサーバーが立ち上げるように中身を記述します。
前半は起動中とアップデート中のブロッキング処理なので他のサーバーと同様です。
ARKでのオリジナルは18行目以下になります。
ワールド名やパスワードなどを一旦変数に入力してから実行パスに渡していますが、この部分は実行コマンドに直接入力してもらっても構いません。
実行の行が長すぎたので、ここだけ別途書いておきます。
./ShooterGameServer ${WORLD}?listen?SessionName=${ServerName}?ServerPassword=${PassWD}?ServerAdminPassword=${AdminPass}?OverrideStructurePlatformPrevention=true?RCONEnabled=True?RCONPort=65000?QueryPort=65001?Port=65002? -port=65003 -server -servergamelog -crossplay
この中で大事なのはRCONポートを指定しておくことです。
ARKはRCONを使って外部からコマンド入力を受け付けることができます。これを使用してシャットダウンを行いますので、必ず外部コマンドを受け付けられる状態で起動してください。
stop.sh
停止する際に実行されるスクリプトです。
今回はPythonで自作したRCON送信スクリプトを実行して、ゲームの保存とサーバーシャットダウンのコマンドを連投しています。
update.sh
サーバーのアップデートを行う際に実行されるスクリプトです。
SteamCMDからのゲームであれば、アプリケーションIDを変えるだけでどんなゲームでも共通です。
必要なファイルを作成し、ツールを再起動したら任意の方法で起動してみましょう。
心配であれば事前に知恵スクリプトをターミナルから実行し、サーバーが立ち上がることを確認しておいた方がいいでしょう。
今回はぶっつけ本番でしたが、問題なく起動したようですね。
そして、同じく停止のスクリプトも実行してみました。
ゲームに入った状態で停止したのが以下の画面です。きちんと停止していることが分かります。
まとめ
今回はサーバー管理ツールをARKで使ってみました。
シルスクリプトで起動&何らかの通信プロトコルで終了できるサーバーであれば、他にどんなゲームでも適用できます。
メモリが許す限り、複数のゲームのサーバーを同時並行で立ち上げることもできますね。