【亀】最短Arma3 Exile Modサーバの上げ方@2020/3更新
注意:閉鎖してしまったリンク先などがありますので注意
追記:ちょっとだけ全体的に丁寧に加筆2022/3/3
追記:修正及び追記しました2020/3/20
追記:主なトラブルQ&A
面倒な事はさておき、手っ取り早くExileサーバを上げてみたい方への記事になります(スクショも沢山入れた)
色々を試行錯誤(半日掛かった)したので、多分、これが、一番の最短手順になるんではないかと思います。まずは、サーバが動いてから、安心していただこうと・・いう事で。
(;^ω^)
注意:余計な設定はスルーしてます、Windows版、32bitモード、ほとんどデフォ動作
公式のDedicated Serverの構築方法は、こちら
サーバーPCスペック
構築用なら低スペ(ノートPC)でも十分に稼働します(Discord部屋では、Celeronで構築されてる方もいらっしゃいます)
高スペに越した事ないですが、印象的にはCore i3/Ryzen3(4コア・3.5Ghz以上)もあれば十分かと思います。
1~2コアに処理が集中するようなので、多コアよりも高クロック重視です。
メモリも多めに、最低8GB、余裕を持って16GBは欲しいところです(RAMDISK運用も視野に含め)
ストレージは、HDDではなくSSDがベスト、空きは最低50GB程度は確保してください(バックアップも考慮)
また、サーバには、高価なビデオカードは不要です。内蔵のしょっぱいビデオ機能で十分です。
- Windowsが楽ですが、Linuxでも可です
(Linuxの場合は、この記事では対象外) - メモリは、サーバ単体で2~3GB程度消費します
- AI処理だけを他PCに任せる事が可能です(Headless Client)
- 多コアCPUの場合は、余ったコアに割り当てる事ができます
(使うのは2コア程度です) - ログファイルが大きくなるので、これをRAMDISKに指定すると低負荷を望めます
- 常時適度な負荷が掛かるので、空調もしっかりと
必要なネット回線
Arma3は、IPv4通信が前提となります。IPv6には対応してません。
国内において、理想は、IPoE回線上のIPv4となります。
公開するなら、サーバPCが外に見えるように設定する必要があります(ルータ設定、NAT)
回線によっては、公開すら不可能な場合もあるので注意です(IPoEの種別で、DS-Lite系・楽天とかIIJ等が該当、その場合は、別途PPPoE契約が必要)
ファイヤーウォール設定を回避する設定も必要になります。
必要なスキル
一部、DOSコンソールでの作業、データベース、OS・ファイル操作・ネットワークの基本知識が必要になります。
テキストエディタも、専用のものを利用ください(メモ帳では無理)
- エディタは、VisualStudio Codeがオススメです(無償)
- 折れない心(8~9割の人は逃避してる印象)
- 外国語のウェブサイトも躊躇なく漁れる(翻訳含)
不安なら、当方のDiscord専用チャンネルで、適度にご案内しますので、ご安心あれ。
必要なソフトウェアを導入
以下をインストールしておいてください。既に入ってるかもしれませんが。
- DirectX(既に入ってるかもしれない)
- VS2015Visual C++再配布可能パッケージ(既に入ってるかもしれない)
簡単にサーバを構築させるため、x86版(32ビット)は、必ずインストールしてください。
サーバ用Steamアカウントの取得
事前に、適当なメールアドレスで、サーバ用のSteamアカウントを取得しておきます。
※ID/パスワードは忘れないようにメモっておきましょう(忘れた頃に、再認証が来ますよ)
- Arma3 Dedicated Serverは無償で利用できます
- セキュリティ上、念の為、サーバ用Steamアカウントを作っています
- 既に持ってるSteamアカウントで、サーバにインする事が可能です
サーバーディレクトリの作成
サーバーを置くディレクトリを作成しておきます。管理しやすい場所にしてください。以下、サーバールートと呼びます。
MODなどファイル容量が大きいので、ドライブ空き容量(50GB以上)に注意ください。
可能であれば、ドライブのルートに置いた方が楽です(d:¥a3server¥、e:¥arma3server¥など)
- パス指定が長くない方が管理しやすい
- できれば、HDDは避け、SSDなどを利用してください
steamcmdのインストール
Arma3 Dedicatedサーバを入手するために、steamcmdを利用します(steamのコマンドライン版)
ダウンロードして、サーバーディレクトリの近くに解凍します。
Arma3サーバーダウンロード
こちらのサイトから、「Arma3server_steamcmd_example.cmd」をコピペして、steamcmdディレクトリ内にファイルを作ります。ファイル名は変更しても構いません。
- 拡張子は、”.cmd”なので注意(エクスプローラーの設定で、拡張子を表示オンにしてください)
- このファイルは、Arma3サーバの更新にも利用できます
- Arma3本体の更新と同時に、Arma3サーバの更新も入ります
以下の3箇所を編集します。
STEAMLOGINには、サーバ用Steamアカウントを記述
A3serverPathには、サーバーディレクトリを記述
STEAMPATHには、steamcmdディレクトリを記述
終わったら、このファイルをダブルクリックして実行します。
steamエンジンの構築の後、Arma3サーバのダウンロードが始まります。結構、時間が掛かります。
失敗しても、また再度、何度実行しても良いので、ご安心を。
先程作成した、サーバーディレクトリ内に、沢山ファイルが生成されているはずです。
サーバですが、Arma3そのものと言っても過言じゃありません。
このcmdファイルは、Arma3サーバ自体のアップデートに使いますので、消さないでおいてください。今後は、これを実行すれば、更新されます。
Exile Modサーバのダウンロード
こちらの公式サイトからダウンロードします。
「Download Server Files」をクリック、現在は、ExileServer-1.0.4a.zipが最新となります。これを、デスクトップなどに解凍してください。
現在は、Steamからもダウンロード出来るようです。
※サーバ用のMod
サーバー基本ファイルの構築
(2020/3/20 内容を大きく書き換えました)
細かいですが、解凍したものから、以下のファイルをコピーします。
- @ExileServerディレクトリを、丸コピー(サーバルートへ)
- battleyeディレクトリを、丸コピー(サーバルートへ)
- tbbmalloc.dllをコピー(サーバルートへ)
mpmissionsから適当なミッションファイルをコピー(mpmissionsへ)します。マップ毎に、サンプルミッションが用意されています。
- Exile.altis.pbo(Altisマップ)
Exile用に設定されたものであれば、他のファイルでも構いません。
Exile Modキーのダウンロード
Exileサーバに付属された認証用のキーが古いため、別途入手しないといけません。
こちらからダウンロードして、サーバルートのkeysディレクトリにコピーします。
明確に記載されてないので、悩みましたw SteamのExileコミュニティが荒れているのはこの性です(サーバ管理者)
- MODには、必ずbiKeyという認証用コードがあります
- MODの更新の度にキーも更新する必要があります(忘れがち)
- 基本、サーバにインするプレーヤーも同じものが必要
クライアントExile Modをコピー
サーバにも、クライアント用のExile Modが必要になります。
Arma3ランチャー内のMODタブから、Exile Modを選択し、Steamライブラリのファイルの場所を開くことができますので、ディレクトリ丸ごと、サーバ内にコピーしておきましょう。
※ショートカットでは無く、実体をコピーしてください
※@ExileModというディレクトリ名
データベースのインストール
MySQLと中身が同じなオープンソースのMariaDBをインストールします(こちらの方が楽ですけど、どっちでも良いです、ほとんど同じです)
設定した管理者(root)のパスワードをメモしてください。
※知識がある方なら、MySQLでも構いません
※スタートメニュー内(MariaDB)に必要なものは登録されてます
my.iniの編集
スタートメニューのMariaDBから、my.iniを開いて、以下を追記します([client]の上)”=”の後は何も書きません。
sql_mode=
- データベースへの命令制限を解除する設定になります
(デフォルトだと、厳格すぎるため) - 無設定という形になります
- もちろん、詳しい方なら、適当に設定してください
データベースの再起動
my.iniの変更を適用するためデータベースを再起動します。
スタートメニュー>Windows管理ツール>サービスから、MariaDBを選択し再起動します。
パソコンを再起動しても構いませんが、今後の事も含め、この手順を覚えて置いて下さい。
データベース管理ソフトの起動
MariaDBに付属のHeidiSQLを起動します(他のDBクライアントでもOKです)
データベースを管理できる便利なユーティリティで、MariaDBに限らず、他のデータベース管理にも利用できます。
先程のインストール時に入力した(管理者:root)パスワードを入力して、開きます。
まず、Exileサーバ専用のユーザーを作成します。
- セキュリティ上、専用ユーザーを作ります
ツールから「ユーザーマネージャー」をクリックして、exileユーザーを作成します。パスワードをメモしてください。
ファイルから「新しいクエリタブ」をクリックします。
解凍したExileServer-1.0.4a.zipの中の、「MySQL/exile.sql」ファイルを、クエリ空欄にドラック&ドロップします。
クエリを実行します(F9キー又は、右クリックから実行)
- Exile用のデータベースを作成するSQLコマンドを実行します
正常に実行できたら、「exile」データベースが生成されるはずです。
※F5キーで、表示更新できます
エラー表示が無いようでしたら、先程のユーザーマネージャーを開いて、「exileユーザー」を選択します。
アクセス許可の欄で、「データベース:exile」だけにチェックを付けます。
extdb-conf.iniの編集
サーバルートのextdb-conf.iniを開いて、「Password」に、先程の(データベース)Exileサーバ用のパスワードを記入します。
※Arma3サーバがデータベースにアクセスするための情報設定
これで、データベース関連の設定は完了です。
config.cfgの編集
サーバルートのconfig.cfgを開いて、以下を編集します。サーバーの基本的な設定を行うファイルで、細々設定できます。
37行目:template = Exile.Altis;
先程、mpmissionsからコピーしたミッションファイル名に書き換える
8行目:requiredBuild = 145977;
Arma3のバージョン下部6桁を記述(現在2019/9は145977)
以下を適当な場所に追記
loopback = true;
※LANモードで起動するオプションで、インターネット公開されません
サーバ起動バッチの作成
サーバ起動用のバッチファイルを作成します。
新規のテキストドキュメントを作成し、以下を記述します。
ファイル名は、分かりやすいように付けます。最後の拡張子は必ず半角で、”.bat"とします。ファイル名は、日本語名でも構いません。
例:start_exile_server.bat サーバ開始.bat 俺のサーバ.bat
このファイルを編集します。ダブルクリックだと、実行になってしまうので、ドラック&ドロップ等で、編集してください。
以下、サーバルートには、そこまでのパスを正確に記述します(例: d:¥game¥exile_server)
“(サーバルート)\arma3server.exe" -profiles="exile" -autoInit -port=2302 -config="(サーバルート)\@ExileServer\config.cfg" -cfg="(サーバルート)\@ExileServer\basic.cfg" -bepath="(サーバルート)\battleye" -world=empty -mod="@ExileMod" -serverMod="@ExileServer"
※注意:環境によって”¥”や”\”表示になります。分かりやすい様、全角文字を利用してますが、実際は半角文字で記述してください
- Windowsバッチファイル記法に従ってください
- もっとスマートな書き方ができますので別途お調べください
- 最低限の記述ですので詳しくは、こちらを参考に(参考:Arma3ランチャーのパラメーターとほぼ同一です)
Arma3サーバの起動
先程作成した起動バッチを、ダブルクリックして起動します。
Arma3ロゴや、ウィンドウが表示されます(真っ黒なウィンドウと、上写真のウィンドウの2つ)
正常稼働した場合、”Game started.”で止まります。
成功したら、下の記事へお進み下さい。そうじゃない場合は、何処かでミスってます。
ここで、一度サーバを終了します(2つウィンドウを閉じる)
サーバーがローカルPCの場合、サーバが上がっているとArmA3クライアントが立ち上がりません。多分、多重起動チェックにミスってると思われます(そのため、構築時はArmA3ランチャーだけ上げておく)
Arma3(クライアント)の起動
Steamから、Arma3を起動します。
ランチャーが上がったら、先程のサーバBATファイルを起動させてください。
ランチャーから、MODで「ExileMod」にチェックを付けて、そのまま「プレイ」を押して起動します。
起動後、ゲーム内にて、「SERVERS」「LAN」をクリックすると、「exilemod.com (1.0.4|1.80)」が表示されていると思います。
ローカルPCにサーバを起動してる場合は、2つ表示されますが、同じです(localhostと、127.0.0.1が認識されてるのでしょう)
それを選択して、JOINします。
バニラ状態ではシンプル過ぎる基本的な、Exileがプレーできます。
一通りプレーしてみましょう。
(゚∀゚)ノ
こっからは、煮るなり焼くなり自由にカスタムしてください。もちろん、MOD追加や、マップ変更も可能ですし、プログラミングも可(→沼)です。
管理:重要なログ
サーバルートのプロファイルディレクトリ内には、全ての事象がログファイルとして保存されています。
- -profiles に指定した場所になります
- ログファイルの拡張子は、RPT
- 大きなファイルになるので、適切なテキストエディタが必要
起動の度に、rptファイルが1つ生成されます(本番になると、数MBと巨大になります)
エラーなども、全てこのrptファイルに記載されます。唯一の情報源になります。
一番新しいrptファイルを覗いてみてください。先程、ログインした情報が記録されているはずです。
- これだけが唯一、原因追求の情報です
- ログの見方を早めに習得されると今後のためになります
- 毎回同じような場所に、決まったログが出るので誤りが推測できます
管理:Exileサーバの補足ログ
@ExileServer/extDB/logs以下には、補足のようなログも出力されます(日付毎)
データベースの接続ログの他、プレーヤーのデス、拠点、アイテム売買のログが出力されます。
管理:その他
保存されるべきデータは全て、データベースに保管されています。
必要な場合は、データベースを直接編集して、メンテナンスを実施する必要があります。
ハック・チート対策としてBattleyeが稼働しています。
新しい拡張を入れ込む際等、battleyeディレクトリ内のフィルターを編集する事もあります。書き方は独特です。
Arma3には、管理者用のツールも多くありますので、好きなものを導入する事になります(Zeus、RCON、AdminToolKit等)
機能拡張するにはどーする?
Arma3 Dedicatedサーバ側の設定
Bohemia社の公式Wikiに膨大な情報がありますので、これを参考に細か~く設定します。但し、英文情報がメインになります。
どんなMOD/DLCを入れ込むか?
Steam Workshopに登録されているMODを利用します(ユーザーがMODを探す手間が無くなる)
マップや武器・車両、アイテムなど、操作系、UI系、サウンド系などさまざまです。MOD依存関係などもあるので注意。
MODのアップデートに合わせる必要があるので、管理も大変になります(MODの更新と、キーの貼付け)
サーバ環境で、DLC内のオブジェクトを利用する事ができます(一部例外アリ)プレーヤーがDLCを持ってなくてもプレーできます(装備品や車両を除く)
どんなサーバーアドオンを入れ込むか?
Exile Modサーバ向けのアドオンが沢山リリースされています。
公式サイトが閉鎖されてしまったので、入手方法や情報は、こちらの非公式か、公式のDiscordになります。
インストール方法が書かれていない場合が多く、若干の知識が必要になります。
※私が自作公開してるアドオンもありますよ(;^ω^)
どんなスクリプトを入れ込むか?
Arma3用に作られた大量のスクリプトが利用できますので、ネット上から拾って、自分で適用する形になります。Exile環境との影響を考える必要があり、相応の知識が必要になります。
※こちらの場合は特に、Battleyeの回避コードも必要
その他には?
- アイテムの湧き場所(loot)
- 湧きアイテムの変更
- アイテムの価格
- 拠点関連
- トレーダー関連
- クラフト要素
- 天候の変化など
※Exileサーバの設定(exile_server_config.pboやmpmission)
さらに、Arma3側の設定もあります。レティクル、AI難易度、1人称固定など(Profile・Exile Mod的にはデフォ推奨ですが)
さらに・・?!
ExileServer Mod自体をカスタマイズしてしまう方法があります。かつてのコンガリベーコンサーバーや、私のサーバでも実施してます。スクリプトを書いてみたいッという方、ぜひともご連絡を!
本格的な構築には、PBOや画像管理のためのユーティリティソフトが必要です(Arma3 Tools他)
- ファイルを固める(PBO形式)
- 画像は専用フォーマットPAAですが、JPEGも扱える
- サウンドは、ogg形式です
また、Arma3内蔵のEdenエディタにも慣れておいた方が良いと思います(マップの確認や、スクリプトデバッグに使える)
当ブログの過去記事
このブログの過去記事に、いくらか参考になる情報があるかと思います。arma3で検索すると、一覧が出ますので参考にどうぞ。
(;´∀`)地獄の旅路やね
サーバ公開する時は?
構築に相当時間が掛かるはずですので・・、イメージだけ。
config.cfg内の、loopbackにfalseすれば公開となりますが、ネットワーク経路の問題が残っています。
自宅内サーバなら、IPv4で固定アドレスを取得した上で、Arma3 TCP/UDPポート(5つ)を、サーバに向けてフォワードする形になります。
VPSなどのサーバを借りたならば、Arma3 TCP/UDPポート(5つ)をファイヤーウォールの設定で、開放します。
これだけで、Arma3のランチャーに表示されるのを確認できるはずです(若干時間が掛かるかもしれません)
テキストエディタのおすすめ
色々使ってきましたが、VisualStudio Codeの一択です(無償)
- Notepad++も結構使われてるようです
- 要は何でも良いですが、使い慣れたものがベスト
Arma3独自のログやファイル形式ですら色分け対応できています。世界は広い(自動認識されてプラグインが案内されます)
構築の際に、ログファイルを(星の数ほど)何度も眺めるので、ツール選びは重要です。
サーバ管理者さん向けDiscord部屋
Exileサーバ管理者さん(経験者含め)が集うArmA3技術者、小部屋があります。
日本語で情報交換したいなら、ぜひともお越し下さい(認証制なので、nabeky宛にメッセージをください)
さらに改造する場合は?
MOD、サーバアドオン、外部スクリプト、スクリプト改造の4つの方法になります。
ネット上色々な所に転がっていますが・・、ここでは、こちらのExile Mod Unofficialをご紹介します(以前は、Exile Mod公式フォーラムがあったんですが・・無くなってしまった)
- MOD
画像&音楽&モデル&スクリプトデータなどがひとマトメになったものになります。
通常は、Steamコミュニティからゲット、他には直接ダウンロードします。
元からExile Modを対象にしていないので、利用可能かどうかは調査する必要があります。 - サーバアドオン
Exile Mod Serverに対応したサーバアドオンが沢山公開されています。
私が開発したLootBoxも、これに含まれます - 外部スクリプト
主にミッションファイルに含める形の、小さなスクリプトコードです。
@Exile Modのコードを上書きで改造するものや、UI改変など多種多様です。 - スクリプト改造
@ExileServerや@ExileModそのものを、改造する方法です。マニアックです。
SQFという、独自のプログラム言語を覚える必要があります。鬼畜です。
かつてのコンガリサーバや、私のサーバでやってますが、禁断のエリアで御座います。 - DLLエクステンション(マル秘:超鬼畜)
Arma3は基本それなりにセキュリティに守られた空間ですが、それを超える手段としてDLLでの拡張が可能になっています。
ExileServerに付属の、データベース操作のextDB2.DLLもこれに当たります。
元コンガリの鯖缶が、現在なにやら、開発してるそうです。
ネットワークマルチゲームで有るがゆえに、負荷の掛かるコードはサーバでなかなか採用できないものです。サーバとクライアントとの同期やタイミングなど、技術的なハードルが高いです。GitHubで公開されてるものが多いので、そちらで探してみてください。
主なトラブルQ&A
必ずrptログを見て、トラブルの原因を探してください。必ずヒントがあります。
※logs以下のrptログ、extDB以下のログ
今回の記事作成に辺り、起動BATファイルの所でつまずきました。本番に向けて、とても長い記述になるので、バッチファイルの記述ミスという可能性もあります。
※rptログの頭にコマンドライン引数があるので確認する事
設定項目が多岐に渡るため、謎の動作不良になってしまう場合があるので、サーバーディレクトリ毎まとめてZIP圧縮バックアップすると、復帰が早く便利です。
直接的に原因を解決するのではなく、順を追って調査していった方が早く解決します。ログやDBの情報を追う等
データベース周り
構築初期で悩まされるのがデータベース関連ではないでしょうか。
rptログに、「CallExtension loaded: extDB2 (E:\sabamiso2\@ExileServer\extDB2.dll) [H�H� ]」こんな記述があれば、正常にDBと接続できています。
一度でもインすると、プレーヤー情報がDBに格納されます(Accountテーブル)
格納されていないようなら、(DBの)exileユーザーの権限を確認してください(セキュリティ上、Global特権では無く、exileデータベースにだけ権限を与えます)
記事では触れませんでしたが、64ビット版のextDB3なんてのもあります(若干敷居が高い)
また、こちらのサポート部屋では、ランタイムが入って無かったという事案もありました(2020/3)
単純な設定ミス
構築を初めていくと、かならずブチ当たります。プログラミングでいう文法エラーというものです。
- 余計な空白や改行
- 全角文字を使ってしまってる
- ” ”や[]の数が合わない
設定とはいえ、Arma3スクリプティング仕様に依存します。独特な仕様なので、一見間違いが無さそうに見えて、大間違いだった!なんて事が良くあります。
”~”(抜け)や、;(有り無し構文)など、色分けプラグインを入れておくと見つけやすいです。Arma3でエラーの行番号報告は、当てになりません・・w
キックされる
バグなのか、たまにサーバが不安定になります。毎回、必ずキックされるようなら、機能拡張(主にスクリプト)がBattleyeに検知されてしまってます。適切なフィルターを設定しましょう
※フィルターは謎文字の羅列のように見えますが難しくありません(ご連絡ください)
※キックされた場合、battleye内にログが生成されます
MODのバイナリキー更新は忘れずに
MODの更新が入ると、MOD自体を更新する他、キーも同時に更新しないといけません。
rptログの比較的頭あたりに、認識したMODのリストがあります。これで確認できます。
それでも、トラブルが解決できない場合、Discordで無責任サポートを受ける事ができるかもしれません(鯖味噌サーバのチャンネルの技術者専用小部屋)