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

2019年2月12日プライベートarma3,dayz,exile,mod,server

追記:画像変換の具合調査(JPG/PNG/PAA)

追記:細々と修正作業

追記:北国サバイバル

追記:Discordにチャンネル開設してみる

追記:MAP再編集

追記:lootboxアドオンV1.4リリース公開

追記:アイアンマンAI

追記:AL-duststorm砂嵐の引数とエラー

追記:デバッグ

追加:より安全な空間を見つけるスクリプト

追記:やっと実現「砂嵐」

追記:3DEN.pboオブジェクトずれの原因

細かいバグを見つけては、修正の繰り返し・・。

キリがなさすぎるので、そろそろ線を引きたい。

(;´Д`)

拙作lootboxアドオンは、ほぼほぼ、バグ取り完了しました。今日明日には、バージョンアップ版更新できそうです。

新しいコマンドとか、今更発見とかするんで、巻戻り作業しまくりなのです。

上写真は、lootboxの新機能のランダムトレーダー。こんな感じで、町のどこかに隠れてるんですよw

(;^ω^)

他サーバには無い、いろんな種類のトレーダーがおりまっせ。

追記:3DEN.pboオブジェクトずれの原因

サーバ構築時にさんざん泣かされた、これ、オブジェクトのずれです。

幸い、色々コードを書きながら時間を経てきましたが、今、わたくしが持ってる(僅かな)スキルで、これを理解する事ができるようになりました。

原因は、とっても単純明快で、SimpleObjectの基準位置が3Dモデル中心になるためだからです(座標指定は、ASL/World)

SimpleObjectは、負荷を極限まで下げる最良の方法で、サーバに沢山置かれるオブジェクト(主にトレーダー周辺)は、これを利用する事で負荷が上がるのを抑制してる訳です。

通常、createVehicle等でオブジェクトを生成すると、マップとの傾きなどを計算して、適切に配置してくれます。

自作のアドオンでは、一度createVehicleで生成した後、その位置だけを取得して削除し、simpleObjectを生成しなおしてます(正しくは、createVehicleLocal)

追記:やっと実現「砂嵐」

マップがタキスタンだったので、やりたかった事のひとつ「砂嵐」を無事導入。

動作は確認できたが、ExileServer側の天候設定とのブツカリが無いか、調査が必要。

Battleyeで蹴られないか、ヒヤヒヤもんだったんですが、1個だけの追加でイケた。

(;^ω^)

もう、ほぼほぼ、サーバ公開に踏み切っても良さそうです。

細部のバランス調整がまだ、心残りですけども。。

思いの外、導入はとても簡単で、ダウンロードはここから。

Dust Storm Script Demo

全部クライアントサイドで動作するので、ミッションにサウンドとスクリプトホルダーをコピーして、init.sqfに数行追加するだけでした。

もちろん、コードを見れば分かるよう、MPにも対応してます。サーバ側で、設定値だけ保持してる形です。

//Dust Storm
while{true}do{
if(isServer)then{
     my_dust_storm_duration = 240 + random 600;
     publicVariable “my_dust_storm_duration";
     pause_between_dust_storm = 240 + random 600;
     publicVariable “my_dust_storm_duration";
};
waitUntil {(!isNil “my_dust_storm_duration") and (!isNil “pause_between_dust_storm")};
null = [340,my_dust_storm_duration,false,false,false,0.3] execvm “AL_dust_storm\al_duststorm.sqf";
sleep (my_dust_storm_duration + pause_between_dust_storm);
};

細かな動作に関しては、中身を見てイジる事になるんでしょうけども。

(;^ω^)

おやおや、意味無い場所にオブジェクトが密集してるようだ。。

また、バグ取り作業か。。。。

(;´Д`)

追加:より安全な空間を見つけるスクリプト

どーでしょ、自分なりに作った安全な場所を見つけるスクリプトです。

基本は便利で鈍足なBIS_fnc_findSafePosで探して、道路上も回避するようにしてます。isOnRoadだけじゃ、ダメなんですよねぇ・・。

