「exile」タグアーカイブ

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

20190212161821_1

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

追記:細々と修正作業

追記:北国サバイバル

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

追記:MAP再編集

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

追記:アイアンマンAI

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

追記:デバッグ

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

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

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

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

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

(;´Д`)

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

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

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

(;^ω^)

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

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

image

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

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

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

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

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

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

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

20190212220435_1

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

動作は確認できたが、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);
};

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

(;^ω^)

20190212215820_1

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

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

(;´Д`)

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

image

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

基本は便利で鈍足な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]

追記:デバッグ

20190213015658_1

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

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

20190213014900_1

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

(;^ω^)

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

image

砂嵐スクリプトの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

20190213195121_1

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

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

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

(;^ω^)

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

image

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

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

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

(;^ω^)

追記:

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

追記:MAP再編集

20190216181510_1

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

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

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

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

20190216183701_1

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

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

ヽ(;゚д゚)ノ!!

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

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

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

(;・∀・)

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

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

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

image

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

[JP] SABAMISO Exile Server

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

追記:北国サバイバル

P_20190217_094409

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

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

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

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

追記:細々と修正作業

20190217201132_1

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

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

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

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

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

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

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

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

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

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

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

image

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

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

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

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

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

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

【game】Arma3 Exile Modのアイテム画像集@PNG

image

Arma3 Exile Mod内のアイテムの画像集です。

512*512でPNG画像(透過)となってるので、使い易いでしょう(何に?)

画像エディタとかで、貼り付けるだけで、お好きな壁紙なんか作れるんじゃなかろうか。

軽い気持ちで始めたんですが、全部手作業で起こしましたよ・・。

大変やった・・。

(;´Д`)

あまりに多いので、建築系は省いてます。なので、今の所106ファイルです。

著作はもちろんの事、EXILE MOD開発者にあるので、取り扱いには注意です。EXILE MODコミュニティのために利用しましょう。

ファイルのダウンロード(Google Drive/ZIPファイル12.5MB)

※GoogleDriveは初めて利用するので、ダウンロードできなかったらコメントください(別の方法でアップします)

また、ローディング画面で表示される背景画像は、以前の記事で公開しております。

こちらはそのまま壁紙として利用できる位、大きい画像です。

【GAME】ARMA3 EXILE MODの壁紙を勝手に公開

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

20190126195031_1

追記:スコアボード備忘録

追記:セーフキットsmallとか

追記:画像編集をば・・

追記:座標系されど座標系

追記:無敵なやつ

追記:SimpleObject化できないやつ

追記:やっとサーバ用CPUクーラー手に入れる

追記:89式アサルト正式導入決定ッ

追記:作業報告とゾンビ謎の挙動

追記:CUP MODのアップデート?

追記:ウォータークーラー

ひたすらにバランス調整、主に初期スポーンからのところ、色々設定値を知ってる私でも、逃げの一手ばっかw

ド下手な私でも、生き延びられてるので、他プレーヤーさんなら、これでもヌルいかもしれない。

ミッションの方は、中級者さん以上が挑戦するものとして、難易度を大きく上げました。

あと、(Arma3では意味無い数値かもしれませんが)ログイン時に、キルデスレートを表示するようにしました。。。

(;´∀`)

image

さんざんBattleye(アンチチート)に悩まされてきましたが、ここで初めてのCreateVihecleキック。

導入予定のMOD、gac_JSDFのアイテムを取ろうとしたら、やった。急がす訳にもいかず、未だ対応していただけてないよう。

”gac_JGSDF_”で追加すれば、ええかな・・(ロクに調べてない)

つい、さきほど、MOD開発者さんに連絡しました。

image

これ、ラジコンを作っていたそうです。プラモデルをラジコン化して、塗装も全部だそうです。。

(;´Д`)マニアすぎる

追記:ウォータークーラー

20190126221840_1

このサーバには、ウォータークーラーやコンクリミキサーはゼロだったんですが。。。w

ある方法で、利用できるようにしました。

(;´∀`)ま、アドオンの機能やけど

追記:CUP MODのアップデート

image

ふっとサーバにインしようと思ったら、赤丸表示・・。

