Arma Reforger

Arma Reforger

Not enough ratings
ゲームをホストする方法(サーバーを建てる方法)
By Domtaro
日本人向けにArma Reforgerのサーバーの建て方を説明します。
最終更新:2024.05.22(公式ホスティングガイド記事の紹介を追加)
3
   
Award
Favorite
Favorited
Unfavorite
はじめに
2022/12/01の”Ground Support”アップデートから、『Arma 2』や『Arma 3』と同様に、ゲーム本体だけで「プレイヤー兼サーバー」としてゲームをホストできるようになりました。

本ガイドでは、次の二つの方法でゲームをホストする(サーバーを建てる)方法を説明します。

①『Arma Reforger』(ゲーム本体)のゲーム内ホスティング機能でサーバーを建てる
 → 「A.ゲーム内ホスティングで建てる」セクションを参照してください。

②『Arma Reforger Server』(専用サーバーツール)で専用サーバーを建てる
 → B-1.からB-6.のセクションを参照してください。


読んでも分からない点があったら、コメントで質問いただければ、分かる範囲でお答えします。


※以下、古い記述
Arma Reforgerでは、2022/05/19現在、ゲーム本体からユーザがゲームをホストする方法はありません。
ゲームをホストするためには、Arma Reforgerを購入した際にゲーム本体と合わせてsteamライブラリに追加されている、「Arma Reforger Server」を使ってdedicated serverを建てる必要があります。
本ガイドでは、「Arma Reforger Server」を使ってdedicated serverを建てる方法を説明します。
ある程度Windowsの知識がある方向けです。



ポート転送(ポート開放)設定をする
『Arma Reforger』のサーバープロセスは、動作時に以下のポートで待ち受けます。
クライアントからインターネット経由でサーバーに接続する場合、ルーター等のポート転送(ポート開放)設定や、Windowsファイアウォールの通信許可設定などが必要です。

UDP 2001 //ゲーム用。必須。後述のサーバー設定で変更する場合、それに合わせること UDP 17777 //Steam Queryプロトコル用。必須ではない。a2s設定のポートと合わせること UDP 50000-65000 //現在不要?

※2024.05.22現在『Arma Reforger』は、ゲーム内ホスティング/Arma Reforger Server 共にUPnPをサポートしていないため、手動でのポート開放設定が必須です。
 今後のサポート予定についても不明です。
 参考…この件に関するBI公式のフィードバックタスク[feedback.bistudio.com]


A.ゲーム内ホスティングで建てる
A.1.「新しいサーバーをホストする」画面を開く
次のa,bどちらかで開きます。

a.メインメニュー>マルチプレイヤー>「ホストする」タブを開き、[新しいサーバーをホストする]を選択する




b.メインメニュー>シナリオなどから目的のシナリオ(ミッション)を先に選び、[ホストする]を選択する



A.2.サーバーの設定を行う
必要に応じて各種設定を変更します。


< 設定 タブ>
サーバー名
 デフォルトでPCのホスト名+シナリオ名になっているので、分かりやすい名前に変更してください。
ポート
 リッスンするポート番号をデフォルト2001番から変えたい場合、変更してください。
 ルーターで転送しているポート番号と一致させてください。
シナリオ
 遊びたいシナリオ(ミッション)を指定してください。
 Modシナリオも選択可能です。
 下の「ソース」欄にシナリオの収録元Mod名(バニラならArma Reforger)が表示されるので参考にしてください。
プレイヤー
 プレイヤー人数を制限したい場合、指定してください。
 シナリオに設定されている最大人数を超える値には増やせません。
可視性
 サーバーブラウザ上に公開したくない場合、”いいえ”に設定してください。
 その場合、サーバーに入るためにはIPアドレス直接指定が必要になると思われます。
BattlEye
 BattlEyeアンチチートによる保護の有無を設定します。
 特別な理由がない限り、”はい”のままにしてください。
クロスプレイ
 Xbox版のプレイヤーとクロスプレイしたい場合、”はい”に設定してください。
パスワード
 サーバー入室にパスワード制限をかけたい場合(プライベートサーバーにしたい場合)、設定してください。
管理者パスワード
 サーバー管理者として振る舞うためのパスワードを設定します。
 管理者機能の詳細はセクション「B-1.設定ファイルを用意する」を参照してください。
三人称
 三人称視点を制限したい場合、”いいえ”に設定してください。
無線通信
 無線によるコミュニケーション機能を制限したい場合、”いいえ”に設定してください。
直接的なコミュニケーション
 直接発話するコミュニケーション(ボイスチャット)機能を制限したい場合、”いいえ”に設定してください。
