「server」タグアーカイブ

【GAME】ARMA3 EXILE MODサーバの旅その99

Arma3プレーヤー様にご案内

元コンガリベーコンの鯖缶さんが、まったくのゼロから開発した新しいシステムを、近くクローズドテストを実施するようです。

テスト開始時に再度ご案内致しますので、ぜひともご参加ください!鯖味噌Discordまで

image

10/17。Discordのある部屋。開発は順調なようですが、もうちょい先のようです。

20191010203258_1

追記:p3dオブジェクト名を調べる方法

追記:Cher.Reduxマップ更新

追記:チェルノでRavageの続き

以前から気になっていた、Ravage Modのゾンビを確認してみました。

Ravage MODを入れて起動するだけで、サバイバル系ミッションプレーが楽しめるようで、これでプレーしてみる。

20191010203337_1

護送中に事故にあったらしく、自分だけが生存者らしい。

20191010203551_1

何も持ってないので、物色してたらAIと遭遇、敵対してるだろう・・。こっそりと逃げる。

20191010204236_1

なんとも特徴的なゾンビと遭遇。よく分からず、死んでもうた・・。走っちゃぁやだー。

(;´Д`)

20191010210209_1

Ravageの仕組みを見るためにEdenを起動。

20191010215435_1

Ravageのゾンビは、音や目視での識別がある(度合いが設定できる)ランダム移動もある。DayZに似ているかもしれません。

追跡を失うのも確認しました。

ゾンビは3種類かな。中腰で走ってくるのは珍しい。

20191010215655_1

Ambient_zombieを置くだけで、スポナーとして機能するので、Exileとは関係無く、普通のミッションにゾンビを置くのに凄い楽です。

これなら、Exileでも導入が容易です。

image

Edenのエクスポートで、コードはどんなもんか調べます。

createUnit [“Ravage_zombies“,[23235.3,19984.1,0],[],0,”CAN_COLLIDE”];

これだけです。

(;^ω^)

後は、オブジェクト変数に、プロパティ値を入れていくだけです。

_this setVariable [‘type_m’,”Walkers”,true];;
_this setVariable [‘fastNum_m’,0.01,true];;
_this setVariable [‘numberMax_m’,5,true];;

このままだと、ゾンビからの鹵獲とか、トラップなんかをやりやい場合は、イベントハンドラでカスタムが必要です。

image

Ravageの公式Wikiがありますが、ほとんど情報がありませんでした。

(;´Д`)

追記:チェルノでRavageの続き

20191013234733_1

チェルノでの湧きと、細かな調整を実施。

よりゾンビっぽくしたいので・・。

(;^ω^)

20191013234721_1

Ravage単体で、AIの死体がゾンビ化して起き上がらせる事も出来る。

AI倒して鹵獲しようと、近づいたら、攻撃されちゃうんですよ。

