2012年2月27日月曜日

難易度調整

簡単過ぎるゲームは好きではありません。
昨今のゲームは簡単すぎるものが多い。
しかし、単に難しければ何でも良いという訳でもありません。
恐らく、適度な達成感の得られるゲームというのが、最善です。

という訳で、InvaderBlock2の難易度を調整。
ボールの動きを少し遅くしてみたり...etc
こういう部分は、一度リリースしてしまうと「リプレイデータの互換性」という柵ができてしまうので、変更可能な唯一のタイミングが今です。単なるバグなら、アップデートで更新できる仕組みがあるから、こういう部分の調整に力を入れるのが吉だということに、本日夕方頃、気付きました。

実は、Androidの場合、画面(SurfaceView)の更新間隔が16msに1回のようです。
つまり、秒間の描画回数は62~63の間。(62.5fps)
Windows(DirectGraphic)のフルスクリーンのゲームであれば、簡単に60fpsに調整できますが、実はこの60fpsというのはあまり良い数字ではありません。60fpsだと1秒(=1000ms)で割り切れないので。(16.6666666....msになってしまうから、例えナノ秒精度でウェイトしてもダメ)

つまり、60fpsにしようとすると、16ms→17ms→17ms(50ms/3回)の不均等な間隔で描画する必要があります。そうすることで、1000ms÷50ms=20になり、20×3回=60fpsという具合になり、めでたく60fpsが実現できる訳です。(ハードウェア的に60fpsをサポートしているGPUの場合、もっと細かい単位(μ秒やナノ秒単位)でズレを設けているかも・・・ハードには疎いから分かりませんが)

例え1ミリ秒であっても、不定期にズレが生じると違和感を感じることができます。
(故に、ガーベージコレクションというのはかなり厄介なシロモノ)
しかし、3回に1回という形で規則的に動作すれば、脳(視覚)は「均等に動いている」という錯覚を起こします。つまり、60fpsというのは、錯覚の原理を利用しているのでフレームの視覚的均一性は、実は幻だった・・・という訳です。ただし、人間は時間の単位を基本的に60進法で管理するので、60の方が良いのかも(=1ミリ秒を1/1000秒としたのが誤りなのかも)しれませんが。

余談が長くなりましたが、要するに
「Android版InvaderBlock2は62.5fpsで、それを60fpsに調整する気はない」
ということです。(Windows版も公開時は62.5fpsに調整予定)

しかし、当初Windowsでは60fpsでテストしていたので、ゲームスピードが4%速くなってしまいました。
その分(4%)を調整するためにボールの速度を調整・・・という訳です。
もちろん、これの所為で達成感を損なうレベルに難度が落ちる事だけは避けたい。
なので、慎重に調整します。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...