太鼓の達人の判定とかいろいろ

まず初めに、僕はゲームプログラマでもなんでもないので、ただの憶測であることを明記しておきます。太鼓の素人です。ごめんなさい。

「太鼓の達人の判定とかいろいろ」というタイトルですが、まず音楽ゲームにおける2つのゲーム実装方法について書きます。

まずフレームベース。1秒間nコマという設定を予めしておき(基本的に60コマ)、それに合わせて音符や演出を行う方法。

次に時間ベース。こちらはn秒目に音符がある、n秒目から演出が始まるなど、時間を軸としてゲームを成り立たせる方法です。

このフレームベースと時間ベース、使い分けはどうするのかというと、筐体・端末の性能差があるか否かですね。例えば、基本的に1作品のアーケードゲームに使われるコンピュータの処理速度は一定のはずですから、フレームベースでゲームを作ったとしても問題ありません。

ただしPCゲームのように、「Core i7を積んだパソコン」もあれば「Celeronを積んだパソコン」もある、といったPCの個体差、つまりコンピュータの処理速度が一定ではないことが考えられるゲームに関しては、フレームベースではなく時間ベースでゲームを作る必要があります。

後者の環境でフレームベースで音楽ゲームを作った場合、コンピュータが他の処理(とくにWindowsゲームであればマルチタスクですし、他の処理が割り込みしてきますから)をして、ある一定の時間ゲームの処理ができなかった場合、そこから音楽の再生と画面の表示がずれていきます。これがアーケードで発生したら、たまったもんじゃないですね。1クレ返せ。

そんな「アーケードではあってはいけないこと」な処理オチですが、実はアーケードの太鼓の達人が処理オチするところを見てしまったんですよね……。といってもかなり前の話で、ブルーVer.前期の時でしょうか。

その頃の太鼓の達人はかなり不安定で、背景が消えたり、BGMが消えたり、画面が乱れたり……。かなり謎めいた不具合が多かったです(いまは多分修正済み)。その不具合の中に、極端に処理オチするというものがありました。「極端に」なので、すこしカクつくとかそういうモノではなく、1秒間に1フレーム分くらいしか処理できてないような……。そんな感じです。

これはTwitter上でもたくさん動画が上がってますし、自分自身も体験しました。いや……すごく……ひどいんですよね。

ただこの経験から分かったことがあって、太鼓の達人はフレーム基準で動作してることが判明しました。

また、太鼓の達人の太鼓の分解能が秒間60であり、それ以上の入力に対応していないと仮定すると、

  • 太鼓の達人は、秒間60コマ前提で制作されており、ディスプレイへの入力は60Hz、出力はフレーム補完され120Hzであること。
  • 太鼓自体の性能として秒間60以上の入力は捨てられることから、連打の秒速理論値は60連打/秒であること。
  • 良、可、不可などの判定は1000分の1なので……≒ 16.666… ミリ秒。つまりミリ秒換算で、各種判定の範囲はこの16.666… 倍であること

などが上げられると思います。

しかし、おかしな話ですよね……16.666…ミリ秒に1度しか判定が行われないというのは……、ものすごく雑なような気がします……。例えば「画面の描画は秒間60回するけど、判定の処理はその倍の120回するよ!」でも良いわけですよね。ただ、太鼓のコントローラー側の入力分解能が秒間60なので、そのような工夫は無きに等しいですが……。