(;´Д`)

むろん、ゾンビ化するまでの時間を設定できますけども。

AIグループもランダムで沸かせられるので、とても便利なMODですよ。これ

※アイテムの中身までは設定できませんが

追記:Cher.Reduxマップ更新

20191022200752_1

先日、ChernarusReduxマップが更新されました。

雰囲気が出ております。

image

Arma3のマップって、建物が微妙にズレていたり、地形にめり込んでいたりしますよね。

Reduxでも、もちろん存在してますが、今、これを一つづつ潰していってる作業をしてるんですよ。凄い作業量です。

Trello/CHR Bug Tracker

もし、そんな物件を見つけたら、ぜひとも、ここに登録してみてください。スクショと座標(MAP上スクショでも可)があれば伝わります。

追記:p3dオブジェクト名を調べる方法

20191022213146_1

マップのオブジェクトで、p3d名を知りたくなる時がある。

Edenを起動して、カーソルでポイントしたオブジェクトのp3d名を、延々とクリップボードに書き出してくれるスクリプトがこれ。

スタートして、ESC押して、スクリプトを流せば良い。

onEachFrame { hintSilent str [getModelInfo cursorObject, typeof cursorObject]; copytoclipboard str [getModelInfo cursorObject, typeof cursorObject]; };

ポイントしたら、タスクを切り替えて、Ctrl+Vで貼り付けられる。

むろん、Arma3・Edenを起動してる間は、クリップボードが使えなくなるので注意。一度、Edenを終了すればOK。

(追記予定)

【亀】最短Arma3 Exile Modサーバの上げ方@2019/9版

20190928013941_1

追記:主なトラブルQ&A

面倒な事はさておき、手っ取り早くExileサーバを上げてみたい方への記事になります(スクショも沢山入れた)

色々を試行錯誤(半日掛かった)したので、多分、これが、一番の最短手順になるんではないかと思います。

(;^ω^)

注意:余計な設定はスルーしてます

※Windows版、32bitモード、ほとんどデフォ動作

サーバーPCスペック

構築用なら低スペ(ノートPC)でも十分に稼働します。

高スペに越した事ないですが、印象的にはCore i3/Ryzen3(4コア・3.5Ghz以上)もあれば十分かと思います。

1~2コアに処理が集中するようなので、高クロック重視がベストです。メモリも多めに。

※AI処理だけを他PCに任せる事が可能です(Headless Client

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

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

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

※Arma3 Dedicated Serverは無償で利用できます。セキュリティ上、念の為、サーバ用Steamアカウントを作っています

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

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

※Dドライブの頭とか、MyDocumentだと、パス指定が長くなってしまうので

steamcmdのインストール

image

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

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

Arma3サーバーダウンロード

image

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

※拡張子は、”.cmd”なので注意(エクスプローラーの設定で、拡張子を表示オンにしてください)

※このファイルは、Arma3サーバの更新にも利用できます

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

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

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

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

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

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

image

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

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

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

image

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

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

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

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


@ExileServer
を、コピー(サーバルートへ)

battleye
の全ファイルを、コピー(battleyeへ)
@ExileServer/config.cfgをコピー(サーバルートへ)
@ExileServer/basic.cfgをコピー(サーバルートへ)
@ExileServer/xm8.dllをコピー(サーバルートへ)

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

Exile Modキーのダウンロード

image

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

こちらからダウンロードして、keysにコピーします。

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

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

image

MySQLと中身が同じなオープンソースのMariaDBをインストールします(こちらの方が楽です)

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

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

image

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

my.iniの編集

my.iniを開いて、以下を追記します([client]の上)

sql_mode=

データベースの再起動

image

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

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

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

image

MariaDBに付属のHeidiSQLを起動します。

※データベースを管理できる便利なユーティリティ

先程の(管理者root)パスワードを入力して、開きます。

image

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

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

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

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

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

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

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

新規のテキストドキュメントを作成し、以下を記述します。ファイル名は、分かりやすいように(start_exile_server.bat等)

以下、サーバルートには、そこまでのパスを正確に記述します(例: d:¥game¥exile_server)

“(サーバルート)¥arma3server.exe” -profiles=log -autoInit -port=2302 -config=config.cfg -cfg=basic.cfg -bepath=(サーバルート)¥battleye  -world=empty -mod=@ExileMod -serverMod=@ExileServer

※注意:環境によって”¥”や”\”表示になります。分かりやすい様、全角文字を利用してますが、実際は半角文字で記述してください

※Windowsバッチファイル記法に従ってください

※最低限の記述ですので詳しくは、こちらを参考に(参考:Arma3ランチャーのパラメーターとほぼ同一です)

Arma3サーバの起動

image

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

Arma3ロゴや、ウィンドウが表示されます。

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

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

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

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

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

image

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

image

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

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

20190928013633_1

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

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

(゚∀゚)ノ

管理:重要なログ

image

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

起動の度に、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のアップデートに合わせる必要があるので、管理も大変になります。

サーバ環境で、DLC内のオブジェクトを利用する事ができます(一部例外アリ)プレーヤーがDLCを持ってなくてもプレーできます(アイテムや車両を除く)

どんなサーバーアドオンを入れ込むか?

Exile Modサーバ向けのアドオンが沢山リリースされています。

公式サイトが閉鎖されてしまったので、入手方法や情報は、こちらの非公式か、公式のDiscordになります。

インストール方法が書かれていない場合が多く、若干の知識が必要になります。

※私が自作公開してるアドオンもありますよ(;^ω^)

どんなスクリプトを入れ込むか?

Arma3用に作られた大量のスクリプトが利用できますので、ネット上から拾って、自分で適用する形になります。Exile環境との影響を考える必要があり、相応の知識が必要になります。

※こちらの場合は特に、Battleyeの回避コードも必要

その他には?

アイテムの湧き場所、湧きアイテムの変更、アイテムの価格、拠点関連、トレーダー関連、クラフト要素、天候の変化、など

※Exileサーバの設定(exile_server_config.pboやmpmission)

さらに、Arma3側の設定もあります。レティクル、AI難易度、1人称固定など(Profile・Exile Mod的にはデフォ推奨ですが)

さらに・・?!

ExileServer Mod自体をカスタマイズしてしまう方法があります。かつてのコンガリベーコンサーバーや、私のサーバでも実施してます。

スクリプトを書いてみたいッという方、ぜひともご連絡を!

(;´∀`)・・・Arma4はC++になっちゃうみたいだけども

