【GAME】ARMA3 EXILE MODサーバの旅その47
追記:DMSのAI管理
なんでしょうね。。
終わったつもりが、色々と残り作業が湧いてきてしまいます。
(;´Д`)
拙作のEXILEサーバアドオン「LOOT BOX」
もう、もう、本当に終わりっぽいので、明日には公開できるかと思います(あれから、AIも湧かせられるように仕様追加)
完全最終デバッグ中で御座います。PM9:00現在
まだ運用実績がゼロですので、しばらくベータ扱いで、当ブログにて公開配布致します。
サーバ管理者さんが当ブログを見てる確立は限りなくゼロに近いでしょうけども。宜しければ・・お使いください。
この様な感じで、黄色:アイテムボックス、赤:地雷かAIが湧きます。
もちろん、数や範囲は自由に設定できます。地雷も多めになってる状態です。
(オレンジ色はアドオンとは関係無し)
新登場のAI様がいらっしゃいましたw
(;^ω^)
ちゃーんと、周囲を警戒してますね。ガッツリと、階段側をスポットしております。普通に階段を登ったら、確実にヤラれます。
この後、ヘッショされたのは、内緒です。
DMSアドオンでAIを置いてるので、設定の類はDMS側のものが適用されます。今の所は、アサルトクラスで難易度はランダムにしてます。
設定できるようにした方がええかな。。
しかし、こんな感じで「建物内にAIが居るかもしれない・・」という恐怖が、これまでのEXILEには無い緊張感を生み出すんではないかと。
建物オブジェクトによっては、屋上もあるので、屋上ならスナイパーを設置するとか・・ね(一応、考えたw)
AIは建物内で湧く事になってるので、足を負傷してるところから察するに、屋根から落ちちゃったんかな?
丁度、ゾンビ2体に襲われてるところを目撃。
ちゃーんと、逃げながら戦闘しております。
(;´∀`)がんばってぇ~AIさぁ~ん、このサーバのゾンビは鬼畜ですぞー
アイテムボックスの中身を、取ることが出来なくなる時があるんですよね。EXILEを普通にプレーしてても、稀に発生するので、何か原因があるのか、調査しなければなりません。
追記:DMSのAI管理
サーバ負荷的にも、これは利用したい訳です。
軽~く調査をしてみます。
DMSでAIを湧かす時に必ずこれが呼ばれてます。
[_group,true] call DMS_fnc_FreezeToggle;
んで、このコードを読んでみると、意外にもシンプルな形で、フリーズとしていたようです。
_x enableSimulationGlobal false;
_group setVariable [“DMS_isGroupFrozen",true];(同時に変数としても格納)
EDENエディタでも見掛ける”あれ”です。これが、フリーズの正体です。でも、シミュレーションをOFFにすると、具体的にどーなるのかは、イマイチ分かってませんけども。
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]);
単純にプレーヤーを全部舐めて距離を調べてるんですね。
(;´Д`)
公式ドキュメント見てて、何度か見たけど、まったく知りません。
※そもそも読む気が無い
プレーヤーをチェックしてる、fn_FreezeManager.sqfが、このFSMで動作してるんです。
どーいったタイミングで、どんな風に動作するのか、まったく分からない。だって、これですよ。呼び出し元がここしか無いんです。
missions.fsm
item21[] = {“Freeze_Manager",2,250,1067.652466,248.645218,1157.652100,298.645233,0.000000,"Freeze Manager"};
(;^ω^)
どー動作してるのか、気になったもので。
しかし、日本車の名前に、バンディットとか、DAYZとか。
海外の方が見たら、どー思うんだろうかw
ヽ(;゚д゚)ノ バンディットッ!?
お絵かきツールですか?
否、何かが違う・・・。
そうだ、DMSのFSMファイルを読み込んでみればええんだ。
::
うむ、ここに、Freeze Managerの呼び出しが書かれてました。
((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フリーズ
と憂鬱になっていたのですが。
思いの外、簡単でした。
_group setVariable [“DMS_AllowFreezing",true];
グループオブジェクトにこれをセットするだけのようです。
(;^ω^)
まだ、実際に動作を確認してませんが、これで良いっぽい・・・と信じたい。
めちゃめちゃコードを読みまくって、どっと疲れが・・・。
(;´Д`)
ログを見る限り、ちゃんと動作してるっぽいけども、動作確認は明日です。