(;´Д`)もしや・・

CUP MODがアップデートしていた。。もう・・気付かないんよ。。なんとか、ならんかな・・。

Linuxサーバだと、Steamの自動アップデートが利用できないんす(中身ファイル名を小文字化せねばならない)

やばい・・寝ぼけてた・・。無駄に20GBファイルコピー作業してもた。

JSRS SOUND MODのアップデートやった。

(;´∀`)・・・

追記:作業報告とゾンビ謎の挙動

20190128004754_1

これにはビックリしました。ゾンビに、数発当てた位でしょうか。。

スモーク炊きやがりましたよ。。

ヽ(;゚д゚)ノ !

なんか、投擲のモーションしたので、気になったが、う・・ん、初めてみたよ。物を投げる位の本能的なモノはまだ、残ってる・・と。。

20190131000533_1

何度もプレーしながら、おかしい点を細かく調整。

拙作lootboxアドオンも、ほぼほぼ新版リリースです。最後の最後に、トレーダーのランダム配置なんて機能を盛り込んでる最中でもありますが。。。

(;^ω^)そんな事してるからバグ取りが進まない

あと、gac_JSDF MODは、未だ原因が分からない感じなので、そろそろ採用の可否を決めなきゃいけない。

追記:89式アサルト正式導入決定ッ

20190201033703_1

自分の記述ミスだったというオチでした(オブジェクトクラス名)

(;´Д`)

正式に、89式アサルトを導入致します。62式は残念ながら、MODに入ってないので使えませんが・・。

(;´∀`)

あと、カワサキバイクカワサキも導入、初めてExile上で運転しました(ただ、スペックがチート級なので、MOD開発者さんに報告しましたが、対応してくれるか分からない)

追記:やっとサーバ用CPUクーラー手に入れる

P_20190203_182643

サーバで利用してるCPUは、AMD FM1 A6-3650という何ともジャンクな代物。

これをオーバークロックしてムチを打ってる訳ですが。

CPUクーラーが、リテールなので、冷えるやつにしたかった。

だが、元々2000円のPCに、新品クーラーを買うのも気が引けてたので、ずっとジャンクを漁ってた

(;^ω^)

ファンや付属品は無し、これが裸のままで売られてた。幸いAM用のリテンションが装着されてた。Ryzenでも使える。

300円・・・:(;゙゚’ω゚’): ぬおっ

調べてみたら、サイズの忍者ミニSCMNJ-1100という製品らしい。10年前のもの。

ファンや部品が無いので、うまい事取り付ける方法を考えないといけない。

時間のある時に装着して、結果をご報告。

追記:SimpleObject化できないやつ

image

ランダムトレーダーの所で、周囲に適当なオブジェクトを配置しようとしてたんですが、なんでかエラーで弾かれる。

単純に、適当なお食事とか、水とかですよ。

そういえば、オブジェクトによって、SimpleObject化できないやつがあったような気がした(←もう忘れてる)

SimpleObjectには、モデルパス(p3d)で渡す必要があるんですが、これの取得方法がこれ。

_model = getModelInfo _object;

_modelの2要素目に、モデリングパスが入ってくる。

これが、何でか未定義(nil)で帰ってくるみたい。

別に、EdenのConfigViewerで調べて、ソース上にガチッとモデルパス書きゃ済むんですけどね。。

(;^ω^)・・どうにも、気になって

20190207001919_1

今更ながら分かってきたぞ。。

Edenエディタ上のオブジェクトリストに表示されてないものが、該当するんじゃないかと。

とりあえずは、以下のようにして対応してみた。

_model = getText(configfile >> “CfgMagazines” >> _className >> “model”);

Exile Modの様々なオブジェクトはここに登録されてるので、ここから直にモデルパスを入手できる。

追記:

その後、色々調べてみたら、そんな簡単な事じゃなかったらしい。重要な事じゃないので、これはペンディングで。