本格的な構築には、PBOや画像管理のためのユーティリティソフトが必要です(Arma3 Tools他)

※ファイルを固める(PBO)、画像も専用フォーマットです

また、Arma3内蔵のEdenエディタにも慣れておいた方が良いと思います(マップの確認や、スクリプトデバッグに使える)

当ブログの過去記事

このブログの過去記事に、いくらか参考になる情報があるかと思います。arma3で検索すると、一覧が出ますので参考にどうぞ。

(;´∀`)

サーバ公開する時は?

構築に相当時間が掛かるはずですので・・、イメージだけ。

config.cfg内の、loopbackにfalseすれば公開となりますが、ネットワーク経路の問題が残っています。

自宅内サーバなら、IPv4で固定アドレスを取得した上で、Arma3 TCP/UDPポート(5つ)を、サーバに向けてフォワードする形になります。

VPSなどのサーバを借りたならば、Arma3 TCP/UDPポート(5つ)をファイヤーウォールの設定で、開放します。

これだけで、Arma3のランチャーに表示されるのを確認できるはずです(若干時間が掛かるかもしれません)

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

image

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

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

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

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

image

Exileサーバ管理者さん(経験者含め)が集う、小部屋があります。

日本語で情報交換したいなら、ぜひともお越し下さい(認証制なので、nabeky宛にメッセージをください)

主なトラブルQ&A

必ずrptログを見て、トラブルの原因を探してください。必ずヒントがあります。

※logs以下のrptログ、extDB以下のログ

今回の記事作成に辺り、起動BATファイルの所でつまずきました。本番に向けて、とても長い記述になるので、バッチファイルの記述ミスという可能性もあります。

※rptログの頭にコマンドライン引数があるので確認する事

設定項目が多岐に渡るため、謎の動作不良になってしまう場合があるので、サーバーディレクトリ毎まとめてZIP圧縮バックアップすると、復帰が早く便利です。

直接的に原因を解決するのではなく、順を追って調査していった方が早く解決します。ログやDBの情報を追う等

データベース周り

image

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

rptログに、「CallExtension loaded: extDB2 (E:\sabamiso2\@ExileServer\extDB2.dll) [H�H� ]」こんな記述があれば、正常にDBと接続できています。

一度でもインすると、プレーヤー情報がDBに格納されます。

格納されていないようなら、(DBの)exileユーザーの権限を確認してください(セキュリティ上、Global特権では無く、exileデータベースにだけ権限を与えます)

記事では触れませんでしたが、64ビット版のextDB3なんてのもあります(若干敷居が高い)

単純な設定ミス

構築を初めていくと、かならずブチ当たります。プログラミングでいう文法エラーというものです。

設定とはいえ、Arma3スクリプティング仕様に依存します。独特な仕様なので、一見間違いが無さそうに見えて、大間違いだった!なんて事が良くあります。

”~”(抜け)や、;(有り無し構文)など、色分けプラグインを入れておくと見つけやすいです。Arma3でエラーの行番号報告は、当てになりません・・w

キックされる

バグなのか、たまにサーバが不安定になります。毎回、必ずキックされるようなら、機能拡張(主にスクリプト)がBattleyeに検知されてしまってます。適切なフィルターを設定しましょう

※フィルターは謎文字の羅列のように見えますが難しくありません(ご連絡ください)

※キックされた場合、battleye内にログが生成されます

MODのバイナリキー更新は忘れずに

MODの更新が入ると、MOD自体を更新する他、キーも同時に更新しないといけません。

image

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

【game】Arma3 Chernarus Reduxマップ更新

20190817184345_1

チェルナルスREDUXマップが更新されました。Version 0.88、3.6GB、要CUP Terrains MOD

Arma3サーバ運用において色々お世話になっているYukihito23さんが開発に参加されています。

オリジナルのChernarusマップに手が入れられ、オブジェクトだけでなく、サウンドもこだわられているようです。

わずか数人で活動されてるそうなので、参加したい方がいればご連絡を。

20190817184447_1

おなじみの北西空港。

20190817184855_1

Chernogorsk。

20190817184926_1

Elektrozavodsk。

20190817185017_1

Berezino。

20190817185322_1

中央辺りにある遊園地。

20190817185911_1

地下にある駅。