制作中のPICO-8シューティングゲーム「レガシーシューター」。
オプティマイズ(最適化)を行いました。
もうトークンが8181(最大8192)となっていて、ちょっとしたprintデバッグを入れるとトークンオーバーで実行できなくなる始末。
そんな時目についたのが、ムダに長そうなテーブルデータ。
一つは、敵の出現テーブルです。
タイミングのカウンタテーブルと、と出現させる敵の種類を記述したテーブルをニコイチにして、敵の出現パターンは0〜9に収められるので、split関数で数値を一ケタずつ切り離して扱うことで、節約できます。
もう一つは、敵戦艦の艦橋から撃ち出される扇状の弾の角度テーブルを計算式で導くことにしました(3〜13発までの弾の角度が6段階となっていて、かなりのデータ量です)。
またこの際に敵の弾の発生処理を関数化して流用出来るようにしました。
その結果、7492トークンまで減らせました!
よく考えずに、思いつきで書いていたので最適化は頭にありませんでしたが、トークンオーバーになってからは一応考えてコードを書くようになりました。
250トークンあるので、あとひとつ何かを実装して、調整もできたら完成です!
ゴールが見えてきたとか、こないとか。
コメント