最大描画距離
 全般的な描画距離設定についてプレイヤーに強制します。
 値はサーバー負荷やシナリオ上の必要性に応じて決めてください。
ネットワーク描画距離
 どれだけの遠くの物まで複製・ネットワーク同期させるかを設定します。
 最大描画距離と一致させるのがいい気がします。
 サーバー処理負荷やネットワーク負荷に影響すると思われます。
草の最小描画距離
 草を描画させたい最低限の距離を設定します。
 値は処理負荷に応じて決めてください。

< Mod タブ>
シナリオの他に使いたいMod(武器、車両、システムなど)を「有効化」の方に移動させて指定してください。

< 詳細設定 タブ>
Host LAN
 インターネットに公開せず、ローカルネットワーク(LAN)内でホストしたい場合、”はい”に設定してください。
 一人で遊ぶ場合などに有効にするとよいと思います。
パブリックIPアドレス
 特に入力しなければ、自動的にグローバルIPアドレスを判断して設定するようです。
 複数のIPアドレスを持っているなどで明示的に指定したい場合、手動で入力してください。
パブリックポート
 「設定」タブの「ポート」との違いは不明です。
 特に理由が無い限りそちらと一致させておいてください。
バインドIPアドレス
 ネットワークインターフェースを複数持つような複雑な環境で使う設定のようです。
 デフォルト”0.0.0.0”だと自動設定されるそうです。
 特に理由がない限りデフォルトから変更しないでください。
バインドポート
 「バインドIPアドレス」と同様。
 特に理由がない限り「パブリックポート」と一致させておいてください。


A.3.開発公式のホスティングガイドを見る(参考)
Bohemia Interactive公式のゲーム内ホスティングガイド[reforger.armaplatform.com]が公開されました。(英語)
こちらも合わせて参照してみてください。


B-1.設定ファイルを用意する(バニラの場合)
テキストエディタ等を使って、サーバー設定ファイルを用意します。
中身については以下のサンプルを参考に、必要な個所を変更してください。

ここではMod(カスタムシナリオ等)なしの場合で説明しています。
 Modありの場合については次の「B-2.設定ファイルを用意する(カスタムシナリオほかModを導入する場合)」のセクションを参照してください。

例:
{ "publicPort": 2001, "game": { "name": "テストサーバー", "password": "", "passwordAdmin": "password", "scenarioId": "{59AD59368755F41A}Missions/21_GM_Eden.conf", "maxPlayers": 10, "visible": true, "crossPlatform": true, "supportedPlatforms": [ "PLATFORM_PC", "PLATFORM_XBL" ], "gameProperties": { "serverMaxViewDistance": 1600, "serverMinGrassDistance": 50, "networkViewDistance": 1500, "disableThirdPerson": false, "fastValidation": true, "battlEye": true, "VONDisableUI": false, "VONDisableDirectSpeechUI": false }, "mods": [] }, "operating": { "lobbyPlayerSynchronise": true } }

各パラメタの詳細な説明は、次のドキュメントを参照してください。
読んでも分からない点は、コメントで質問いただければ分かる範囲でお答えします。
https://community.bistudio.com/wiki/Arma_Reforger:Server_Config


ほか、補足や注意点について以下の通りです。

IPアドレスは、現在普通の環境であれば、指定しなければ自動で適切な値を設定するようになったらしいので、基本的には設定不要です。
 従って、ネットワーク知識があって特殊な環境を構築している方だけ、必要に応じて上記ドキュメントを参照して設定してください。

※以下、古い記述
gameHostBindAddressは、空文字またはプライベートIPアドレスを指定するようです。空文字でいいと思います。
 gameHostRegisterBindAddressは、グローバルIPアドレスを指定します。インターネット経由で接続する場合、必須です。


adminPassword (現在はpasswordAdmin)パラメタは、指定しておくとゲームに参加した後に、ゲーム内チャットで
 #login <パスワード>
 と入力することでゲーム管理権限が取得でき、ゲーム内チャットで「#<コマンド>」と打つことでサーバーをコントロールできます。(<>は強調。入力不要)
 ゲームマスターモードでは、管理者ログインするとその人がゲームマスターになるように見えます。
 #logout
 で管理権限を手放します。
 現在分かっているコマンドは次の通りです。(公式の一覧は見当たりませんでした、もし見つけたら教えてください。)
コマンド
説明
#login <管理者パスワード>
管理者としてログインします。
#logout
管理者権限を手放します。
#roll <任意:数字>
サイコロを振ります。
例えば#roll 6と指定して実行すると、1~6の間でサイコロが振られます。
管理者でなくても実行できます。
#kick <プレイヤー名>
指定したプレイヤーをゲームから追放します。
#restart
ゲームを再スタートします。
#shutdown
サーバーを停止します。

