2016年2月9日火曜日

【Unity】砲弾工場


 前から(ずっと前から)実装しようと思っていた、キャッシュした砲弾を使う仕組みを作った。これで一度作った砲弾を使いまわせるようになった。全体を統括する委員会クラスの管理下に砲弾工場が作られてここで初期化時に適当な数の砲弾が直ちに生産される。砲弾は倉庫に保管される。一方でタレットは砲弾を発射するタイミングで工場に発注をかけて、それを受けて工場は砲弾を倉庫から取り出してタレットに渡す。砲弾は種類ごとに動的にプロダクトIDが割り当てられてそれが発注番号となる。砲弾はどこかに衝突すると工場に送られてきれいに洗浄された後また倉庫に保管されるという環境負荷が小さなシステムだ。下の写真では飛び交っている砲弾がアクティブになっていて保管されている砲弾は眠っている。


また敵味方を指定するIFFクラスを改造してユニットの型と他のユニットに対する脅威度を記録できるようにした。たぶん将来、AI開発の時に役立つだろう。ファイアーコントロールも改造して独自に索敵する機能を無くした。代わりに委員会管理下にグローバルチームというクラスを作ってここに各ユニットのIFFが初期化時に登録され、常に追跡されるようになる。ファイアーコントロールはグローバルチームに現在地から指定距離内にいるユニット情報を請求し砲塔に目標を割り当てるようになった。


 基本的にはユニットの情報を集中管理するという考え方は間違ってないと思う。ただユニットの数が増えると索敵のコストも高くなるので最適化が必要になるだろう。

0 件のコメント: