メインコンテンツへスキップ

【配布有】Discord & WEBでARKの専用サーバー管理してみた

    ARKでマルチプレイをするときに自分でサーバーを建てると思いますが、管理者のあなたがいないときに、参加者が起動や停止ってできますか?
    全員SSHでログインできるならまだしも、普通はできないですよね。
    さて、本記事ではそれを解決すべく制作した、ゲームサーバー管理サーバー&DiscordをARKで使う方法を紹介します。
    この記事は以下で紹介している管理ツールをARKで使う場合の紹介記事になります。

    アップデート情報

    本作バージョン2作成しました
    Windowsに対応したほか生成AIやリモート管理機能など様々な新機能を搭載しより使いやすくなりました。
    ※こちらでは本記事の定義非対応なのでご注意ください。

    何ができる?

    まず何ができるものなのか、簡単に紹介しましょう。
    詳細は上で紹介したツールの記事をご確認ください。

    • サーバーの起動や停止を管理できる
      通常はシェルスクリプトから起動し、終了はゲームごとに異なるプロトコルからシグナルを送信すると思いますが、それをボタンひとつでできるようにします。

    • WEBとDiscordで操作できる
      メインシステムがWEBサーバーで、管理者はウェブページから起動や停止、シャットダウンなどのボタンを押して操作することができます。
      参加者側はDiscordのBOTに対して指示を送ることで、BOTがこのWebサーバーのcgiにアクセスして操作する仕組みです。

    画像
    WEB操作画面
    画像
    Discord 指示チャット

    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で使ってみました。
    シルスクリプトで起動&何らかの通信プロトコルで終了できるサーバーであれば、他にどんなゲームでも適用できます。
    メモリが許す限り、複数のゲームのサーバーを同時並行で立ち上げることもできますね。

     
     
    モノづくりが趣味。 "売ってないなら自分で作ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワーク 全部やります。 記事執筆はAI不使用。 ご連絡や利用規約はプロフィール記事参照。

    あなたへのおすすめ