Bombableはなぜ例外にできる | virt_flyのブログ

virt_flyのブログ

フライトシミュレーターソフトのFlightGearで仮想飛行を楽しむブログです。

↑Bombable対応化したYak-3は、Ju EF 128の機関砲が当たれば黒煙をひく様になった

 

<search-order>タグのPREFER_AIって?

 

フライトシミュレーターのFlightGearでは、AIのスクリプト化の動きの中で、AI機の飛行はAIシナリオを使ったのでは表示できなくなったはず。なのに、Bombable add-onにおいては、AIシナリオを使ってコンバットフライトシミュレーションを実現できているのは何故?

 

確かに、例外はあって空母での発着や編隊飛行の他、ヨット、それにグライダーの牽引もそうでしょうか。かなりAIシナリオの種類は減りはしましたが、Bommbableもそうした例外の一つのようです。

 

例外かどうかは、AIシナリオ中の〈type〉タグに書かれた文字列で識別し、Aircaftなら機体の描画を拒否しているのかなと疑うのですが、一概にはいえません。わかれば、AI機を飛ばす抜け道になるのではと探ってきました。

 

ようやく、Bombable add-onを確かめてみる段になったら、案の定AI機は正常に描画され、しかもAIシナリオが使われていることもわかったのです。ここはAIシナリオを調べてみる価値があるというものです。

 

旧バージョンとAIシナリオに違い

 

↑AI機のYak-3の反撃を受け火を噴くJu EF 128ーBombable add-onのおかげでFlightGearで空戦が可能に

 

手に入った旧バージョンのBombable add-onは、5.0の一つ前の4.6の他、一番古いものは3.0pでした。

 

現行のバージョン5.0と、他の旧バージョンとでは、AIシナリオに明らかな違いがあります。4.6や3.0pにはない<search-order>タグが5.0では使われ、PREFER_AIと書き込まれています。
 
ちなみに<type>タグは変わらずAircraftでしたから、AI機にもかかわらず描画されるたとなれば、この記述以外に理由が考えられません。「検索順」「AI優先」て何のことかわからないものの、ひょっとして、AI機を上空で旋回飛行させるAIシナリオに使えるのでは⁉

 

さっそく、以前のAIシナリオに<search-order>PREFER_AI</search-order>を書き込んで試してみることにしました。

 

みごとAI機が旋回!

 

↑旋回するAI機ーYak-3(前方)とBF-109G(後方)

 

スムースにはいかず試行錯誤の繰り返しの末、ようやくかつてのようにAI機が旋回するようになりました。

 

なぜ<type>タグがaircraftなのに機体が描画されるかは不明のままなので、とりあえず旋回用に使用したAIシナリオを後に掲げることにします。

 

旋回は、<bank>タグに代え<roll>タグを使うことで実現できました。また、Bombable add-onのAIシナリオを参考にしましたが、Bombable add-onを使用しようがしまいが関係なく実現できます。

 

なお、AI機は、$FG ROOT直下のAIディレクトリ(Ubuntu)、FG/data/AI(Windows)に置くのが無難なようです。

 

また、Bombable add-onを使用する場合は、旋回させたいAI機はBombable非対応にしておく必要があります。さもないと、旋回を途中でやめて勝手にどこかへ飛んでいってしまいます。

 

 

【例:AI機の旋回飛行用テストAIシナリオ】

 

 <?xml version="1.0"?>
 <PropertyList>
     <scenario>
         <name> (RJBB) Yak-3 turn</name>
         <description>
     </description>

        <entry>
            <search-order>PREFER_AI</search-order>
            <type>aircraft</type>
            <callsign>virt_fly</callsign>
            <name>Yak-3-1</name>
            <model type="string">Aircraft/yak3/Models/Yak-3-ai.xml</model>
            <latitude type="double">34.4313</latitude>
           <longitude type="double">135.2522</longitude>
           <altitude type="double">200</altitude>
           <speed>84</speed>
           <roll type="double">30</roll>
           <heading type="double">280.0</heading>
        </entry>

     </scenario>
 </PropertyList>

 

 

後ろめたさがある

 

かつてできたことができないのはどうにも悔しく、意地になってAI機の旋回を実現しましたが、手放しには喜べません。なんらNasalスクリプトは使っていませんから。

 

AIのスクリプト化の方向からして、推奨されていないAIシナリオの使用で目的を実現しようとするのは、流れに棹さす行為。正々堂々、Nasalプログラムを書いてりゃ、後ろめたさを感じずに済むのでしょうが…。