・scenarioIdは、遊びたいゲームのシナリオIDを指定します。
 シナリオIDは、次のようにArmaReforgerServer.exeに-listScenariosオプションを指定して実行すれば、一覧が表示され確認できます。
 
ArmaReforgerServer.exe -listScenarios


B-2.設定ファイルを用意する(カスタムシナリオほかModを導入する場合)
ワークショップで導入したカスタムシナリオのサーバーを建てたい場合、例えば次のようにサーバー設定ファイルを書きます。

例:
{ "publicPort": 2001, "game": { "name": "テストサーバー", "password": "", "passwordAdmin": "password", "scenarioId": "{6EA2E454519E5869}Missions/CAH_Military_Base.conf", "maxPlayers": 10, "visible": true, "crossPlatform": true, "supportedPlatforms": [ "PLATFORM_PC", "PLATFORM_XBL" ], "gameProperties": { "serverMaxViewDistance": 1600, "serverMinGrassDistance": 50, "networkViewDistance": 1500, "disableThirdPerson": false, "fastValidation": true, "battlEye": true, "VONDisableUI": false, "VONDisableDirectSpeechUI": false }, "mods": [ { "modId": "591AF5BDA9F7CE8B", "name": "Capture & Hold", "version": "1.0.4" } ] }, "operating": { "lobbyPlayerSynchronise": true } }

"mods"の内容がポイントです。
ここに記述する内容について、ゲーム本体の機能で簡単に生成できるようになりました。

B-2.1.Modマネージャーを開く
導入したいMod”だけ”を有効化した状態で、メインメニューの右上の、パズルのピースみたいなマークをクリックします。
(ワークショップ画面からもアクセス可能)


B-2.2.「JSON」タブを開き、[Enter]または右下のクリップボードにコピーを選択する


B-2.3.設定ファイルにペーストして反映する


ちなみにサーバーマシン自体は、必ずしも事前にゲーム本体を起動して、modをダウンロードしておく必要はありません。サーバ起動時に自動的にDLされるためです。
(サーバマシンに、ワークショップからmodをDLするためだけに、ゲーム本体をインストールする必要はないということ)


※以下、古い記述
ここに設定する情報は、ワークショップでDLしたmodのフォルダの中にある、「ServerData.json」というファイルの中身を見れば分かります。

ワークショップでDLしたmodは、通常次のディレクトリに保存されています。
C:\Users\<ユーザ名>\Documents\My Games\ArmaReforger\addons\<modのID>

その中にある「ServerData.json」をテキストエディタで開き、次の対応付けでサーバ設定ファイルに値を写します。
ServerData.json
サーバ設定ファイル
"gameId"
"scenarioId"
"id"
"modId"
"name"(3行目くらいにあるやつ)
"name"



B-3.サーバーを起動する
ArmaReforgerServer.exeに、用意した設定ファイルのパスを-configオプションで指定して実行します。

例:
ArmaReforgerServer.exe -maxFPS 120 -config "C:\temp\serverconf.json"

パスは絶対パスまたはArmaReforgerServer.exeからの相対パスでも指定できそうですが、絶対パスで指定しておくのが無難だと思います。

また現状、-maxFPSを60~120の範囲で指定することが強く推奨されています。

実行すると、標準出力でログがいろいろ流れ出します。
以下のような表示で止まったら起動成功です。
DEFAULT : Entered online game state. UpdateEntities WORLD : Frame SCRIPT : SCR_BaseGameMode::OnGameStateChanged = GAME

「ENGINE : Game destroyed.」などで実行が終了してしまった場合は、何かがうまくいっていません。設定ファイルなどを見直しましょう。


その他:
-serverオプション、-addonsDirオプション、-addonsオプションを組み合わせることで、シンプルなローカル専用サーバーを建てられます。
自分で作ったModのテストなどに使えます。
詳細は下記公式Wikiドキュメントを参照してください。
https://community.bistudio.com/wiki/Arma_Reforger:Startup_Parameters#Hosting


B-4.サーバーに参加する
ゲーム本体のサーバーブラウザを開いて、自分が建てたサーバーを探し、参加します。
パスワードを設定している場合、入力を求められます。

※注意
現状、自宅内で外部公開する専用サーバーを建てて、そこに同じ宅内LANのクライアント(サーバーマシン自身や他PC)から接続しようとすると、エラーで接続に失敗する場合があります。
これは、今のところ『Arma Reforger』の仕様上の制限のようです。
詳細は「トラブルシューティング」セクションを参照してください。

サーバ設定でgameHostRegisterBindAddressにグローバルIPアドレスを設定し、ルータ等のポート転送設定を正しく行っている場合、IP直接指定でも接続できます。


B-5.サーバーを終了する
ArmaReforgerServer.exeの実行画面に戻り、[Ctrl]+[C]を押下します。

次のように表示され、exeが終了します。
ENGINE : Game destroyed.


B-6.ログを確認する
サーバー動作に関するログファイルは、デフォルトで次のディレクトリに出力されています。
C:\Users\<ユーザ名>\Documents\My Games\ArmaReforgerServer\profile

また、ArmaReforgerServer.exeの実行時に、-logsDirオプションでディレクトリパスを指定することで、任意の場所にログを出力させることもできます。


トラブルシューティング
ワークショップのカスタムシナリオのサーバーに入ろうとしたらゲームが落ちる
※この事象が2024/05/22現在も発生するかどうかは未確認です。

 ワークショップシナリオのサーバーに入ろうとした際、クライアントのゲームが落ちて参加できない事象が発生することがあります。
 クラッシュレポートが表示され、エラーログを見るとAccess Violationとあります。

 この事象は、システムパーティション(Cドライブ)とは別のパーティションや外付けドライブにゲーム本体をインストールしている環境で発生するようです。
 (サーバー側ではなくクライアント側の問題)

 システムパーティション(Cドライブ)にゲーム本体を移動またはインストールし直すことで解消されます。


外部公開ゲームサーバーとゲームクライアントを同じPCで立ち上げて接続しようとすると、次のようなエラーで接続できない
Kick cause code: group=1 'REPLICATION', reason=3 'CONNECTION_FAILURE'


 結論としては、現状そのような接続は基本的にできなさそうです。

 今のところの『Arma Reforger』の動作として、グローバルネットワーク向けに公開されたサーバーに対しては、たとえ同じLAN(同じマシン)から接続する場合でもグローバルIPアドレス宛の通信で接続しようとする(プライベートIPアドレス指定の接続は受け付けない)ようです。

 Armaに限らず一般的に、このようにLAN側から自身のWAN側アドレスへと行われる通信はうまく通信できません。
 例外的に、「NATループバック」や「ヘアピンNAT」と呼ばれる機能に対応した特定のルーター製品は、そのような通信が成立するように特別に処理してくれます。
 しかし、最近流通しているルーター製品はそういった機能に対応していないことが多いようです。

 そういったルーターが無い環境でローカルのサーバーに接続したい場合は、以下のいずれかの方法で建てて、プライベートIPアドレスで接続するしかないと思われます。
 ・パブリックIPアドレスの設定にプライベートIPアドレスを指定して建てる
 ・-serverオプションでローカルサーバーとして建てる
 ただしその場合、当然外部(インターネット)からは接続できません。

 現状、自宅でサーバーを建てて、宅外(フレンド)と宅内(自分PC)の両方から接続したいような場合は、専用サーバーを使わずにゲーム内ホスティングでプレイヤー兼サーバーになるしかないと思われます。

※参考…この件に関するBI公式のフィードバックタスク[feedback.bistudio.com]
 『Arma 3』では公開サーバーに対しても、同じLAN内からはプライベートIPアドレスで接続することが出来ましたが、本来この仕様はセキュリティ上のリスクがあるため『Arma Reforger』では非対応となっていると思われます。


変更履歴
2022/05/23 追記:
インターネット経由でサーバへ接続するために必要な設定、情報が抜けていたため追記しました。

2022/05/25 追記:
・ワークショップで導入したカスタムシナリオのサーバを建てる場合の設定方法を追記しました。
・ほか、細かい点を直しました。

2022/05/26 追記:
・トラブルシューティング事例を追記しました。

2022/05/30 追記:
・ログ出力に関する情報を追記しました。
・ゲーム内管理コマンドの一覧を追記しました。
・不要な記述を削除しました。
・変更履歴を別のセクションに移しました。

2023/10/28 追記:
・2022/12/01の”Ground Support”アップデートで導入された、「ゲーム内ホスティング機能」でサーバーを建てる方法を追加しました。
 それに合わせて全体のセクション名称などを修正しました。
・『Arma Reforger Server』でサーバーを建てる場合の方法についていろいろ変更が行われており、内容が古くなっていたため最新化しました。
・トラブルシューティング事例を追加しました。

2024/05/22 追記:
・ゲーム内ホスティングの方法について、公式ガイドが公開されたため、その情報を追記しました。
・UPnP非対応の件や、専用サーバーへの同一LAN内からの接続不可の件について、関連する公式フィードバックタスクへのリンクを追記しました。
 公式対応されたかなどの最新情報が知りたい場合、そちらを参照してみてください。
・全体的に、読みづらい個所などを少し修正しました。