今日も冥界をいじる。そろそろ頭打ちとなってきた。 ソフト、ただでさえスパゲッティだったのがどんどんこんがらがっていく。
Stand.kさんに、ジャンプ中にオプション使用や壁スイッチの条件判断をしてはどうか、というアドバイスをいただいた。 確かにジャンプ中は全くの行動不能状態なのだから理にかなっている。 なぜそれに思い至らなかったのだろう。
ともかく、現状の変数管理や各種行動までのチップ数を考えてみる。
変数はロケット回避壁スイッチ、対飛行集中ロックの2つのみという全く頭を使っていない仕様になっている。 他に何に使うか思いつかなかった。 現在、ソフトの頭にオプション管理を置いている。 熱量60%で1つ目の冷却装置使用、75%以上で全冷却装置使用としている。 ループで管理してやるほど複雑な操作をしていないことが分かる。 道理でジャンプ中に判断させよう、という考えが出てこないわけだ。
ソフトの頭にオプション制御、次に回避ルーチン、接近ルーチンへ移行、最接近ルーチンへ移行、と頭から数えると「敵機体が格闘している場合の行動」が決まるまで20チップ以上かかる。 ジャンプ後、最悪4フレームぼけっと突っ立っている時間が生まれてしまう。 格闘車両から逃れられる時間は1フレームしかなかったりするので致命的だ。 これは改善しなければならない。
現在考えているのが、敵機体最接近ルーチンの手前で自機がジャンプかどうか確認し、ループさせるというものだ。 これでループが解けたとき対格闘動作が1フレームで取れる可能性が出てくる。 1フレームの隙を逃さず、ジャンプ射撃で格闘から脱出出来るようにするのが目標だ。
最初から近接戦闘、回避、移動の順に作れば問題なかったのだが、最初いきなり回避を作ったのでこのようなことになってしまった。 飛行型の作り方をそのまま持ち込んだのが失敗だったようだ。
教訓:地上機はまず近接戦闘ルーチンから作る。
敵機体最接近ルーチンの手前でループを回すには領域が足りない。 ソフトを大幅に整理しなければならないようだ。 接近ルーチンはループにしてあるので、移動させるのが大変だ。 今のところ全く役に立っていない対スプー機ルーチンを削ることにしよう。
今日からしばらくパズルの日が続きそうである。
|