2024/08/20

スペースインベーダー 6

 なんてこった。また資料を見つけてしまった。

FSマイクロ株式会社>インベーダーゲームのソースの研究によると(正確にはここのブログで引用されているBSV (Bluespec SystemVerilog)によるスペースインベーダーの再設計およびComputerArcheology/Space Invaders)、敵弾の移動速度は1フレーム毎に1ピクセルではなく3フレームで4ピクセルなのだとか。さらに敵エイリアンの数が7匹以下になると3フレームで5ピクセルになるのだとか。
道理で動画を見たときに何か違和感があったわけだ。

早速修正。

それからエイリアン移動時の効果音(行進サウンド)の発音タイミングも違っていた。
ずっとエイリアン隊が1歩移動したときに1音鳴らすものと思い込んでいた。
なのでエイリアンの数が減ると移動速度が早くなるので効果音の発音間隔が短くなるのだと。
しかしそうではなく、歩行音の別タイマーがありエイリアンの残数に応じて発音しているのだとか。

表が長いので一部だけ載せるが、こんな感じ。


確かにエイリアンの1歩で1音だと最後の数匹の状態では音の間隔が短すぎてノイズになってしまう。
そこで5匹残った時点でそれ以上音の間隔を小さくしない処理を入れていた。つまり5フレームで1音を最小間隔としていた。
この表を見ると最後の1匹のときの発音間隔が5フレーム毎なので最小は5フレームで1音というのは間違ってはいなかったようだ。
とは言え、だんだん早くなる度合いが全く異なるので、この表に従って発音するように修正した。

エイリアンの移動は1フレームに2pixelだが、最後の1匹になったときに左から右への移動だけ1フレームに3ピクセルになる(だからレインボーと呼ばれる現象が起こる)、というのは動画を見てそうだろうなと思って実装していたのだけれど、今回の資料で正しいことが分かってちょっと嬉しかった。
レインボーは起こらないんだけど。

ところで前の記事で紹介した ししおどし>スペースインベーダーの謎 にはこうも書いてあった。

しかしこれは FSマイクロ株式会社>インベーダーゲームのソースの研究 の方が正しいようだ。
というのは、自分でもいくつかの動画を見てみたのだが、ジグザグ弾(ギザギザ弾)は必ずトーチカに半分(4ピクセル)しかめり込んでいない。
逆に言うとT字弾は必ず全部(8ピクセル)めり込む。
どちらも必ず起こっているので処理タイミングの問題とは思えない。

推測だがこれは貫通度というよりはジグザグ弾(ギザギザ弾)の爆発パターンの描画場所が上に4ピクセルずれてしまっている、もしくはジグザグ弾(ギザギザ弾)の爆発パターン位置は正しく、T字弾の爆発パターン位置が下に4ピクセルずれているのではないだろうか。
意図的か誤りかはともかく。
位置がずれているだけであればソースコードを見ても「貫通度」を示すようなものは見当たらないのは当然と思える。

爆発パターンの位置ではなくトーチカとの当たり判定の位置かもしれないが、何にせよ自分としてはT字弾の方が間違って4ピクセル下になってしまっているのかな、と考える。

そして、トーチカの幅が2ピクセル足りてないことに今頃気付いて修正。


左右対象でないのが気持ち悪いけど、実機の通り。





0 件のコメント:

コメントを投稿