NekoFlightのページに戻る ’98のNekoFlightに関するたわごとを見る
細かいバグをつぶして正式版としました。修正点は一部メモリーリークがあったので直したとか、表示関連のちょっとしたバグとりなどです。新機能としては、F5キーでHUDのON/OFFができる用になってますが、実はこの機能はβ2の時点で付けてあったので、β2をダウンされた方はVer0.7を新しく落とす必要がないと思います
。まだ、フィールドの端に行ったときに突然ワープするとか、一時停止中などに再描画しないなどのほとんどバグと言えるものが残ってますが、これらは今の所、仕様ということで(^^;
さて、次はネットワーク対戦部と、ステージの概念を作ってゲームらしきものにする予定ですが、これらに関してはプログラムをまるまる書き直す必要があるので、現在のミサイル鑑賞目的のものとは別に、完全にゲームとして新しく作る予定です。
で、現在のNekoFlightの方は基本的にミサイル鑑賞ソフトなので、最終的にスクリーンセーバーの機能を付けようかと思ってます。もちろん、今のフライトシミュレータとしての機能も残しますが、自動操縦部がメインになるということで。
次に、新しく作るゲームのほうですが、そもそもこのミサイル乱射状態でゲームになるのかという問題があり、対戦部分を実験的に作ってみて遊べるかどうかを判断して、遊べそうなら公開しようと思います。こっちはシェアになると思いますので、ゲーム化がどうでもいい人は見捨てて下さい。基本的にゲームの方は一から新しく作りますが、NekoFlight側から各ルーチンを吸い上げて作りますし、ステージ関連や効果音関連などNekoFlightの方で実験的に作ってからゲームの方に持っていくと思いますので、NekoFlightの方も平行してバージョンがあがると思います。
ということで、NekoFlightのバージョンアップは当分止まります。ゲームの方も姿を表すのに少し時間がかかると思いますので、しばらくお待ち下さい。
P.S.
ゲームの方は現在、格闘ゲーム的なシステムを予定してます。対COM戦でステージをクリアーしていくのが基本で、各機にライフの概念があり、ダメージを受けるとこれが減っていき、0になったら撃墜というものです。人対人の対戦も、通常の格闘ゲームの様な対戦方式を予定しています。ただ、常に1対1なのか1対複数なのかはまだ未定です。せっかくミサイル乱射ができるので、雑魚をぼかぼか落としていくというのをやりたい所ですが、これはボーナスステージでしょうか。
0.7βには大量にバグがあったので、修正しました。修正点は、GDI表示の際にオブジェクトが表示されてなかったとか、レーザ表示を用いた際にリソースを開放し忘れていたなどの致命的なものと、ロボット状態の操作系が変わったにも関わらず、自動操縦のアルゴリズムを変えていなかったことや、いつのまにか斜面を走れなくなっていたなどの仕様ともいえたような(^^;細かい点です。
バグ取りでない新しい機能としては、エンジンの位置変化をちゃんとグラフィックスで表すようにしたことがありますが、エンジンが下を向くだけですし、DirectXONでポリゴン表示ON&敵機に近づかないと判らないので、あまり楽しくありません。本当は機外視点を付けようと思ったんですが、ミサイルをGDIで表示しているために、ポリゴン表示とミサイルの重なり具合がどうしても変になるという致命的な問題があり、今回はあきらめました。
β2では、ロボット時にもある程度、敵機と空中戦が出来るようになったので、自機、敵機ともにYF-1にして、ロボット状態で空中でミサイルを撃ち合うのが今回は面白いんではないでしょうか。次のバージョンではネットワーク対戦部を実装する予定ですが、これを見ていると対戦では飛行機状態ではなく、ロボット状態での格闘がメインになる気がします。ロボット時にはブーストで横方向に急制動できますが、これを行うとほとんどミサイル当たりませんし、見た目にも楽しいですから。
さて次はいいかげんに正式版になる予定ですが、まだバグがありそうだなぁ(^^;。もう少しバグとりしてます。
何か気づかれた方は教えて下さい。
チャフ、フレア、シーカーレーザ、ステルスなどの防御系の実装と、各パラメータの変更、形状データの添付、ヘルプの作成などを行いました。一応、Ver0.7で予定していた範囲は作り終わったので、βとします。
前までのバージョンを実行したことがある場合、今回のバージョンを実行すると初めにモデルデータを初期化するか聞いてきます。別にNOを選んでも、あとでモデル初期化を実行すれば同じです。F15など、それなりに実機に近づけてあるので、できれば一度初期化しておいて下さい。
また今回初めに気づく変更点は、赤く光るシーカーレーザだと思いますが、これが何なのかは、新しくなったヘルプの背景設定やミサイル関連の所を参照して下さい(今、論文書きで忙しいためか妙に説明的な文章です(^^;、うんちく部分なので丁度良いけど)。この辺りは、航空機関連とか好きな方は「んなわけあるかい」とか突っ込みいれながら読んで下さい。どうでもいい方は適当に無視しても大丈夫です。
あとシーカーレーザ以外の防御手段であるチャフやフレアですが、こちらは細かく設定を変更しないと見れませんので、ヘルプを参照してミサイル設定とかを変えて見てください。例として、チャフを見たい場合、攻撃するミサイルと攻撃される機体に、Radioアクティブミサイルとチャフ防御の組合わせを設定するとかになります。
あとは、機体の形状データがそれなりにF15とかになってますが、都合によりDirectXのポリゴン表示でないと見れません。
他には、ミサイルの追尾方式がまた一つ増えました(2次予測追尾です)。ヘルプのうんちくからするとどうしても、命中精度重視のミサイルが必要ですが、今までの方式だとどうしても命中率が悪いので、命中率重視の追尾方式を作ってみました。実は今回一番時間がかかったのはこの部分です。既にミサイルの動きが見飽きたという方は、ためしにこの新しい2次予測追尾にしてみるのも良いんではないでしょうか。AMRAAMとかCSRAAMはこっちが標準になってます。
さて、あとは細かいバグフィックスとか、変形のグラフィックス部分とかでしょうか。
敵機の攻撃と、キー・ジョイスティック設定を追加しました。敵機の攻撃に関しては、機種設定でデモ用に設定するなどして様子を見てみて下さい。なかなかの乱戦したドッグファイトが見れます。また、ジョイスティック設定に関連して、スロットル関連が多少変っています。今まではVTOL時やロボット時、スロットルを固定していましたが、今回これらのモードでもスロットル可変としました。といっても、キー操作などではモード切替え時に自動的にデフォルト状態にスロットルが移動しますので、自分でスロットルを指定しない限り今までと変りません。アナログスティックでスロットルを用いた場合、意識して自分でスロットルを調整しないといけないので注意して下さい。たとえば、常にスロットルを最大にしておくと、変形時に勝手に宙に浮いてしまいます(^^;
さて、あとVer0.7で残っている実装は、防御関連ぐらいなので次にはどうにかβ版になるでしょう。
今回、3Dボード無しでも高速にポリゴン表示できるようにしました。それ以外、ほとんど変更されてないのですが、他にVTOL時の挙動がまたまた換わっています。
α3での変更で、VTOLとロボット時の振る舞いの違いがほとんど無くなってしまったので、どちらかを無くそうかと思ったのですが、現存するVTOL機であるハリアーなどでも各部からのスラスターでVTOL時に姿勢を制御しているので、このモデルでも翼があれば結構まともなVTOL機のシミュレーションになるなぁということで、VTOL時の翼計算を復活させました。これによりα2までと同様、ある程度速度が出てしまうと後ろに向くことができないなどの制限がでますが、こちらの方がリアルなので良しとしました。もし空中で自由な方を向きたい場合はロボット状態にして下さい。
ここで各状態の特徴をまとめると、飛行機状態は自由に空中を機動できるが急制動ができない。VTOL状態では、空中での進行方向や姿勢の制御が難しいが急制動ができ、地上も高速に移動できる。ロボット状態は、空中で自由な向きをとることができるが、あまり速度がだせない。また、地上では急制動が可能であるが、速度が出ないとなります。
またこれに伴い、VTOLとロボット時のHUD表示も換えました。ピッチスケールだけではどこを向いているのかわかりみくいので、上下や東西南北方向を示す計器が追加されています。この計器は今回あまり凝っていないので、またあとで変更すると思います。
さて、今回の変更のメインである、DirectX-OFF状態でのポリゴン表示機能についてですが、いままで多くの方からポリゴン表示が遅いという意見を頂きました。これはポリゴン表示を全てDirect3Dに頼っていたためです。Direct3Dはビデオボードに3D機能がない場合、HELと呼ばれるエミュレーション部でポリゴン表示を行いますが、私の使い方が悪いのか、単に性能が悪いのか、HELはめちゃくちゃ速度が遅いです。そのため今回、テクスチャ表示部以外はDirect3Dを見捨てることとし、独自のポリゴン表示ドライバを使用することにしました。Ver0.5まででこの簡易的なものを用いてはいたのですが、クリッピング処理がいいかげんなどの理由により高低のある地面表示に耐えられるものでなかったため、Ver0.6でポリゴン表示を全面的にDirect3Dに切り替えたのですが、またまた独自表示部を復活させたことになります。
このドライバは全てGDIの機能で描画しているため基本的にフラットシェーディング専用ですが、それではあまり奇麗でないので、フォグの機能も持たせてあります。これにより結構それらしい感じになっていると思います。
#また従来のDirect3Dによるフラットシェーディング表示側もこれにあわせてフォグの効果を入れてあります。加えてDirect3Dによるフラットシェーディング時には、グローシェーディングを指定できるようにもなっています。
このドライバにより3Dボード無しの場合、Ver0.6の5から10倍の速度でポリゴン表示できるようになっていると思います。私の手元の環境でのベンチマーク結果を示しておきますので参考にして下さい(ベンチマーク結果)。
Ver0.7であと予定している実装は、敵の攻撃、キー操作変更、縮小表示への対応などです。
#形状データ作成とパラメータ調整もやらんとなー(^^;
細かい変更をかなりの数行ったので、なにをやったのか忘れないうちに公開しておきます。
まず、敵機の表示が換わりました。といっても、まだ敵機の形状データが全て出来上がっていないので、DOGA
CGA-L1のサンプルを基にしたデータをつけてあります。今回のデータはあくまで、こんな感じに表示する予定ということを示すだけのもので、これをこのまま使うわけではありません。なお都合により、ワイヤーフレーム表示の場合、従来のデータを用いたものが表示されます。
次にVTOLやロボット時の操作系を根本的に変えました。いままでのバージョンでは、足についたエンジンを動かすことで、姿勢の変更と移動を行っていたので、無理な操縦をするとひっくり返ったり(VTOL時)、エンジン出力で回転速度が変化する、向きも自由には変えられないという状態でしたが、これらの計算はそもそもいんちきだった(謎の力を発生させてバランスをとっていた)ので、今回開き直って、操作性重視にしてみました。
まず計算モデル的に向きの特異性をなくし、回転は各部スラスターの噴射で行うものとしました。具体的には、VTOLやロボット時には翼を畳んでしまい、向きを空中で3軸、地上で1軸、確実に操作できるようにしています。ただし、移動は従来通り足についたエンジンの向きを変えることで行います。
具体的な操作法ですが、まずヨーイング操作(Z, XやU, Oキー操作)は常に可能です。次にブーストボタン(P,
B, Cなどの従来のジャンプボタン)が離されている状態でなおかつ空中にいる場合、ローリング操作(J,
Lや←→キー)・ピッチング操作(I, Kや↑↓キー)が可能です。次にブーストボタンが押された場合、ローリング・ピッチング操作がエンジン方向操作に切り替わり、同時にエンジンにブーストが掛かります。足は基本的に機体の下方向に向いており、キー操作と逆方向に向きが変わるため、
となります。アナログスティックを用いていれば、半球上の範囲で任意の方向に加速できます。
なおこれは地面に対してではなく機体の方向を基準としたものなので、機体の最終的な加速方向は機体の向きによって変化します。例を上げると、
などとなります。
PSのゲームのジャンピングフラッシュとアーマードコアを足して10倍難しくしたような操作系に加えて、進行方向と機体の向きが独立しているため、自分がどちらに進んでいるのを把握していないと、自機がどこに行くかわからなくなります。が、慣れれば空中で自由な向きのまま自由な方向に移動できます。これにより、飛行状態からVTOLに変形し、すばやく逆噴射して急減速しながら後ろ向いてミサイル撃つ(^^;とかの複雑なことができます。
またVTOL時は翼を畳み、なおかつ地面との抵抗がない状態なので、地面上をものすごいスピードで動けます。VTOL状態で横滑りしながら敵にミサイルを撃つと結構面白いです。
他に飛行機状態でブーストを用いると、アフターバーナーとなります。ただしブースターが非常に強力なため、飛行機状態でブーストを掛け続けると機の安定性が失われます(フラッターが発生する)。
次に、ミサイル種類の選択を実装しました。これにより、電波誘導式の場合ミサイルのシーカーが表示されないとか、セミアクティブ式の場合に目標がレーダー視野外にでるとロックオフするなどとなりました。
また、ミサイル煙のGDI表示などの速度向上や、各機の累積ダメージ量の表示などを行いました。 累積ダメージ量はBSキーでリセットできます。
その他、細かい変更点がまだありますが、省略します。
なお、敵の攻撃、防御設定は中身がまだ実装されていません。
結構、変更しましたので、α2として公開します。ただしα1同様、インターフェイス部分だけで中身が出来てない部分があります。具体的には、まだ敵が攻撃してこないので機種設定ダイアログにおける機銃・ミサイルチェックボタン(これは攻撃にこれらを用いるという意味)は敵機に関しては無効、機体設定ダイアログにおけるその他の設定の中の防御レベルは無効(これはステルス性などの設定)、ミサイル設定ダイアログのミサイルの種類が無効(これは電波誘導ミサイルなどはシーカーが表示されないなどの、主にHUD周りに影響する設定)です。それ以外は大体実装しました。
で、今回新しく追加されたのは、機種設定ダイアログで自機の自動操縦指定が可能になったこと、ダメージを受けなくできるようにしたこと、各機の自動操縦の際の機敏さと目標とするターゲットが変更できること、機体設定ダイアログで、フィート表示、アナログ式速度・高度計、現状のHUDに近い視野角のHUD、変形機能のOFFをサポートしたこと、機銃設定ダイアログで、機銃可動のOFF、可動角度の変更が可能になったことです。
これらの変更は主に、F15イーグルなどを実現するためのものです。自機にF15を選んでもらえば判りますが、HUDが狭くなり、高度・速度計器がアナログ式、表示単位がメートルからフィートになります。なんとなく見にくくなるのは、ピッチスケールが5度毎になっていることから判りますが、画面の視野角が狭くなっているためです。実存するHUDでは一番広めのものでも20度ぐらいしか見えませんので、実機でもこんな感じのはずです。ここではF-28以降で、40度以上の視野角を持つHUDが採用されることを仮定しています。
あと今回重要なことは、自機の自動操縦が可能になったことです。これに伴い、デモ用の設定ボタンと、全設定のクリアが可能になっています。とりあえず皆さん、設定メニューの「全設定初期化」を実行したあと、機種設定ダイアログで、「デモ用に設定」ボタンを押してみて下さい。ほとんどの方は既に承知している動きだと思いますが、もしかすると敵をうまく追いかけられないとか、設定の問題などで、あのミサイルの「正式な動き」をまだ見ていないかたがいるかもしれません。こちらが実現したかったミサイルの動きはだいたいこんな感じですので、一応見ておいてください。今回の公開は、この部分が結構楽しめたためやりました(^^;。そのためフライング気味でろくにチェックしてないので、変な部分が残っている可能性高いです。
さて次は、残りの部分の実装と、敵の思考ルーチンのチューニング、各パラメータのチューニング、形状データの変更を行う予定です。
あ、あとノートユーザの方から3Dボードは使えないよー、というご意見がありましたので、3Dボードがなくてもある程度高速にポリゴン表示できる様、テクスチャマッピングをOFFできるようにしました。といっても、かなりシンプルなってしましますので、ワイヤーフレームと代わり栄えしないかもしれません。しかも、テクスチャ張ったときとあまり速度が変わらないかもしれませんが、OFFできないより出来た方がいいでしょうということでつけてみました。
Ver0.7では既に書いたように、自機や敵機の機種を選べるようにする予定です。それに伴い今回、インターフェイス部分を先に実装することにしました。このα1版で、Ver0.7がどんなものになるかは予想できると思います。 ダイアログなどのインターフェイス部分はこれで大体完成ですし、実装が簡単だった所は機種ごとの設定も実際に有効になっています。
今回、インターフェイスだけあって、中身が実装されていない(設定しても意味がない)のは具体的に、機種設定ダイアログのほとんどの部分(機種選択だけまともに動作します)、機体設定ダイアログのその他の設定の部分、ミサイル設定ダイアログのミサイルの種類選択、機銃設定ダイアログの可動角度と、自動追尾のOFF機能などです。これらはHUD表示の変更がある程度必要なため後回しになった所です。また、各パラメータのデフォルト値は今回いいかげんな設定(特に機体データは完全に×)なので、後でバージョンが上がった場合に、各ダイアログの初期化を押す必要があります。できれば今回のVer0.7の暫定版を用いるときは、レジストリエディタでNekoFlightのレジストリ情報をバージョンアップの度に消したほうが安全だと思います(でないと、NekoFlightの動作が変になるかも)。
さて、今回中身も結構変えましたので、そちらを列挙しますが、まずグラフィック部分の一部変更(ミサイル煙の半透明処理など)、ミサイル爆発時などに機体の各部にかかる力計算の追加(無敵なのは変わらないですが、無理な力を受けると姿勢が崩れて飛行不能になりますので、ミサイルなどで当たり所が良ければ撃墜可)、爆発のショックテストのため敵のダメージを自機に転化する機能の暫定追加(これはもちろん変ですので、敵が自分を攻撃するようになったらそのうち消えます)、現存するミサイルに対応するためミサイルの追尾方式を増やしたことなどです。あと、ミサイルは一度に2種類つめるように変更されています。ミサイルの変更は[T]キーです。
その他、各設定ダイアログでいろいろ怪しい項目が増えてますが、説明は正式版のヘルプまで待ってください。
また選択可能な機種が、F-15, F-22, F-28, FX-9, YF-1となっていますが、実在する機体はF-15とF-22だけです。同様に、ミサイルで実在するのは、AIM-9(サイドワインダー),
AIM-7(スパロー), AIM-120(AMRAAM)で、機銃で実在するのは、M-61だけです。他のは全て私が勝手に設定したものです。これは、シチュエーションとして新型機(YF-1)のテストというのを仮定してますので、それ以前の主力戦闘機を相手に戦う、つまり、あのミサイルうちまくりの自機(YF-1)は、F-22の3世代後の主力戦闘機候補であるという設定のためです。これはどうにかしてあのバル○リーもどきの機体をこじつけるためですね(^^;
ダイアログの各設定を睨んでいるとこのあたりいろいろ想像できますので、暇な方は考えて見てください。
次は、HUDまわりや各パラメータを実機に近くなるようチューニングする予定です。
ヘルプなどを変更しましたのでVer0.6として公開します。プログラム自身は基本的にVer0.6β2と変っていないので、β2をダウンされた方でヘルプが要らない方は落とす必要がないです。
さて、次はやっと機種選択などの実装を行う予定です。敵なども調節できる様にするつもりですし、そろそろお互いに無敵なのを変更できるようにしましょう。
目立たない細かい点を修正しました。まずビルと自機、玉との間の当たり判定を追加しました。これでやっとビルに登れます。また、地面との計算をすこしまともにしました。といっても斜面でちゃんと力が斜めにかかるようにしただけですし、斜面では操作しなければ摩擦で止まってますのでほとんど判らないです。VTOL状態になれば滑るので少しは判るけど。ただ、斜面を下る時にどうしても跳ねます(^^;スケールが大きい(ロボット状態で10m)ので、斜面に大きな石を落とした時のように、斜面が急な場合に落下が斜面に追いつかず宙に浮いてしまいます。まだ計算が変な可能性大(^^;。地面との抵抗を0にすれば良いんだろうけど今度は立ってられなくなるし。
あとの変更点としては、ビルに登れるようになったのにあわせて、ジャンプ時に視点が上下に移動する様にしました。これは上下方向の速度成分で動かしています。邪魔な人は、メニューからこれをキャンセルできるようにしたのでOFFにして下さい。
あと、ウインドゥを最大化できるようにしました。実は今回、これにかなり時間をとられました。本当は完全に全画面を使うようにしたかったんですが、私の所ではそれで速度が向上しなかったのと、全画面状態と大きさ可変状態の動的な変更がうまくいかなかった(再起動する必要があった)ので普通のアプリケーション的な最大化にしてしまいました。
その他、細かい点で変更があります。とりあえず今回は、ビルに登って渡り歩いたり、ビルに機銃を撃ってみて下さい。本当は正式公開版にしようと思ったんですが、ヘルプ変更が面倒なのと、まだ細かいチェックを入れたいのでβ2版です。
敵機などのオブジェクトの表示を全てDirect3Dに切り替えました(ミサイルなどは従来通り)。これで、前のバージョンの様にオブジェクトが背景から浮いてみえる事などがなくなったはずです。これでかなり凝ったオブジェクトでも簡単に表示できます(今回、データ作るのが面倒だったのでそのままですが)。ということでためしにビルや敵機などにテクスチャを張ってみました。ビルは本物らしくするため少し大き目にしました。やはりテクスチャマッピングは強力で、いいかげんな処理でも結構ビルらしく見えます。このテクスチャのデータは単なるBMPファイルなので、いろいろ変えて見るのも面白いと思います。ただ、ビットマップの縦、横の大きさが2の階乗(2,4,8,16,32,64など)に限られるので注意して下さい。
あと、まだ当たり判定がないのでビルに上ったり出来ません(^^;。これは次に直します。このプログラムは飛行部とミサイル部がメインだったので地面上での動きやその上のオブジェクトなどは結構いいかげんな処理しかしてなかったのですが、高低があると地面を動きまわるのも結構面白いので、もう少し地面上での処理を凝ろうと思います。現状では、斜面で力を斜めに分解してないとかの多くの手抜き部分があります。
また、今回のβでは一応滑走路らしきものを作ってみました。これにともない、他の部分で離陸するのが少し難しくなってます。ある程度ジャンプして飛行機に切り替えるとか、地面との反動で浮かび上がるとかいろいろがんばって離陸してみて下さい。
リクエストがあった地面の凹凸を実装しました。現在は乱数で高さを決定しているので実行するたびに山の形が変わります。これに合わせて機体と地面との接触判定なども変更しましたが、まだ判定が甘いところがあり、地面にめり込むことがあります(^^;。あと、斜面を走っていると変な動きをするなどまだ幾つか変な所がありますが後で直す予定です。また、DirectXを使わない状態でポリゴン表示にすると、地面の表示が昔のままですが、これはあとで直すか、もしくはこの機能自身を削除すると思います。ポリゴン表示のほうは、Direct3Dに対応した3Dボードがないとまともに動かなくなってきていると思いますので、これからは3Dボードがある場合ポリゴン表示、ない場合ワイヤーフレーム表示を標準としていく予定です。
面倒なActiveDrawの方がやっとバージョンが上がったので、気晴らしにNekoFlightの方をいじってみました。Ver0.6では動き周りを変えようと思っているんですが、今回の改造はとりあえず簡単な所ということで、機体の振動に応じてHUDが動くようにしてみました。振動自体は機体の加速度の微分で求めています。ただ、確かにリアルにはなるのですが、効果を弱めにしてあります。ですので、地面にでもぶつけて見ないと判らないかもしれません。これは、あまりこの効果を強くすると地面を走っているときなどに画面を見ていて気持ち悪くなるという問題があるためです(^^; なおこの振動は、あとで攻撃されたことなどを表現できるように付けてます。
あと細かいところですが、ミサイルのパラメータを一つ追加しました。内部的には前からあった見越し角係数というものなんですが、説明が面倒ですねぇ。ヘルプにしたらこうなるだろうというものを書きますと、
見越し角係数
ミサイルの追尾方式には主に目視線追尾と見越し角追尾によるものがあります。目視線追尾はミサイルを目標に向け続けることにより追尾するもので、主にIR方式のミサイルで用いられます。見越し角追尾は、ミサイルと目標の距離、相対速度に応じて目視線より少し先に見越し角を設けて追尾する方式です。アクティブホーミングなどの追尾方式の大型のミサイルで主に用いられます。本シミュレータのミサイルは距離に応じてこの二つを混合して用いており、これはその比率を制御する係数です。
本シミュレータでは、離れていると目視線追尾、近づくほど見越し角追尾としています。このパラメータは、目標のどのぐらいの距離から見越し角追尾を始めるかのパラメータです。単位はメートルです。0にすると完全に目視線追尾、10000など大きくするとほぼ見越し角追尾となります。目視線追尾より見越し角追尾のほうが遠距離や目標の前方からの攻撃の際に当たり易いですが、あまり離れた場所から見越し角追尾を行うと、こんどは目標の動きに敏感になり逆に当たりません。デフォルト値は800で、近距離ミサイル用となっています。中・遠距離ミサイルとしたい場合、10000などの大きめの値にして下さい。
だいたい、こんな感じです。0や10000などにしてミサイルの動きを見てみるのも面白いと思います。
あと、コンパイラをVC++5.0に変えたんですが、なぜか速度優先でコンパイルすると固まってしまうので、オプティマイザを切ってあります。そのため速度が遅くなっているかもしれません。
いろいろチェックして細かい問題点を大体つぶしたので、Ver0.5として公開しました。βからの変更点は、爆発もDirectDrawで書くように変更したことや、画面のリサイズに対応したこと、メニューの復活(全画面モードを付ける気だったのでポップアップメニューにしたのですが、いまのままだと面倒なので見送り(^^;)、あとやはりDirectDrawまわりで細かいバグがあったのでこれをつぶして、ほとんどの画面モードで動作する様にしました。
しかし、DirectDrawまわりは各画面モードに個別に対応しなければならないので結構面倒。そういえば、従来のGDI表示も選べるようにしておきました。ただ、なぜかVer0.4より速度が少し低下しているようです。Ver0.4->0.5ではウインドウ関連を全て作り直したので、何か無駄な処理が入り込んでしまったんだろうけど、チェックが面倒くさいので後回し(^^;
DirectDrawを使うとデバッガの調子が悪くてプロファイラとかがかけられないんでチューニングが面倒なんです。私のところではそれほど遅くもないのでまあいいかということで正式版にしてしまいましたが、後で表示周りをまた最適化しましょう。
結局、DirectDrawは速度を上げるのにはあまり役にたたない(この手のソフトはGDIでチューニングした方が高速。全画面モードを使うのでなければ、ビットマップ操作もWinGのが早い。DirectDrawはトラブルが増えるだけ?)のようなので、あれを使うのはやめた方がいい気がしますが、まあ、はやりだからいいか(^^;。Direct3Dのほうはあれを使わないと3Dボードのハードウェアアクセラレーションが使えないからしょうがないですが。
さて次はどうしましょうか。ゲームにすることを考えて、動き回りを多少変えますかねぇ。お互いに無敵ってのも芸がないですし。ただ、普通のゲームにしてしまってもミサイルを連射して楽しむという本来のコンセプトが失われてしまっていやですので、敵の全滅に何秒かかるかとか、一定時間に何機落とせるかを競う系のゲームかなぁ。やはり。 一応、背景設定(なぜこんなにミサイルを撃ちまくる必要があるのかとか)は考えてあるんですけど。
やはりグラフィックス部分の変更は、簡単な割に結果がすぐ出て楽しいため、変更がさくさく進みます。ただ、思ったよりDirect3Dのポリゴン表示が遅い(単に使い方が悪い可能性大(^^;)ので、結局ミサイル本体や機銃表示などの細かいオブジェクト表示はGDIやDirectDrawによる表現でいくことにしました。今回目立つ変更は、ミサイルのモータ燃焼を半透明表示で表現するようになったことぐらいですので、そろそろDirect3D版NekoFlightということで一度正式公開版にしようと思います。それに備えて、残っていた細かい問題(ポップアップメニューのチェックマーク処理、フルカラーモードへの対応、256色時の警告、DirectDraw使用部の細かいチェック、ウインドウのリサイズに対応、アイコン表示など)を修正しました。敵機の表示がGDI表示のままですが、あまり目立つ問題点ではないので今回は見送りました。これに関してはもう少し後のバージョンで敵にこだわるつもりなので、その時に変更するかも。あと、爆発に関してはさすがに浮いてますので、次の正式版ではここを変更する予定です。
ミサイルの煙を半透明にするなどして、煙がテクスチャマップされた背景から浮くのを抑えました。
始めはDirect3Dに半透明処理があるだろうからそれでやろうと思ってたんですが、使うのが簡単なDirect3D保持モードの方ではどうもアルファ処理はサポートしてないみたいなので、Direct3D直接モードを試していたのですが、こちらでもうまくいかない(直接モード自身がめちゃくちゃ面倒(^^;)なので、結局DirectDrawを用いたVRAMへの直接アクセスで処理してしまいました。
ということで、半透明部は全てCPUによる力技で処理していますので、ミサイルの煙に近づいて半透明部の面積が増えるとそれに比例して遅くなります(^^;
また、このα版ではDirectDraw部の処理がいいかげんなので、ハーフカラー(6万色)モード以外では動きません。もしかするとVirge以外のチップでは動かないかも(^^; あとで細かいチェックをいれます。
その他、画面系以外に、機銃自動追尾機能の追加や、武器の名称の変更、VTOL状態などでの空中での動作の変更(空中ではスタビライザが切れる)などを行いましたが、これらは正式版であるVer1.0でゲーム性を持たせることに対する布石です。なぜこうしたのかはVer1.0になれば判るはず。なお、正式版はソフトの名前をXF-1にする予定です。
さて次の変更は、他に浮いている部分であるミサイル本体や敵機、爆発、機銃の表示などかな。
Direct3D表示部を組み込んだα版を作成しました。奇麗な割には結構高速に動きます。これでは背景(地面と空)のみDirect3Dで描いており、オブジェクトやミサイル、機銃などは今までどおりのGDI表示です。そのため少しこれらが浮いて見えますが、これは次に直します。ミサイルの煙などはポリゴンで表現するのが難しそうなので、もしかするとこのままかもしれません(^^;
HUDの表示と共にここの部分は半透明処理(アルファブレンディング)を行いたいところなんですが、この表示部分をDirectDrawで自作するはめになるかも。
なお、このαバージョンでは、今までのメニューが右ボタンのポップアップメニューに代わっています。また、リニアフィルタリングをON/OFFできるようになっています。
3Dアクセラレーションできるビデオボードを使えるようになりましたので、DirectDrawやDirect3Dを実験してみました。初期化などがいろいろ面倒ですが、思っていたより使えるかも。やはりハードウェアで3Dの機能(というより、強力なビットマップ変形機能)を利用できるのはありがたいです。
とりあえずNekoFlightの背景表示部分ができたので、この部分だけを公開しておきます。地面と空の二つのオブジェクトがあるだけですが、テクスチャマッピングやリニアフィルタリングの働きにより、それらしい感じがだせていると思います。ただフォグがうまく働かなかったので、テクスチャでごまかしてます。
表示部分だけなので、操作できませんし、ミサイルやHUDの表示もありません。単なる一番奇麗な画面モード用背景テストプログラムです。RGBカラーモードでHALが有効にならないと遅いです(うちではHAL使用で6FPSぐらい?)。
標準でテクスチャにリニアフィルタリングが掛かってますが、リサイズすると勝手に外れます。また、最大化するとプログラムが落ちます(^^;
256色環境でも動作しません。このあたりは計算部を組み込んでから直す予定(^^;
どこをどーやっても家のマシンではTOTAL3Dの調子が悪いので、結局返品してしまいました(^^;
買ったのが対応の良いところでよかったなぁ。
ということで代わりにViRGE/GXを積んだ怪しいボードを買ってきたんですが、こちらは調子いいです(^^)/
4MのSGRAM積んでるわりには1万5千円で怪しいなぁと敬遠してたんですが、まあ良かった良かった。実際には、標準で積んでるドライバだとNT4.0で動作が怪しいとかあったんですが、RAMDAC一体型のチップですので、S3社のサイトからGENERICドライバ落としてきてOKと。しかしサポートのWebページもないとは怪しい会社のボードを買っちまったなぁ。
ということで、いつものごとくOS入れ直して(TOTAL3D自体がおかしいことを確認するために入れ直したんですね(^^;)環境整備してと一日かけてやっとまともな環境が復活したので、NekoFlightの新バージョンを完成させました(Ver
0.4)。
ここで公開していたβと大体同じですが、機体やミサイル系のパラメータを大まかに変更できるようになってます。ハットでの機銃操作もちゃんと実装しました。
学校のマシンだとTOTAL3Dもちゃんと動くので、調子が悪いのはボードのせいではなくて他との相性みたいです。とりあえずGDIだけでどこまでできるかということで、ミサイルの煙の表示などをグラデーション化してより立体的にしてみました。あと背景のグラデーションもより滑らかにしてみました。
さすがにここまでGDIで描き込むと重いので、グラデーション利用を選択できるようにはしてあります。
ジョイステックのハットの実装をした時点で、GDI版の最終ということでNiftyのライブラリにでも登録する予定です。なんかVer0.1からあまり変わってませんけど(^^;
ということで前から計画していた表示部の強化を行うべく3D機能を持ったビデオボードを仕入れてきたので、Direct3D系を試して見ようと計画中です。
ただ仕入れてきたビデオボード(TOTAL3D NX4)ですが、どーも長時間使っているとマシンがリブートします(T_T)。RAMDACがめちゃくちゃ熱くなってるし、マニュアルによるとこのボード最大電流2Aということで、熱暴走か電源容量が足りないのかのどちらかでしょうねぇ(^^;
まあ、こちらはどうにかするとして、いっしょにアナログスティックも仕入れてきた(実はいままで持ってなかった)ので、さくっとNeoFlightをこれに対応しました。まだハットの実装ができてませんけど。
基本的に2軸4ボタンジョイステックを想定してますが、一応ラダーにも対応させてあります。私はラダーペダルを持ってないので、ちゃんと動作するかわかりません(^^;
ボタンなどの割り当ては次の通りです。
X軸 | 補助翼操作 |
Y軸 | 昇降舵操作 |
R軸 | 方向舵操作 |
Aボタン | 機銃発射 |
Bボタン | ミサイル発射 |
Cボタン | 飛行機時−ミサイル連射、その他−ジャンプ |
Dボタン | 飛行状態へ移行 |
ハット | 機銃の向きに使用する予定だが実装してない |
NekoFlightのページに戻る ’98のNekoFlightに関するたわごとを見る