(;´Д`)

fn_findEmptyAroundField={
     private [“_pos","_radius","_size","_spawned","_i","_ok","_ret"];
     _pos = param[0];
     _radius = param[1,50];
     _size = param[2,5];
     _spawned = param[3,nil];
     _ret = [];
     _ok=false;
     for [{_i=0},{_i<5 && !_ok},{_i=_i+1}] do{
         _pos = [_pos,0,_radius,_size,0,0.3,0,_spawned] call BIS_fnc_findSafePos;
         if(count _pos == 2)then{
             if !(isOnRoad _pos)then{
                 if(count(_pos nearRoads 10) < 1)then{_ok=true;_ret=_pos;};
             };
         };
     };
_ret};// [x,y]

追記:デバッグ

砂嵐の中での戦闘は厳しすぎる。

多くの場合、数分耐えれば、止んでくれます。

釣りでもしてるんでしょうか?

(;^ω^)

追記:AL-duststorm砂嵐の引数とエラー

砂嵐スクリプトのAL-duststormで、ログ見るとエラーが出てました。

al_duststorm.sqfの最後の行、「deleteVehicle _stormsource;」の所。_stormsourceが定義されて無いので、エラーになります。

なので、以下の様に書くか、削除しちゃってもOKです。

if !(isnil(“_stormsource”)then{deleteVehicle _stormsource;};

んで、この砂嵐を起こすスクリプトは、これで実行される訳ですが、引数の意味が分かんないぞという事で調べてみた。

null = [340,my_dust_storm_duration,false,false,false,0.3] execvm “AL_dust_storm\al_duststorm.sqf";

1:方向、2:継続時間、3:オブジェクトエフェクト、4:砂の壁?、5:強力な壁、6:視界

・・だそうです。

上記エラーは、この壁のオブジェクトを削除する部分でした。壁を利用しない場合にエラーになる。

視界は、こんな感じで、フォグ設定を重ねてます。

_ifog=_ifog+0.001; 0 setFog _ifog; sleep 0.01;

3・4・5の引数は実際に試してませんが(重くなりそうなので)オブジェクトを生成して、なにかやってます(個別にスクリプトファイルを呼び出してる)

3は画面効果処理がずらずら並んでます。ちょっとどんなものか見てみたい。

(;・∀・)

追記:アイアンマンAI

拙作lootboxアドオンのAIの動作確認。

ビヘイビアをCARELESSにしてたのが間違いやった。こっちのが普通な挙動です(SAFE)

このスクショ後、1発ヘッショされてます。。。

(;^ω^)

追記:lootboxアドオンV1.4リリース公開

Exile Modサーバ用アドオンのloot boxの新版をリリース致しましたッ!!(Version1.4)

Ver1.3から、かなり機能を盛り込んだ大幅アップデートです。

そろそろ、Exile公式フォーラムに書いてもバチ当たらんかな。。

(;^ω^)

追記:

AIの装備が正常にならないバグの修正版をアップしました。

追記:MAP再編集

いつか直さなきゃと思いつつ、今頃になった、MAPオブジェクトの再編集。

シミュレーションフラグをOFFにしとかないと、無駄な負荷になってしまうので・・

数千ものオブジェクトを、探して手作業で設定する。。。

(;´Д`)・・・しんどい

ついでなので、無駄なオブジェクトは削除して、少しでもスリム化する。

昨日のテストプレーで衝撃の事実が。。

ヽ(;゚д゚)ノ!!

砂嵐を実装したんですが、砂嵐中にスポーンすると、着地する事なくマップの遥か彼方まで飛んでいったw

この結果、パラシュートスポーンは廃止となりました。

この感じだと、ヘリとか無理でしょうねぇ・・。

(;・∀・)

しかし、EDENエディタに数千のオブジェクトを扱うと、重すぎる・・。

メインPCは、8GBしかメモリ積んでない性かもしれない。メモリも安くなったので、増設を考えよう。

追記:Discordにチャンネル開設してみる

ほとんど使った事が無いので、よー分からんが、Discordにチャンネルを開設、ユーザーサポートで利用する予定。

[JP] SABAMISO Exile Server

ま、使いながら覚えてくしかないよね。

追記:北国サバイバル

Arma3に関係ないっすけども。

用事があって、行ってきた北国の現状(山形)

でも、まぁ、これでも平年よりは、かなり少ないようです。町中心部もこんな感じでした。

(;´∀`)サバイブしてるぜ

追記:細々と修正作業

テストしてると、次々に出てくる。。。

SimpleObject化した部分は、座標がモデル中心になるんだった。調べるの時間かかりそうだから、応急処置。

if!(isnil"_z_rel")then{
     _pos = [_pos select 0,_pos select 1,(_pos_select 2)+_z_rel];
};

トレーダーの価格調整を、やっつける。こんだけアイテムが多いと、抜けが多い。。

(;´Д`)大量MOD入れてるサーバはどないやっとると・・

野良車両の所有権確保しようとすると、エラーが出てた。これも修正しとかんと。

車両からガソリン盗もうとすると、Battleyeキックされた。これは、直したはずなんだけども。。

砂嵐が酷すぎてゲームにならないので、若干頻度を下げた。

トレーダーのアニメーションのバグを直す。

サーバのネットワーク設定の見直し、通信バッファーを10倍にしてやったが、体感では分からない。

追記:画像変換の具合調査(JPG/PNG/PAA)

Arma3で扱える画像は、PAAかJPEGとなりますが、変換のやり方によって、サイズが結構変わるようなので、調べてみた。

ロードロゴ画像は、PNGで71.1KBでした、これをPAAに変換すると、29.5Kまで圧縮できました。

んで、予めPNG画像をJPEGに変換して(36.8KB)これを、PAAに変換します。

すると、35.1KBになりました。ほとんど圧縮できていません。

可逆形式な場合、かなりの圧縮(半分以上)が期待できるようです。

今まで、無理にJPEG画像で用意してたので、これをPNGからPAAで導入した方が良さそうです。

2019年2月12日プライベートarma3,dayz,exile,mod,server

Posted by nabe