- Core i7-1260P搭載のNUCでInsurgency Sandstormのサーバーを建ててみました – Recon-ReviewDays
先日「Insurgency Sandstorm」のサーバーを建てた際に「画像付きで分かりやすい解説があった方が良いな」と感じたので、自分用のメモとして残します。
- 1. 前提条件
- 2. サーバーに必要な「Visual C++ 2015 Redistributable」と「Visual C++ 2017 Redistributable」、「SteamCMD」をダウンロードする
- 3. 「steamcmd.exe」を開き「Loading Steam API…OK」が出ていることを確認する
- 4. 「steamcmd.exe」の画面で「login anonymous」と入力し「Enter」
- 5. 「steamcmd.exe」の画面で「app_update 581330 validate」と入力し「Enter」
- 6. 「steamcmd.exe」の画面で「quit」と入力し「Enter」
- 7. 「steamcmd」フォルダをCドライブの1番上のディレクトリに移動
- 8. 「C:\steamcmd\steamapps\common\sandstorm_server」に移動する
- 9. 「C:\steamcmd\steamapps\common\sandstorm_server」で「右クリック」→「新規作成」→「テキスト文書(テキストドキュメント)」でファイルを作成
- 10. 新しいテキスト ドキュメント.txtを開いて以下文章を入力し、保存する
- 11. 新しいテキスト ドキュメント.txtを「InsurgencyServer_Start.bat」に名前を変える
- 12. 拡張子が表示されないという方は
- 13. 「InsurgencyServer_Start.bat」を起動後「ファイアウォールのアクセスを許可」しよう
- 14. 「Display: Advancing spawns for faction 255 to obj 0云々」のメッセージが表示されれば成功
- 15. 2023年4月5日現在Insurgency Sandstormで日本語IMEでIPアドレスが正常に入力できない不具合あり
- 16. Insurgency SandstormでIPアドレスが入力できない不具合を解決する方法について
- 17. サーバーのログイン時に表示されるファイルを表示する
- 18. 「Insurgency/Config/Server/MyOtherMOTD.txt」にMyOtherMOTD.txtを作成
- 19. 「Serverフォルダ」に「MyOtherMapCycle.txt」を新しく作成する
- 20. サーバー設定ファイル「Game.ini」を作成する
- 21. サーバー設定ファイル「Game.ini」を記述する
- 22. デフォルトの設定ではXP(経験値)が取得できる設定になっていない
- 23. サーバー管理ツール「ISRT」もお勧め
- 24. サーバー紹介
前提条件
・Windows 10 22H2を使用します。(TrueNAS SCALEでも建てられますが、導入までに多大な手間を掛ける必要があるので、実用的なWindows 10 22H2環境で解説しています。)
・実機でサーバーを稼働させています。(仮想化環境などはネットワーク周りで躓く事が多い&設定がややこしいので実機で検証、解説しています。)
・TCP/UDPのポート開放が出来る
・こちらで解説している内容の多くは「Insurgency: Sandstorm Server Admin Guide」を多く引用しています。誤りがある場合もあるので、なるべく「Insurgency: Sandstorm Server Admin Guide」を確認された方が無難です。
・「ゲーム好きがなんか色々書く」様や「matunokiパソコン備忘録」様、「ほねめも」様等多数のサイトを参考にさせて頂いています。
・なるべく分かりやすく画像付きで解説しています。
・「Insurgency Sandstorm」のサーバーソフトは基本的に最大2コア/4スレッド以下しか使わないため、マルチコア化の恩恵はあまりありません。詳しくは「こちら」から。
・「Insurgency Sandstorm」のサーバーソフトは凡そ700~1GB前後メモリを消費します。(サーバー設定に依存しますが最大40BOTサーバーで1GB以下なので意外と容量は食わない)
サーバーに必要な「Visual C++ 2015 Redistributable」と「Visual C++ 2017 Redistributable」、「SteamCMD」をダウンロードする
- Microsoft Visual C++ 2015 再頒布可能パッケージ Update 3 – Microsoft
- Visual C++ 2017 Redistributable(※直リンク) – Microsoft
- SteamCMD ダウンロード(※直リンク) – steamcdn
サーバーを建てる際に必須な「Visual C++ 2015 Redistributable」と「Visual C++ 2017 Redistributable(※直リンク)」、「SteamCMD(※直リンク)」をダウンロード、インストールしましょう。
「steamcmd.exe」を開き「Loading Steam API…OK」が出ていることを確認する
「SteamCMD(※直リンク)」をダウンロードし、解凍後に出てくる「steamcmd.exe」を実行。
すると何やら10秒前後で各種ファイル類を自動的に落としてきた後に画像2枚目の「Loading Steam API…OK」が表示されればOKです。
「steamcmd.exe」の画面で「login anonymous」と入力し「Enter」
「steamcmd.exe」の画面で「login anonymous」と入力し「Enter」を押しましょう。
この時マウスの右クリックを押すことで貼りつけが出来るため「login anonymous」をコピーして貼り付けすると良いでしょう。(「」はコピペしないように注意)
画像2枚目の赤枠の「Wating for user info…OK」が表示されていればOKです。
「steamcmd.exe」の画面で「app_update 581330 validate」と入力し「Enter」
先ほどと同じく「steamcmd.exe」の画面で「app_update 581330 validate」と入力し「Enter」を押しましょう。
すると「Update state云々」のメッセージが出てファイル類が更新されていくはず。
最後に画像2枚目の赤枠の「Success! App ‘581330’ fully installed.」と表示されればOKです。
「steamcmd.exe」の画面で「quit」と入力し「Enter」
「steamcmd.exe」の画面で「quit」と入力し「Enter」を押し、一旦「steamcmd.exe」を終了させます。
「quit入力→Enter」を押すと自動的に「steamcmd.exe」が閉じられるのでビビらないように。正常動作です。
「steamcmd」フォルダをCドライブの1番上のディレクトリに移動
左: 「steamcmd」フォルダ移動前
右: 「steamcmd」フォルダ移動後
恐らくデスクトップ上に「steamcmd」フォルダを置いて作業している方が多いかと思うのですが、ユーザー名に2バイト文字(要するに日本語)を使っていたり、ユーザー名が長かったりすると予想外のエラーが発生することが多く、誤ってフォルダ毎整理&削除しかねないため「Cドライブの1番上(C:\)」に「steamcmd」フォルダを移動させちゃいましょう。
ディレクトリ的には「C:\steamcmd」となります。
これで予想外のエラーやデスクトップのファイル整理に巻き込まれる事も無いはず。
「C:\steamcmd\steamapps\common\sandstorm_server」に移動する
「C:\steamcmd\steamapps\common\sandstorm_server」に移動しましょう。
「C:\steamcmd\steamapps\common\sandstorm_server」で「右クリック」→「新規作成」→「テキスト文書(テキストドキュメント)」でファイルを作成
「C:\steamcmd\steamapps\common\sandstorm_server」で「右クリック」→「新規作成」→「テキスト文書(テキストドキュメント)」でファイル(新しいテキスト ドキュメント.txt)の作成を行います。
新しいテキスト ドキュメント.txtを開いて以下文章を入力し、保存する
start InsurgencyServer.exe Oilfield?Scenario_Refinery_Checkpoint_Security?MaxPlayers=28?password=パスワードが必要な場合は入力 -Port=27102 -QueryPort=27131 -log -hostname=”ここにサーバー名を自分で入力する” -MapCycle=MyOtherMapCycle -motd=MyOtherMOTD
exit
新しいテキスト ドキュメント.txtを開いて上記記載の文章を入力し、一旦保存しましょう。
重要なのは「password=パスワードが必要な場合は入力 -Port=27102 -QueryPort=27131 -log -hostname=”ここにサーバー名を自分で入力する”」の部分。
サーバー名や、パスワード有り/無し(無しの場合はpassword=のみで良い)、ゲーム用のポート(TCP/UDP 27102と27131)を指定できるので必ず設定しておきましょう。
IPv6を使用している方の場合開けられるポートが固定になっていることも多い為、ゲーム用のポート設定は割と重要だと思います。
新しいテキスト ドキュメント.txtを「InsurgencyServer_Start.bat」に名前を変える
新しいテキスト ドキュメント.txtを「InsurgencyServer_Start.bat」に名前を変えましょう。
「拡張しを変更するとファイルが使えなくなる可能性があります。」と表示が出ますが「はい」でOK。
拡張子が表示されないという方は
- Windows 10 May 2021 Update ファイルの拡張子を表示する – Panasonic CONNECT
- Windows 10:ファイルの拡張子を表示/非表示にしたい。 – Cannon パソコンなんでもQ&A 6月号
- Windows 10 – ファイルの拡張子を表示/非表示にする方法 – PC設定のカルマ
「拡張子が表示されないよ!」という方は上記リンク類をご確認ください。
割と基本的な操作で、Windowsを扱う以上ほぼ必須の設定と思われるので、お忘れなく。
「InsurgencyServer_Start.bat」を起動後「ファイアウォールのアクセスを許可」しよう
今までの設定が正しく出来ているかどうかを確認するため「InsurgencyServer_Start.bat」を起動してみましょう。
初めてサーバーを起動した際に「ファイアウォールでブロックされています」とWindows Defenderから怒られるので「アクセスを許可」しましょう。(でなければサーバーが外部に公開されません。)
「Display: Advancing spawns for faction 255 to obj 0云々」のメッセージが表示されれば成功
LogGameMode: Display: Advancing spawns for faction 255 to obj 0: 1 zones enabled (16 player starts), 0 disabled
上記画像の赤線で引いた上記メッセージが表示されていれば問題なくサーバーが立っているはず。
これで最低限の設定で起動できることは確認出来ました。
2023年4月5日現在Insurgency Sandstormで日本語IMEでIPアドレスが正常に入力できない不具合あり
2023年4月5日現在「Insurgency Sandstorm V1.14.0.253352」で日本語IME環境ではIPアドレスが正常に入力できない不具合あるようで、当方や知り合いを含んだ複数の環境(Windows 10/11共に)でIPアドレスが正常に入力できない状態(入力できない、入力後OK、キャンセルが押しても反応しなくなる→Alt Tabでアプリを切り替えるとボタンが押せるようになる)です。
既に開発元には再現性の上記動画及び報告は行っておりますが返信は無く、いつ解決されるかも未定の状態です。
「どうせコミュニティサーバーリストからアクセスするからどうでも良いや」と思われてそうですが、LAN内でサーバーが建っているかの確認は「IPアドレスに接続」から行う形となるため、非常に不便です。
Insurgency SandstormでIPアドレスが入力できない不具合を解決する方法について
解決方法は「WindowsのIME設定から英語(米国)を追加」し、Windows右下のIME切替から「英語(米国) USキーボード」に設定すればIPアドレスが問題なく入力できるようになるはず。
IPアドレスを入力するときだけ「USキーボード」にすれば問題なく文字が打てるようになるので、やや面倒ですね…。
サーバーのログイン時に表示されるファイルを表示する
サーバーログイン時に表示される文字(上記画像赤枠)を追加する場合、以下設定が必要です。
別に設定する必要はないと思われる方はスルーして頂いても結構です。
「C:\steamcmd\steamapps\common\sandstorm_server\Insurgency」に画像2枚目のように「Config」というフォルダを作成します。
ディレクトリでいうと「C:\steamcmd\steamapps\common\sandstorm_server\Insurgency\Config」が正解。
その次に「Server」というフォルダを追加。
因みにこのディレクトリは「C:\steamcmd\steamapps\common\sandstorm_server\Insurgency\Config\Server」となります。
「Insurgency/Config/Server/MyOtherMOTD.txt」にMyOtherMOTD.txtを作成
「Server」内に新しいテキスト ドキュメント.txtを作成し、その内容に表示したいメッセージを記載しましょう。
その後「新しいテキスト ドキュメント.txt」を「MyOtherMOTD.txt」に変更することで、サーバーログイン時のメッセージを好きなものに変更が可能です。
因みにMyOtherMOTD.txtを置くディレクトリ的には「C:\steamcmd\steamapps\common\sandstorm_server\Insurgency\Config\Server\MyOtherMOTD.txt」となります。
「Serverフォルダ」に「MyOtherMapCycle.txt」を新しく作成する
Scenario_Crossing_Checkpoint_Insurgents
Scenario_Crossing_Checkpoint_Security
Scenario_Farmhouse_Checkpoint_Insurgents
Scenario_Farmhouse_Checkpoint_Security
Scenario_Hideout_Checkpoint_Insurgents
Scenario_Hideout_Checkpoint_Security
Scenario_Hillside_Checkpoint_Insurgents
Scenario_Hillside_Checkpoint_Security
Scenario_Ministry_Checkpoint_Insurgents
Scenario_Ministry_Checkpoint_Security
Scenario_Outskirts_Checkpoint_Insurgents
Scenario_Outskirts_Checkpoint_Security
Scenario_PowerPlant_Checkpoint_Insurgents
Scenario_PowerPlant_Checkpoint_Security
Scenario_Precinct_Checkpoint_Insurgents
Scenario_Precinct_Checkpoint_Security
Scenario_Refinery_Checkpoint_Insurgents
Scenario_Refinery_Checkpoint_Security
Scenario_Summit_Checkpoint_Insurgents
Scenario_Summit_Checkpoint_Security
Scenario_Tideway_Checkpoint_Insurgents
Scenario_Tideway_Checkpoint_Security
Scenario_Bab_Checkpoint_Insurgents
Scenario_Bab_Checkpoint_Security
Scenario_Citadel_Checkpoint_Insurgents
Scenario_Citadel_Checkpoint_Security
Scenario_Prison_Checkpoint_Insurgents
Scenario_Prison_Checkpoint_Security
※一応上記リストには「2022年5月17日の大型アップデート」で追加された無料のマップ「Prison」を追加しています。
何故か初期セットアップ時にはマップローテーション用のファイルが作成されていないため、自身で用意する必要があります。
「Server」内に「新しいテキスト ドキュメント.txt」を作成し「MyOtherMapCycle.txt」へとファイル名を変更しましょう。
「MyOtherMapCycle.txt」に上記内容をコピペし、保存で完了です。
因みにディレクトリ的に「C:\steamcmd\steamapps\common\sandstorm_server\Insurgency\Config\Server\MyOtherMapCycle.txt」となります。
サーバー設定ファイル「Game.ini」を作成する
これまた謎なのですが初回セットアップ時にはゲーム設定となる「Game.ini」が存在しておらず、こちらも自身で用意する必要があります。(何故必須なのに自分でファイルを作らないといけないのか訳が分からん)
サーバー設定ファイル「Game.ini」を記述する
[Rcon]
bEnabled=True
Password=サーバー管理パスワードを入力
ListenPort=27015
IncorrectPasswordBanTime=30
MaxPasswordAttempts=3
bAllowConsoleCommands=True[/Script/Insurgency.INSGameMode]
bKillFeed=True
bKillFeedSpectator=True
bKillerInfo=True
bKillerInfoRevealDistance=True
TeamKillLimit=3
TeamKillGrace=0.2
TeamKillReduceTime=90
bDeadSay=True
bDeadSayTeam=True
bVoiceAllowDeadChat=True
bVoiceEnemyHearsLocal=True
bVoiceRadioBroadcastLocal=False
WarmupEnterTime=30
DroppedWeaponLifespan=600
[/Script/Insurgency.INSMultiplayerMode]
bAutoRecordReplaysDedicated=True
bHandleDedicatedServerReplays=True
GameStartingIntermissionTime=30
MinimumPlayers=1
RoundLimit=2000
WinLimit=Varies
GameTimeLimit=-1
PreRoundTime=10
RoundTime=Varies
OverTime=60
TeamSwitchTime=10
SwitchTeamsEveryRound=Varies
bAllowPlayerTeamSelect=True
BotQuota=Varies
InitialSupply=100
MaximumSupply=100
bSupplyGainEnabled=True
bAwardSupplyInstantly=True
SupplyGainFrequency=150
GameStartingIntermissionTime=5
WinTime=5
PostRoundTime=5
PostGameTime=5
bAutoAssignTeams=True
bAllowFriendlyFire=True
FriendlyFireModifier=0.5
FriendlyFireReflect=0.5
bAutoBalanceTeams=True
AutoBalanceDelay=True
bMapVoting=True
bUseMapCycle=True
bVoiceIntermissionAllowAll=True
IdleLimit=150
IdleLimitLowReinforcements=90
IdleCheckFrequency=30
bAllowThirdPersonSpectate=False
bBots=True
bAllowDeathCamera=True
bUsesAdvancedSpawning=True
ScoreboardConfig=(bDisplayRoundsWon=True,bDisplayTeamScore=True,bDisplayTeamPoints=True,PointsText=” “,bDisplayPlayerScore=True,bDisplayPlayerKAD =True,bDisplayPlayerObjectives=True,bAlwaysShowExtendedInfo=True,bDisplayObjectiveBriefing=True)
bFireSupportAllowed=True[/Script/Insurgency.INSCoopMode]
AIDifficulty=0.3
bUseVehicleInsertion=True
FriendlyBotQuota=1
MinimumEnemies=12
MaximumEnemies=40
bSoloGame=True
FriendlyBotQuota=3
bLoseWhenAllPlayersDead=True
AlarmDuration=60
MaxPlayersToScaleEnemyCount=8
bBotsUseHumanLoadouts=True
bRestrictClassByPlayerLevel=True[/Script/Insurgency.INSCheckpointGameMode]
DefendTimer=120
DefendTimerFinal=300
RetreatTimer=60
RespawnDPR=0.1
RespawnDelay=1
PostCaptureRushTimer=60
CounterAttackRespawnDPR=1
CounterAttackRespawnDelay=20
ObjectiveTotalEnemyRespawnMultiplierMin=1
ObjectiveTotalEnemyRespawnMultiplierMax=1
FinalCacheBotQuotaMultiplier=1.5
bForceSoloWaves=False
bCounterAttackReinforce=True
bUseRandomCounterAttackTypes=True
ObjectiveTotalEnemyRespawnMultiplierMin=1
ObjectiveTotalEnemyRespawnMultiplierMax=1
FinalCacheBotQuotaMultiplier=1.5
[/Script/Insurgency.TeamInfo]
bVotingEnabled=True
TeamVoteIssues=/Script/Insurgency.VoteIssueKick[/Script/Insurgency.VoteIssueKick]
bCanTargetEnemies=False
bRequiresMinimumToStart=True
DefaultVoteBanDuration=120
IdleVoteBanDuration=-1
MinimumPlayerRatio=0.25
MinimumPlayersRequired=3
MinimumYesNoDifference=2
VotePassRatio=0.75
VoteTimeout=90
正直ここは「どんなサーバーにしたいか?」という内容で大幅に変わるのであくまで一例です。
当方は中華サーバー系にある「Checkpointオンリー、最大40BOTサーバー(フルサプライで武器、弾薬など持ち放題。但し敵は無茶苦茶多い)」という設定にしたかったため、上記のような設定にしています。
ただこのサーバーの設定を1人で遊ぶには非常にキツい設定だったのでその場合は味方BOTを2人自動で入るように設定しています。
- INS_Sandstorm/Insurgency/Saved/Config/LinuxServer/Game.ini – GitHub
- Sample Game.ini file for Your Insurgency: Sandstorm Server – NODECRAFT
「Game.ini」を細かく弄りたいという人は上記サイト系を参照に触っていくと分かりやすいかと思います。
記述方式的には「設定したいゲームモード([/Script/Insurgency.INSGameMode]、[/Script/Insurgency.INSMultiplayerMode]、[/Script/Insurgency.INSCoopMode]
)」の下に設定したい項目類(AIDifficulty=0.3、bUseVehicleInsertion=True、FriendlyBotQuota=1)等を記述していく方式。
この辺の解説は恐らく別記事で出せたらなーとは思っているものの、膨大な量になりそうなので不明。(面倒くさいので出すかは保証しない)
正直「GitHub」のファイルが分かりやすく記述されているので、これを翻訳しつつ勉強した方が良さそう。(自分はそうした)
デフォルトの設定ではXP(経験値)が取得できる設定になっていない
- Enabling Stats – INSURGENCY SANDSTORM SERVER ADMIN GUIDE
これも「なんでやねん案件」なのですが、サーバーの初回セットアップ時では「XP(経験値)」が入る設定が別途必要です。
- GameStats Token Generator – gamestats.sandstorm.game
上記「GameStats Token Generator」にアクセスし、Steam IDでログイン。
「Generate Token」でトークンを発行し、コードを適当なメモ帳にでも控えておきましょう。
「InsurgencyServer_Start.bat」に「-GameStatsToken=xxxxxxxxxxx」を追記する
start InsurgencyServer.exe Oilfield?Scenario_Refinery_Checkpoint_Security?MaxPlayers=28?password= -Port=27102 -QueryPort=27131 -log -GameStatsToken=xxxxxxxxxxx -GameStats -ruleset=OfficialRules -hostname=”[JP]HRSM 12V40 BOT FULL SUPPLY FREE PLAY SERVER” -MapCycle=MyOtherMapCycle -motd=MyOtherMOTD
exit
「C:\steamcmd\steamapps\common\sandstorm_server」にある「InsurgencyServer_Start.bat」に先ほど「GameStats Token Generator」で発行した「-GameStatsToken=xxxxxxxxxxx」を追記しましょう。
記載した「InsurgencyServer_Start.bat」の内容(サンプル)を上記に置いておきます。
正直「何から何まで他人任せだなコイツ」と思ってしまう。こんな基本的なことぐらい初めから有効化しとけよと思わなくもない。
サーバー管理ツール「ISRT」もお勧め
- ISRT v1.5 – Final Version released – GitHub
サーバー管理ツール「ISRT v1.5」が「GitHub」で公開されており、2023年4月5日時点でも問題なく使用できています。
強制的にマップをリストから選択、入れ替えたり、Admin権限でもメッセージ送信、プレイヤーのキック、プレイヤーのBAN、BANリストの管理等が可能なため、サーバーを運営するうえで必須のツールと言えそうです。
但しRCON用のポートは別に開放が必要(RCONは「Game.ini」で設定)なので、こちらのツールを使用する場合は必ずポート開放を行うように。
以上参考になれば幸いです。
サーバー紹介
- [JP]HRSM GROUP Max 96BOT 100 Points No FF/TK Server – BATTLEMETRICS
「BATTLEMETRICS」というサイトにサーバーを登録してみました。
サーバー名は変わる可能性がありますが「HRSM GROUP」という名前は付けて暫く動かすと思うので、お暇ならご参加をお待ちしています。
コメントを書く