【亀】最短Arma3 Exile Modサーバの上げ方@2020/3更新

2019年9月28日プライベートarma3,bambi,exile,mod,server

20190928013941_1

注意:閉鎖してしまったリンク先などがありますので注意

追記:ちょっとだけ全体的に丁寧に加筆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専用チャンネルで、適度にご案内しますので、ご安心あれ。

必要なソフトウェアを導入

以下をインストールしておいてください。既に入ってるかもしれませんが。

  1. DirectX(既に入ってるかもしれない)
  2. VS2015Visual C++再配布可能パッケージ(既に入ってるかもしれない)

簡単にサーバを構築させるため、x86版(32ビット)は、必ずインストールしてください。

サーバ用Steamアカウントの取得

事前に、適当なメールアドレスで、サーバ用のSteamアカウントを取得しておきます。

※ID/パスワードは忘れないようにメモっておきましょう(忘れた頃に、再認証が来ますよ)

  • Arma3 Dedicated Serverは無償で利用できます
  • セキュリティ上、念の為、サーバ用Steamアカウントを作っています
  • 既に持ってるSteamアカウントで、サーバにインする事が可能です

サーバーディレクトリの作成

サーバーを置くディレクトリを作成しておきます。管理しやすい場所にしてください。以下、サーバールートと呼びます。

MODなどファイル容量が大きいので、ドライブ空き容量(50GB以上)に注意ください。

可能であれば、ドライブのルートに置いた方が楽です(d:¥a3server¥、e:¥arma3server¥など)

  • パス指定が長くない方が管理しやすい
  • できれば、HDDは避け、SSDなどを利用してください

steamcmdのインストール

image

Arma3 Dedicatedサーバを入手するために、steamcmdを利用します(steamのコマンドライン版)

ダウンロードして、サーバーディレクトリの近くに解凍します。

Arma3サーバーダウンロード

image

こちらのサイトから、「Arma3server_steamcmd_example.cmd」をコピペして、steamcmdディレクトリ内にファイルを作ります。ファイル名は変更しても構いません。

  • 拡張子は、”.cmd”なので注意(エクスプローラーの設定で、拡張子を表示オンにしてください)
  • このファイルは、Arma3サーバの更新にも利用できます
  • Arma3本体の更新と同時に、Arma3サーバの更新も入ります

以下の3箇所を編集します。

STEAMLOGINには、サーバ用Steamアカウントを記述

A3serverPathには、サーバーディレクトリを記述

STEAMPATHには、steamcmdディレクトリを記述

終わったら、このファイルをダブルクリックして実行します。

steamエンジンの構築の後、Arma3サーバのダウンロードが始まります。結構、時間が掛かります。

失敗しても、また再度、何度実行しても良いので、ご安心を。

image

先程作成した、サーバーディレクトリ内に、沢山ファイルが生成されているはずです。

サーバですが、Arma3そのものと言っても過言じゃありません。

このcmdファイルは、Arma3サーバ自体のアップデートに使いますので、消さないでおいてください。今後は、これを実行すれば、更新されます。

Exile Modサーバのダウンロード

image

こちらの公式サイトからダウンロードします。

「Download Server Files」をクリック、現在は、ExileServer-1.0.4a.zipが最新となります。これを、デスクトップなどに解凍してください。

現在は、Steamからもダウンロード出来るようです。

※サーバ用のMod

サーバー基本ファイルの構築

(2020/3/20 内容を大きく書き換えました)

細かいですが、解凍したものから、以下のファイルをコピーします。

  1. @ExileServerディレクトリを、丸コピー(サーバルートへ)
  2. battleyeディレクトリを、丸コピー(サーバルートへ)
  3. tbbmalloc.dllをコピー(サーバルートへ)

mpmissionsから適当なミッションファイルをコピー(mpmissionsへ)します。マップ毎に、サンプルミッションが用意されています。

  • Exile.altis.pbo(Altisマップ)

Exile用に設定されたものであれば、他のファイルでも構いません。

Exile Modキーのダウンロード

image

