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

2018年3月19日プライベートarma3,dayz,exile,mod,server

sc20180319204707追記:AIフリーズ

追記:DMSのAI管理

なんでしょうね。。

終わったつもりが、色々と残り作業が湧いてきてしまいます。

(;´Д`)

拙作のEXILEサーバアドオン「LOOT BOX

もう、もう、本当に終わりっぽいので、明日には公開できるかと思います(あれから、AIも湧かせられるように仕様追加

完全最終デバッグ中で御座います。PM9:00現在

まだ運用実績がゼロですので、しばらくベータ扱いで、当ブログにて公開配布致します。

サーバ管理者さんが当ブログを見てる確立は限りなくゼロに近いでしょうけども。宜しければ・・お使いください。

20180319205758_1見せれるだけの範囲ですが。

この様な感じで、黄色:アイテムボックス、赤:地雷かAIが湧きます。

もちろん、数や範囲は自由に設定できます。地雷も多めになってる状態です。

(オレンジ色はアドオンとは関係無し)

20180319210245_1上MAPのプレーヤーすぐ左下の赤マーカーがここ。

新登場のAI様がいらっしゃいましたw

(;^ω^)

ちゃーんと、周囲を警戒してますね。ガッツリと、階段側をスポットしております。普通に階段を登ったら、確実にヤラれます。

この後、ヘッショされたのは、内緒です。

DMSアドオンでAIを置いてるので、設定の類はDMS側のものが適用されます。今の所は、アサルトクラスで難易度はランダムにしてます。

設定できるようにした方がええかな。。

しかし、こんな感じで「建物内にAIが居るかもしれない・・」という恐怖が、これまでのEXILEには無い緊張感を生み出すんではないかと。

建物オブジェクトによっては、屋上もあるので、屋上ならスナイパーを設置するとか・・ね(一応、考えたw)

20180319210655_1違う場所のAIさん。

AIは建物内で湧く事になってるので、足を負傷してるところから察するに、屋根から落ちちゃったんかな?
20180319210936_1このアドオンのAIは持ち場から、基本的に動かないんですが。

丁度、ゾンビ2体に襲われてるところを目撃。

ちゃーんと、逃げながら戦闘しております。

(;´∀`)がんばってぇ~AIさぁ~ん、このサーバのゾンビは鬼畜ですぞー

アイテムボックスの中身を、取ることが出来なくなる時があるんですよね。EXILEを普通にプレーしてても、稀に発生するので、何か原因があるのか、調査しなければなりません。

追記:DMSのAI管理

sc20180320135921AI湧きはDMSを利用しているのですが、DMSではプレーヤーが近くに居ない場合、停止させる事ができるんです。

サーバ負荷的にも、これは利用したい訳です。

軽~く調査をしてみます。

DMSでAIを湧かす時に必ずこれが呼ばれてます。

    [_group,true] call DMS_fnc_FreezeToggle;

んで、このコードを読んでみると、意外にもシンプルな形で、フリーズとしていたようです。

_x enableSimulationGlobal false;

_group setVariable [“DMS_isGroupFrozen",true];(同時に変数としても格納)

EDENエディタでも見掛ける”あれ”です。これが、フリーズの正体です。でも、シミュレーションをOFFにすると、具体的にどーなるのかは、イマイチ分かってませんけども。

sc20180320140604んで、近隣プレーヤーとのチェック方法ですが。

fn_FreezeManager.sqf

このコードで行われてました。

これも原始的な方法で驚きました(トリガーって使えないんかな?)

実際の部分は、fn_IsPlayerNearby.sqf で・・

{
    {
        if (isPlayer _x) then
        {
            throw _x;
        };
    } forEach (crew _x);
} forEach (_pos nearEntities [[“Exile_Unit_Player","LandVehicle", “Air", “Ship"], _dis]);

単純にプレーヤーを全部舐めて距離を調べてるんですね。

sc20180320141238んで、ここで新しいワードが出てきちゃいます。。

FSM

(;´Д`)

公式ドキュメント見てて、何度か見たけど、まったく知りません。

※そもそも読む気が無い

プレーヤーをチェックしてる、fn_FreezeManager.sqfが、このFSMで動作してるんです。

どーいったタイミングで、どんな風に動作するのか、まったく分からない。だって、これですよ。呼び出し元がここしか無いんです。

missions.fsm

item21[] = {“Freeze_Manager",2,250,1067.652466,248.645218,1157.652100,298.645233,0.000000,"Freeze Manager"};

sc20180320141830まぁ・・まぁ・・ここまでコードを追ったところで、何をする訳でもありませんけどもね。。

(;^ω^)

どー動作してるのか、気になったもので。

sc20180320142057ウチのアドオンでも、DMSのフリーズ機能は利用できるはずなので、これに合せて、コードを修正する予定です。ただ、グループ単位なんだけどもねぇ。。

しかし、日本車の名前に、バンディットとか、DAYZとか。

海外の方が見たら、どー思うんだろうかw

ヽ(;゚д゚)ノ バンディットッ!?

sc20180320143527そういえば、Arma3 Toolsというユーティリティに、FSMEditorという項目があったのを思い出しました。

ついでなので、何なのか起動してみよう。
sc20180320143640( ゚Д゚)ハァ?

お絵かきツールですか?

否、何かが違う・・・。

そうだ、DMSのFSMファイルを読み込んでみればええんだ。
::

sc20180320143830ビンゴ、へぇ・・視覚的にコードが書けるIDE的な??

うむ、ここに、Freeze Managerの呼び出しが書かれてました。
sc20180320144129起動タイミングは、以下。

((diag_tickTime – _freeze) > DMS_ai_freezeCheckingDelay)

呼び出しはこう。_freezeは待機秒用のもの。

_freeze = diag_tickTime;
call DMS_fnc_FreezeManager;

うむ・・・・

・・・・で。

なんなのArma3ってwww

ヽ(;゚д゚)ノ

ちなみに上記のフリーズ系のDMS設定は、以下のものになります。

a3_dms/sonfig.sqf

DMS_ai_freezeCheckingDelay フリーズチェック間隔(秒)

DMS_ai_freezeOnSpawn スポーン時フリーズするか?

追記:AIフリーズ

sc20180320201948AIをフリーズ化する方法は、DMSの深いところまでコードを追わないといけないんかなぁ。。

と憂鬱になっていたのですが。

思いの外、簡単でした。

_group setVariable [“DMS_AllowFreezing",true];

グループオブジェクトにこれをセットするだけのようです。

(;^ω^)

まだ、実際に動作を確認してませんが、これで良いっぽい・・・と信じたい。

めちゃめちゃコードを読みまくって、どっと疲れが・・・。

(;´Д`)

ログを見る限り、ちゃんと動作してるっぽいけども、動作確認は明日です。

2018年3月19日プライベートarma3,dayz,exile,mod,server

Posted by nabe