【GAME】ARMA3 EXILE MODサーバの旅その80
追記:画像変換の具合調査(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個だけの追加でイケた。
(;^ω^)
もう、ほぼほぼ、サーバ公開に踏み切っても良さそうです。
細部のバランス調整がまだ、心残りですけども。。
思いの外、導入はとても簡単で、ダウンロードはここから。
全部クライアントサイドで動作するので、ミッションにサウンドとスクリプトホルダーをコピーして、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にチャンネルを開設、ユーザーサポートで利用する予定。
ま、使いながら覚えてくしかないよね。
追記:北国サバイバル
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で導入した方が良さそうです。