Exileサーバに付属された認証用のキーが古いため、別途入手しないといけません。

こちらからダウンロードして、サーバルートのkeysディレクトリにコピーします。

明確に記載されてないので、悩みましたw SteamのExileコミュニティが荒れているのはこの性です(サーバ管理者)

  • MODには、必ずbiKeyという認証用コードがあります
  • MODの更新の度にキーも更新する必要があります(忘れがち)
  • 基本、サーバにインするプレーヤーも同じものが必要

クライアントExile Modをコピー

サーバにも、クライアント用のExile Modが必要になります。

Arma3ランチャー内のMODタブから、Exile Modを選択し、Steamライブラリのファイルの場所を開くことができますので、ディレクトリ丸ごと、サーバ内にコピーしておきましょう。

※ショートカットでは無く、実体をコピーしてください

@ExileModというディレクトリ名

データベースのインストール

image

MySQLと中身が同じなオープンソースのMariaDBをインストールします(こちらの方が楽ですけど、どっちでも良いです、ほとんど同じです)

設定した管理者(root)のパスワードをメモしてください。

※知識がある方なら、MySQLでも構いません

image

※スタートメニュー内(MariaDB)に必要なものは登録されてます

my.iniの編集

スタートメニューのMariaDBから、my.iniを開いて、以下を追記します([client]の上)”=”の後は何も書きません。

sql_mode=

  • データベースへの命令制限を解除する設定になります
    (デフォルトだと、厳格すぎるため)
  • 無設定という形になります
  • もちろん、詳しい方なら、適当に設定してください

データベースの再起動

image

my.iniの変更を適用するためデータベースを再起動します。

スタートメニュー>Windows管理ツール>サービスから、MariaDBを選択し再起動します。

パソコンを再起動しても構いませんが、今後の事も含め、この手順を覚えて置いて下さい。

データベース管理ソフトの起動

image

MariaDBに付属のHeidiSQLを起動します(他のDBクライアントでもOKです)

データベースを管理できる便利なユーティリティで、MariaDBに限らず、他のデータベース管理にも利用できます。

先程のインストール時に入力した(管理者:root)パスワードを入力して、開きます。

image

まず、Exileサーバ専用のユーザーを作成します。

  • セキュリティ上、専用ユーザーを作ります

ツールから「ユーザーマネージャー」をクリックして、exileユーザーを作成します。パスワードをメモしてください。

ファイルから「新しいクエリタブ」をクリックします。

解凍したExileServer-1.0.4a.zipの中の、「MySQL/exile.sql」ファイルを、クエリ空欄にドラック&ドロップします。

クエリを実行します(F9キー又は、右クリックから実行)

  • Exile用のデータベースを作成するSQLコマンドを実行します

image

正常に実行できたら、「exile」データベースが生成されるはずです。

※F5キーで、表示更新できます

エラー表示が無いようでしたら、先程のユーザーマネージャーを開いて、「exileユーザー」を選択します。

アクセス許可の欄で、「データベース:exile」だけにチェックを付けます。

extdb-conf.iniの編集

image

サーバルートのextdb-conf.iniを開いて、「Password」に、先程の(データベース)Exileサーバ用のパスワードを記入します。

※Arma3サーバがデータベースにアクセスするための情報設定

これで、データベース関連の設定は完了です。

config.cfgの編集

image

サーバルートのconfig.cfgを開いて、以下を編集します。サーバーの基本的な設定を行うファイルで、細々設定できます。

37行目:template = Exile.Altis;

先程、mpmissionsからコピーしたミッションファイル名に書き換える

8行目:requiredBuild = 145977;

Arma3のバージョン下部6桁を記述(現在2019/9は145977)

以下を適当な場所に追記

loopback = true;

※LANモードで起動するオプションで、インターネット公開されません

サーバ起動バッチの作成

image

サーバ起動用のバッチファイルを作成します。

新規のテキストドキュメントを作成し、以下を記述します。

ファイル名は、分かりやすいように付けます。最後の拡張子は必ず半角で、”.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サーバの起動

image

先程作成した起動バッチを、ダブルクリックして起動します。

