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

プライベートarma3,exile,mod,server

地獄の様なサーバ構築作業中で御座います。

この写真が物語っております。

(;´Д`)

座標がズレまくっとるんです。

大量に配置したオブジェクトを、1個1個調整してるんですよ。

ほら、ARMA3って、起動に時間が掛かるでしょ。編集しては、確認の繰り返し・・想像出来ますでしょうかw

もう、心が折れそうです。

ほとんどのEXILEトレーダーって、地べたに無造作に配置してるパターンが多いじゃないですか。

これが理由だったんでしょう。

ここまで来たからには、妥協はしたくないんですね。

今は、トレーダー(NPC)の配置で調整してますが。

先日までは、(数百個の)MAPオブジェクトと格闘していたんです。

こちらは、もう、妥協できる所まで完了しました。

もう、これ位のオブジェクトの浮きは勘弁してもらいたいw

(;^ω^)
( ´Д`)=3・・w

0.01レベルで調整しないといけないんです。

これだと、Z軸で、0.03位かな・・と、目視で分かるようになってしまった私がここにいる・・。

しかし・・訳が分からない。

オブジェクトには、大きく2種類あって、動作するか、又は、静的なシンプルオブジェクトがあって。

前者のもので配置してしまうと、問答無用で物理演算が働いてしまう。

ちょっとでも触れてたら、どっかに吹っ飛ぶ訳です。

(;´Д`)

トレーダーなんかだと、雰囲気作りのため沢山のオブジェクトを置くので、恐ろしい事になります。

なので、こういった場面では、シンプルオブジェクトを利用するのです。PhysX・物理演算も無いので、より高速で処理ができる。サーバにとっても、クライアントにとっても良い訳です。

しかし、オブジェクトによっては、シンプル化できないものがあるんです。

車両、ドアの開閉するもの、武器や装備品の多く、アイテムの一部など、結構存在してます。

これの判断材料が、今のところ分からない・・という問題が。

でも、一応、createSimpleObjectに、3Dモデルデータパスを指定すれば良いのは分かってるので、なんとかなりますが。

エディタ(M3Editor)が出力したデータは、クラス名だけで、そのままでは通せない(シンプル化できるオブジェはクラス名だけでも通るみたいだが)

上の写真の様に、様々なスクリプトを書いてはテストしてるのですが、一向に改善しません・・。

ほんと、手作業で一個づつ書き直していくしか無いんか・・。

(´;ω;`)

以下は備忘録なので。

M3Editor書式そのままを、シンプルオブジェクトで置く(上記の問題有り)

private _simpleObject = createSimpleObject [_x select 0, _x select 1];
_simpleObject setVectorDirAndUp [_x select 2, _x select 3];

一度ダミーで動的オブジェクトを作り、それを元に3Dモデルパスを取得後、静的オブジェを作成(問題有り:そもそもモデルパスが帰らない)

private _dm = (_x select 0) createVehicleLocal[0, 0, 0];
private _in = getModelInfo _dm;
private _so = createSimpleObject [_in select 1,_x select 1];
_so setVectorDirAndUp(_x select 2);
deleteVehicle _dm;

静的オブジェクトでも、綺麗に整頓してくれる便利な関数。だが、結局のところ微妙。

[_so,_in] call BIS_fnc_adjustSimpleObject;

オブジェクトの作成で、以下のように5引数に”NONE”というのが最も高速なんだそうです。ちなみに、”CAN_COLLIDE”は、(物理演算しない?)強制配置になりますが、微妙でした。

private _so = createVehicle[(_x select 0),(_x select 1),[],0,"NONE"];//CAN_COLLIDE

createVehicleで作成されたオブジェクトは、非同期で作成されるので、ものによっては、生成前にコードが走ってしまう場合があります。なので、0.5秒は待てと、公式では言ってるようです。

(´・ω・`)知らんがな

(追記予定)

プライベートarma3,exile,mod,server

Posted by nabe