O(log N)弾幕

ゲーム全体にもそこそこ言えることではあるけれど,特に弾幕は,コンピュータへの負荷が対数ではなくリニアで効いてくるという,何ともコンピュータプログラムらしくないプログラムだ。

まあごちゃごちゃ言ってはみたものの結論はシンプルで, 5 ウェイの各弾の上に 5 ウェイのグループを被せてみようといった程度のこと。

弾幕処理の省力化の話。ここに挙がっているネタと同じかどうかは分からないけど、前にケータイ上で鬼弾幕を軽く処理できないかと思ったときに似たようなこと考えてた。最近のケータイはGPUを積んでいるので、たとえばあらかじめ5ウェイの弾を書いたテクスチャを用意しておいて、それを拡大縮小することで5ウェイ全体を処理。当たり判定は弾源からの距離と角度でやるっていう方式。

実際はケータイ上のGPUがそんなテクスチャを動的に複数扱えるほど速くないということと、そのままナイーブに処理すると弾の大きさ自体が距離で変わってしまって、みなフィーバロンのボス弾っぽく(フィーバロンのボス弾は射出後拡大しつつ飛んでいくものが多い)なってしまうという点で却下。

というわけで次はシェーダによる弾幕をだれかやれ。