Arma3ロゴや、ウィンドウが表示されます(真っ黒なウィンドウと、上写真のウィンドウの2つ)

正常稼働した場合、”Game started.”で止まります。

成功したら、下の記事へお進み下さい。そうじゃない場合は、何処かでミスってます。

ここで、一度サーバを終了します(2つウィンドウを閉じる)

サーバーがローカルPCの場合、サーバが上がっているとArmA3クライアントが立ち上がりません。多分、多重起動チェックにミスってると思われます(そのため、構築時はArmA3ランチャーだけ上げておく)

Arma3(クライアント)の起動

Steamから、Arma3を起動します。

image

ランチャーが上がったら、先程のサーバBATファイルを起動させてください。

ランチャーから、MODで「ExileMod」にチェックを付けて、そのまま「プレイ」を押して起動します。

image

起動後、ゲーム内にて、「SERVERS」「LAN」をクリックすると、「exilemod.com (1.0.4|1.80)」が表示されていると思います。

ローカルPCにサーバを起動してる場合は、2つ表示されますが、同じです(localhostと、127.0.0.1が認識されてるのでしょう)

それを選択して、JOINします。

20190928013633_1

バニラ状態ではシンプル過ぎる基本的な、Exileがプレーできます。

一通りプレーしてみましょう。

(゚∀゚)ノ

こっからは、煮るなり焼くなり自由にカスタムしてください。もちろん、MOD追加や、マップ変更も可能ですし、プログラミングも可(→沼)です。

管理:重要なログ

image

サーバルートのプロファイルディレクトリ内には、全ての事象がログファイルとして保存されています。

  • -profiles に指定した場所になります
  • ログファイルの拡張子は、RPT
  • 大きなファイルになるので、適切なテキストエディタが必要

起動の度に、rptファイルが1つ生成されます(本番になると、数MBと巨大になります)

エラーなども、全てこのrptファイルに記載されます。唯一の情報源になります。

一番新しいrptファイルを覗いてみてください。先程、ログインした情報が記録されているはずです。

  • これだけが唯一、原因追求の情報です
  • ログの見方を早めに習得されると今後のためになります
  • 毎回同じような場所に、決まったログが出るので誤りが推測できます

管理:Exileサーバの補足ログ

@ExileServer/extDB/logs以下には、補足のようなログも出力されます(日付毎)

データベースの接続ログの他、プレーヤーのデス、拠点、アイテム売買のログが出力されます。

管理:その他

image

保存されるべきデータは全て、データベースに保管されています。

必要な場合は、データベースを直接編集して、メンテナンスを実施する必要があります。

image

ハック・チート対策としてBattleyeが稼働しています。

新しい拡張を入れ込む際等、battleyeディレクトリ内のフィルターを編集する事もあります。書き方は独特です。

Arma3には、管理者用のツールも多くありますので、好きなものを導入する事になります(Zeus、RCON、AdminToolKit等)

機能拡張するにはどーする?

image

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のランチャーに表示されるのを確認できるはずです(若干時間が掛かるかもしれません)

テキストエディタのおすすめ

image

色々使ってきましたが、VisualStudio Codeの一択です(無償)

  • Notepad++も結構使われてるようです
  • 要は何でも良いですが、使い慣れたものがベスト

Arma3独自のログやファイル形式ですら色分け対応できています。世界は広い(自動認識されてプラグインが案内されます)

構築の際に、ログファイルを(星の数ほど)何度も眺めるので、ツール選びは重要です。

サーバ管理者さん向けDiscord部屋

image

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の情報を追う等

データベース周り

image

構築初期で悩まされるのがデータベース関連ではないでしょうか。

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自体を更新する他、キーも同時に更新しないといけません。

image

rptログの比較的頭あたりに、認識したMODのリストがあります。これで確認できます。

それでも、トラブルが解決できない場合、Discordで無責任サポートを受ける事ができるかもしれません(鯖味噌サーバのチャンネルの技術者専用小部屋)

2019年9月28日プライベートarma3,bambi,exile,mod,server

Posted by nabe