Insurgency Sandstormサーバーを立てよう

Pocket

(linux, steamCMD利用します。)

この記事はPCゲーム Advent Calendar 2018 – Adventarの2日目の投稿です。

概要


Insurgency: Sandstorm
Insurgency Sandstormのリリース予定が若干延期され12月12日に決定したようなのです。現在はパブリックリリースに向けて購入者のみのbetaがリリースされているので、ちらほらサーバーが立っている様子。また先日にはサーバー提供者向けのDedicated Serverがリリースされたので、これもサーバーの増加を手助けしています。
ただ、なんといってもこれ系のゲームは「日本サーバーが少ない」ので、プレイヤーの間口を広げるべくもっと日本サーバーが立ってほしい。そんな思いを込めて日本語のサーバー導入ガイドを公開します。

検証環境

本稿は以下の検証環境で検証しています。

  • OS: Ubuntu Server 16.04LTS
  • Architecture: 64bit(amd64)
  • Insurgency Sandstormを所持しているSteamアカウント

実際のサーバー導入に際しては、CentOSほかRhel等の一般的にサーバー用途として用いられるLinuxディストリビューションでも、同様の手順で再現可能かと思います。(若干読み替える必要はあると思いますが。)
また後方互換について、Ubuntu Server 18.04LTSでも同様の手順で導入可能です。

導入

Insurgencyサーバー向けのユーザー作成

サーバーの提供をsudoer等に登録されているユーザーで行うと安全上問題なので、dedicated serverを実行するための専用のユーザーを作成します。当コミュニティの場合は、個々のパブリックサーバー向けに1ユーザを追加してグループで纏めている運用をしています。
下記を実行すると、ホームディレクトリが/home/insurgency1のデフォルトユーザーグループがgameuserに設定されたユーザーinsurgency1が作成されます。

SteamCMDのインストール

dedicated serverのプログラムをsteamからダウンロードするに当たって、steamの機能をCLIで利用可能なsteamCMDを導入する必要があります。dedicated serverの導入時のみでなく、アップデートの際にも必要になりますので、導入後削除したりはしないでください。(今後も必要になります。)

最後に./steamcmd.shを実行した際にSteamCMDのアップデート確認と最新版へのアップデートが実行されます。ログインが求められた場合はSteamのログインIDとパスワードを入力してください。
またSteamCMDは二段階認証にも対応しています。アカウントで二段階認証を有効にしている場合は、dedicated serverの導入時に二段階認証のキーが求められる場合があります。

Insurgency Sandstormインストール用のシェルスクリプト作成

Insurgency Sandstormの導入とアップデートをSteamCMD経由で行う為に、導入用のシェルスクリプトを作成します。

sandstorm_updater.shは下記の内容で作成しました。

今回はsteamCMDのrunscript機能を利用して、実行用のスクリプトを用意しこれを実行するように指定します。スクリプトは下記のファイル名で、下記の内容で作成しています。
account_nameとpasswordをそれぞれInsurgency Sandstormを所有している自身のアカウントに読み替えて作成してください。

インストール

通常通り、シェルスクリプトを実行します。(二段階認証を有効にしている場合は、ここでキーを聞かれます。)

Insurgency Sandstormサーバー起動用のシェルスクリプトの作成

起動時に毎回引数を指定して起動するのが大変面倒な為、シェルスクリプトを書いて管理しています。
また下記の内容であれば、”-debug”オプションを指定しない場合標準出力の内容がlogsディレクトリ以下に保存される為、サーバー管理の都合上そのようにしています。

port,queryport,maxplayers,basedir,logdir,hostname等のオプションは、各自の環境に読み替えて作成してください。

このまま起動した場合は、マップTownのSecurity側でゲームルールCheckpointのサーバーがport 27102で立ち上がります。
適宜ゲームルール、マップは置き換えて実行してください。現在実装されているゲームルールは下記になります。

Farmhouse

  • Scenario_Farmhouse_Checkpoint_Insurgents
  • Scenario_Farmhouse_Checkpoint_Security
  • Scenario_Farmhouse_Firefight_East
  • Scenario_Farmhouse_Firefight_West
  • Scenario_Farmhouse_Push_Insurgents
  • Scenario_Farmhouse_Push_Security
  • Scenario_Farmhouse_Skirmish

Hideout (Town)

  • Scenario_Town_Checkpoint_Insurgents
  • Scenario_Town_Checkpoint_Security
  • Scenario_Town_Firefight_East
  • Scenario_Town_Firefight_West
  • Scenario_Town_Push_Insurgents
  • Scenario_Town_Push_Security
  • Scenario_Town_Skirmish

Refinery (Oilfield)

  • Scenario_Oilfield_Checkpoint_Insurgents
  • Scenario_Oilfield_Checkpoint_Security
  • Scenario_Oilfield_Firefight_West
  • Scenario_Oilfield_Push_Insurgents
  • Scenario_Oilfield_Push_Security
  • Scenario_Oilfield_Skirmish

サーバー実行

下記をインストールディレクトリで実行するとサーバーが起動します。
UFWやfirewalld、SELinuxをEnabledに設定している場合は、DisabledあるいはPermissiveにするか、対応する設定を行ってください。

screenの利用

このままではサーバーで実行した内容はサーバーから抜けると終了してしまう為、screenで実行することをお勧めします。

参考など

Insurgency: Sandstorm Community Server Discussion :: Steam コミュニティ
Insurgency: Sandstorm Server Admin Guide – Google ドキュメント

2件のコメント

  1.  Insurgency:Sandstormの日本語でのサーバー構築情報が少ない中、こうして丁寧にご説明いただきありがとうございます。
     私も、上記の例に倣いPvPサーバーの構築を目指しているんですが、Insurgency Sandstormサーバー起動用のシェルスクリプトを作成し、実行する段階で、bashより
    「./start_sandstorm.sh: line 33: syntax error: unexpected end of file」とエラーが返させてしまいます。shell scriptの編集点としてはhostnameを変更しただけで、それ以外に特に変更および編集はしておりません。syntax errorなのでスクリプトの構文等が間違ってると推測されますが、未だ解決しておりません。
     大変僭越ですが、当該問題の解決方法またはヒントなど教えていただければ幸いです。
     駄文失礼しました。

    • ざっくりと確認した範囲ですが、line30に本来挿入するはずの”done”が記述されていない為発生していました。
      該当箇所を修正しましたので、ご確認ください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください