Steamのdedicated serverを立てる #4 コンフィグレーション紹介編

これが一番大変

サーバーの素性を定義するので、これが一番大変。ゲームのフォーラムなどを参照し定義していくのだけれど、古い定義がそのまま放置されていたりするので、うのみにできない。また、開発者と質問者が混じって会話されている場合もあるので、誤った情報が掲載されている場合もある。

それよりも大変なのは、ゲームバランスの調整だ。定義して遊んでみてバランス調整するのが一番時間がかかる。シナリオのMODを入れるとさらに大変だ。非常に長いコンテンツになってしまった。

では、各サーバー毎に紹介していこう。といっても、私が構築したことのあるもののうち、サワリの要素だけを紹介したい。詳しいことは参考サイトを調べてほしいし、構築するのも趣味だろう。

Astroneer(AppID:728470)

フレンドとやると非常に楽しい。ゲーム内でサーバーをたてることも可能だが、時間が合致しないこともある。好きな時間に資源を採取したり加工したりと、「暇だったので鉄集めておいた」とかできるのはDedicated Serverならではだろう。

参考元サイト https://blog.astroneer.space/p/astroneer-dedicated-server-details/

“C:\games\Astroneer\Astro\Saved\Config\WindowsServer”に設定ファイル群がある。

AstroServerSettings.ini 必要そうな項目のみ抜粋

[/Script/Astro.AstroServerSettings]
PublicIP=グローバルIPを記述
ServerName=サーバー名
OwnerName=管理者のSteamユーザー名
ServerPassword=鍵かけるならパスワードを記入

Engine.ini ポート番号を変更したい場合のみ。デフォルトは8777

起動バッチ Astro-start.bat

@echo off
start AstroServer.exe -log
pause

ポートフォワーディングとWindowsファイアウォール UDP 8777
Engine.iniでポート番号を変更した場合は、それどおりにUDPポートを設定する。

ARK(AppID:376030)

私自身はゲーム上の爬虫類や虫が苦手で早々に退散したが、テイムと建築が楽しいそうだ。ASM(Ark Server Manager)という管理ツールを導入することで、インストール、更新管理、および設定のすべてをGUIで行うことができる。クラスター設定もASMで導入できる。

参考元サイト https://wikiwiki.jp/arkse/ARK%20Server%20Manager

ASMの配布元 https://arkservermanager.freeforums.net/thread/5193/downloads

配布元のLatest.exeがASMのインストーラなので、これをダウンロードして実行する。ASMの設定パラメータは上述の参照元サイトのWiKiにあるので参照してほしい。

設定するとSteamCMDがASMより実行されARKのインストールが行われる。注意点としてARKはサーバーはフットプリントが大きいのでディスク空き容量に注意すること。うちはクラスター設定していることもあってか、60GBほど占有している。メモリも空いているだけ食う。メモリリークしているような挙動なので、1日1回は再起動するスケジュールにしたほうが安定している。

クラスター設定のポイントはファイルを共有せずに、それぞれのインストール先のサブフォルダに展開する。アップデートはサーバー数だけ行われるので、太い回線があったほうがよい。

ポートフォワーディングとWindowsファイアウォール TCP/UDP 7777-7778, 27015
クラスター設定するなら範囲を拡張する。 例3台なら TCP/UDP 7777-7782, 27015-27017

Empyrion(AppID:530870)

ゲームは楽しい。シナリオによってはNPCとの交易なども楽しめる。
設定は付属するEAH(Empyrion Admin Helper)で行うのが楽。なおSteamのWORKSHOPで公開されているシナリオも導入できるが、導入自体は手動になる。

参考元サイト https://empyrion.fandom.com/wiki/Dedicated_Server_Setup

上記サイトではEAHを用いない例なので、手順は参考せずに設定項目のみを参考にするとよい。EAHのサイトに掲載されているドキュメントは内容こそ少し古いが設定手順は参考になる。

EAHのドキュメント https://eah.empyrion-homeworld.net/

EAHを実行するには.Net Framework 4.5が必要だ。EAH自体はサーバーソフトの一部としてフル版がインストールされるので、改めてダウンロードする必要はない。以前は別配布だったのだ。

EAHは “C:\games\empyrion\DedicatedServer\EmpyrionAdminHelper\EmpAdminHelper.exe”にあるので、ショートカットなどを作成しておくとよい。EAHを起動したらまず最初に行うのはConfigからTool Server Gameの順にすべての定義を行っていく。このとき、標準シナリオ以外を導入したい場合はEAHを起動する前にシナリオを”C:\games\empyrion\Content\Scenarios”の下にフォルダを作成して展開しておき、ServerアイコンのDedicated Game ConfigでCustom Scenarioでシナリオを選択する。

Toolの最初はSetupタブで各フォルダおよびファイルを指定する。バックアップ先のフォルダなどはこのときに作成しておく。あとはドキュメントに従って項目設定していく。なお、通常はサーバー1台だろうからMaster-Slaveは省略してよい。自動バックアップなどのスケジュール機能もある。

ポートフォワーディングとWindowsファイアウォール TCP/UDP 30000-30004

Insurgency Sandstorm(AppID:581330)

前バージョンのInsurgency(2014)は、カスタマイズ項目も複雑でなかなか面白かったが、Insurgency Sandstormもいろいろと豊富だ。ただ、項目はあるもののサポートされていない内容もあるようで、フォーラムでは混乱が起きている。しかも、設定がちょっと面倒だ。

参考元サイト https://sandstorm-support.newworldinteractive.com/hc/en-us/articles/360049211072

SteamのWORKSHOPのような拡張/カスタマイズパッケージはmod.ioのサイトで提供されている。まずは、起動バッチファイルを作成して初期セットアップを開始しよう。終了はコンソール上でCTRL+Cで終了する。

c:\games\sandstorm\sandstorm.bat とりあえずの起動バッチ

start InsurgencyServer.exe Oilfield?Scenario=Scenario_Refinery_Push_Security?MaxPlayers=28 -Port=27102 -QueryPort=27131 -log -hostname="My Server”
exit

パラメータ内容はあとで全部書き換えるので、とりあえずどうでもよい。起動すると必要なファイル群が自動生成される。下のファイルがなければ、手で新規に作成する。

C:\games\Sandstorm\Insurgency\Config\Server 通常の設定ファイル群の格納場所

Admins.txt ゲーム内でAdminコマンドを操作できる人のSteamIDを書いておく
MapCycle.txt シナリオおよびモード(Checkpointや昼など)を選ぶ際のリストを列挙する
カッコでくくるのが流行りのようだ。
(Scenario=”シナリオ名”,Mode=”Checkpoint”,Lighting=”Day”)
Mods.txt mod.ioで導入するIDを列挙する。導入しないなら不要。
MOTD.txt ここに記載した文字列が、ゲーム開始のローディング中にメッセージが表示される。

経験値獲得のためのGameStats Tokenの取得

  1. GameStats Token Generatorに行き、SteamIDと紐づける
  2. “Generate Token”ボタンをクリックしてトークンを作成する
  3. 表示されたトークンをコピーして、起動バッチの起動パラメータに書き加える。
    -GameStatsToken=xxxxとある文字列がトークンパラメータ。

トークンは第三者に知られないようにする。

GSLT認証と登録

作成したサーバーをSteamの統計サーバーと認証させると、Steamサーバーブラウザで表示されるそうだ。ゲーム内では登録しなくても表示されるので、メリットが判らないが、手順は載せておく。ログインIDは健全なことと、電話番号が登録されているのが条件らしい。

  1. Steamゲームサーバーのアカウント管理に行き、Steamにログインする。
  2. AppIDに581330を入力し、メモにはどのサーバーか自分が分かる程度に記入する。
  3. 生成されたトークンをコピーして、起動バッチの起動パラメータに書き加える。
    –GSLTToken=xxxxとある文字列がGSLTトークンパラメータ。

MOD導入する場合

  1. mod.io にログインするために、Steamのアカウントと紐づける
  2. mod.ioにログインしたら、画面の右上にあるユーザー名をクリックするとmod.ioのプロファイルページに切り替わる
  3. 左側のメニューのAPIアクセスをクリックする
  4. OAuth2のセクションでサーバーのアクセストークンを作成する
    画面最下に”Generate Access Token”の欄があるので、自身のサーバーが分かるようなメモを入力し、Create Tokenボタンを押す
     サーバー毎にトークンが必要で、mod.ioは複数のゲームMODを提供しているので、ゲーム名とゲームの性質が分かるメモを記入しておくとよい。また、トークンはパスワードと同じ性質なものなので、秘密にしておく。
  5. C:\games\Sandstorm\Insurgency\Saved\Config\WindowsServer\Engine.ini にトークンを張り付ける。
[/Script/ModKit.ModIOClient]
bHasUserAcceptedTerms=True
AccessToken=ここにACCESSTOKENを張り付ける 

start.batの編集

MODマップ der_Rieseを導入したCheckPointシナリオの昼間で最大プレイヤー数12名で開始するとこうなる。赤字はこれまでの設定どおりに変えてほしい。

@echo off
start InsurgencyServer.exe -ModDownloadTravelTo=der_Riese?Scenario=Scenario_der_Riese_CP_Sec?Lighting=Day?MaxPlayers=12 -Port=27102 -QueryPort=27131 -log -hostname="サーバー名" -MapCycle=MapCycle -motd=MOTD -GameStatsToken=GameStatsトークン -GSLTToken=GSLTトークン -mods
exit

ポートフォワーディングとWindowsファイアウォール TCP/UDP 27102, 27131

Valheim(AppID:896660)

設定項目がほとんどない。ダウンロードすると設定項目の説明であるpdfがあるので、それに基づいてstart_headless_server.batを書き換え、valheim_start.batなどの別ファイルに保存する。別ファイルにしないとアップデートで上書きされて変更内容が消されてしまう。
pdfファイル ”C:/games/Valheim/Valheim%20Dedicated%20Server%20Manual.pdf”

デフォルトのセーブ場所が%USERPROFILE%下なので、変更した方がよい。変更しないとバックアップが煩雑になる。

上記セーブフォルダに設定ファイル群も存在する。一度起動すると作成されるので、それから編集する。

 

ポートフォワーディングとWindowsファイアウォール TCP/UDP 2456-2458