これ。速くなるんか?

プチコンの描画速度問題は、結構共通認識っぽくて、
D
完成したREFLECT EDGEからも、結構苦労されているのがよく分かる。
極力画面内に多数のスプライトを置かないように敵を配置されているし、基本が弾幕系ではなく高速弾をメインとしたステージ構成になっており、更にゲームシステム自体も溜め撃ちショットをメインにして自機ショットのスプライト数も減らす策を取っている。
プチコンSTGの一つの完成系やね。


話は変わって、GRAD1U5。
もっと速くなるはずだってコメントを頂いたんだけども、ちょっと現状を考察してみる。


自機に前後2つのスプライト。
オプション2つを2パターンアニメーション。
それぞれのショット数が画面内2発まで。
実は現在の仕様ではミサイルが実装済みで、こいつも今の所一機辺り2発まで。

キャラクタ=自機×2個(前後)+オプション×2個=4個
ショット=(自機+オプション×2個)×2個=6個
ミサイル=(自機+オプション×2個)×2個=6個

この時点で16個なんだけども、後2〜3つ敵が画面内に出てきたら、処理落ち開始。
そこから大体20前後が、60fpsを維持するリミットのスプライト数と思われる。


と言う訳で、スプライト高速化対策案。
・SP系命令の毎フレーム発行を抑える。
SP系命令には必ず「遷移フレーム数」なる物があるんですが、実はSP系命令は凄く負荷が高くて、毎フレーム発行する様な仕様には耐えられない仕組みなんじゃないかなと。
でも、これは結構無理は相談で、直線的な動きにしか使えないから、微妙に速度を調整する減速や三角関数を駆使した左右移動や回転移動系は、毎フレーム座標を指定しなきゃならない。
しかも、衝突判定とかは毎フレーム取らなきゃならないわけで、使わない方法はかなり無理がある。


・SPANIMを使わない。
よく見てたら、SPANIMを使っているスプライトと使わないスプライトでは、僅かながらSPANIMを使わないスプライトは多く表示できていた気がする。
それでも、良くて2個多めに表示できるぐらいで、大幅な改善は見られない。


うん。グラディウスって題材自体がダメっぽいね
あぁ、やっぱり今回もダメだったよ。


...どうするかねぇ...