新しい機種でもFPSが出なくなってきた…
最新のiPod(第6世代)でもfpsが60を維持できないケースが増えてきました。特に砲塔が多くの弾幕を同時発射する(つまりスプライトが多く重る)瞬間に顕著になります。
これは以前から気がついていたのですが、対策が面倒なため根本的な対策ではなく、光の効果を部分的に外すことで対応してきました。例としては3/27にyoutubeに上げた動画(リンク)で、以下の画像の矢印部分のような弾幕に光の効果を付けていないのが確認できます。
ですが上記のような小手先の対応では、どうにもならなくなってきたので抜本的に対策することにしました。
スプライトの重ね合わせ処理を減らす
今回の弾幕ゲームは弾幕の美しさを重視しているため描画負荷が高くなっています。そのため、低スペック環境でも遊べるように「光の効果」を外す機能を付けることを最初から決めていました。なので弾幕は以下のように「弾本体」と「光の効果」2つのスプライトを重ねて1つの弾幕にしています。この構成なら「光の効果」を外しやすく弾の種類が増えても対応が楽です。
しかし、そのためにスプライトの処理がこれまでの弾幕ゲームの2倍の負荷(弾1つに2つのスプライトを利用している)となっています。なので面倒ですが、以下のように「光の有る弾」と「光の無い弾」の2種類を用意することにしました。上記の構成なら弾3種類+光の効果だけなので4種類の素材ですみますが、以下の構成だと6種類の素材を用意することになります(弾種の追加や修正も手間が掛かります)。
スプライトの面積を減らす
面倒ついでに「光の効果」の画像サイズを小さくしました。これまでは縦横100pxだったのを縦横80pxに変更しています。面積的には10,000pxから6,400pxになったので4割近い負荷軽減が期待できます。左が古いスプライトで右が新しいスプライトです。
左のスプライトは黒い余白が多く感じますが、以下のように数値的には光があります。ですが肉眼では判別できないので、右の新しいスプライトでは余白部分を削っています。
スプライト関連以外にも「弾道の計算間隔」や「あたり判定」も見直したのですが、それについては後日改めて記事にしようと思います。
設定画面の作成
そんなこんなで今週の進捗動画です。設定画面を完成させて「光の効果」のON/OFFができるようになりました。「傾き検知」のON/OFFもあります。少し音が大きくなってしまいました。すいません。
twitterを本格的に初めてみた。ブログの更新記事をつぶやくのがメイン。あとCocos2dやUnity、その他アプリ開発に関連するツイッターの方をフォローして情報も集められたらなぁと思います。
— 柳澤@ゲーム作るよ (@designdrill) 2015, 12月 28