(;´Д`)

余談ですが、Exile MOD内のトレーダー生成部分は、こんなcreateUnitなるコマンドで生成されてる。

_traderType createUnit [_traderPosition, _group, “trader = this;”];

“trader = this;”の部分がとっても気になる。このコードが実行される訳ですが、そもそも、なんでこんな仕様なの?と。

とっても気になりますが、時間のある時に調べてみよう。

また余談。

[“<img image=’logo.paa’/>”,safezoneX+safezoneW-0.85,-0.2,9999,5,0,3090] spawn BIS_fnc_dynamicText;

画面右上にロゴを表示するコードですが。なんでか、すぐ消えてしまってた。

(;´Д`)なんでよ。。

やっぱり、ちゃーんと調べてみないといけません。

6番目の部分が、画面レイヤー番号なのですが、他の要素と被るとダメなようで、今の所、ロクに調べもせず適当にしてますが。

元々、Default値にしてたのが悪かったのと、3番目の表示期間を指定してなかった(秒、デフォだと4秒)

追記:無敵なやつ

image

lootboxアドオンで出てくる無敵AIのやつが、おるんですが。。

(;^ω^)

実は、無敵じゃなくて、すぐ再スポーンして実現してたんですが、色々試してたら無敵が実現できたっぽい。

_unit addMPEventHandler [“MPHit”, “(_this select 0) setDammage 0”];

あくまで、ダメージ時にライフを全開にしてるだけ。ロードキルとか爆発物とか仕掛けたら・・とか(つまり即死系)、まだ試してないけども・・。

そん時は、mpkilledイベントで、再スポーンが動くのでええんですけども。

いまいち、分からんなぁ。。

追記:

mphitイベント、これで無敵実現したっぽい。ただし、即死しないように防御固めてないといけない。

(;´∀`)

AIのビヘイビアに、”CARELESS”とか設定すると、攻撃されても、何事もなく胸を張って優雅に歩いてるんですよ。ある意味ホラーです。タイラントです。

追記:座標系されど座標系

image

分かってはいたが、いちいち調べるのが面倒だったのでオザナリだったツケが来ております。

Arma3のコマンドによって、扱う座標系が違っていたりするんですよ。

本当は、これを考慮しないといけない訳で。。

大きな所ではASL(海面基準)かAGL(地表基準)か。モノによっては、x/y軸だけだったりする訳で。SimpleObjectを扱う場合は、World座標軸とか・・ね。

問題ありそうな所から、見直しを掛けてます。

追記:画像編集をば・・

image

私は何をしているのだろう・・・。

(;´Д`)

気晴らししてないと、続かないのよぉ。

この画像も、サーバのどこかに出てきます。はい。。

追記:セーフキットsmallとか

20190210141057_1

そういえば思い出したので調査。

1.0.4になって、「Exile_Item_SafeSmallKit」なるアイテムが追加されています。

Safekit自体は以前からありましたが、これの小さい版です。

せっかくあるので、これも追加しましょう。

・・と思ったけども、何やらバグ臭が。

問題無いようだったら導入。

20190210141422_1

configfile >> “CfgVehicles” >> “Exile_Container_Safe_Small”

コンテナーとしての容量はどこに記載されてるのかな・・とconfig見たんですが、ハードコーディングされてるんでしょうか。

・・と思って、コード内検索掛けても出てこなかった(単純にクラス名でgrip掛けただけですが)

どこかに書かれてるんでしょう。。。

(;^ω^)

追記:スコアボード備忘録

MP限定ですが、addPlayerScoresなるコマンドがありました。

プレーヤーのスコアを取得する事ができます(キル数など)

ずっと調べてた、マップ上にスコアボード(Diary)を表示する方法。

なんでか、難易度設定の所(Difficulty)にありました。

(;^ω^)

Exileでは難易度をイジる(config.cfg)のは推奨されてないかもしれない。

まだ、検証してないので、あくまでメモです。

Exileではなくて、普通にArma3 MPミッションゲーではブリーフィング画面があるので、そこに置くなんて事も考慮されてるそうです(description.ext内、事前:briefing/事後:debriefing、aiKillsはAIスコア)

image

そして、ついでに見つけた情報がこちら

image

マップ画面のメニューをカスタムできます。createDiaryRecordコマンドで作れる。

何かに使えそうです。