マガジン

反射神経は何ミリ秒か:タイミングゲームの判定幅の根拠

遊びを見つける

執筆にClaudeを使用しています。

振り子と色の異なる円を並べ、ゲームのリズムや間を表す立体作品。
記事のテーマをもとに制作したAI生成イメージ。実際のゲーム画面ではありません。

「針が緑の範囲に来たら止める」という操作を考えてみます。緑に入ったのを見てから押したのでは、たいてい少し遅れます。目で見て、判断して、指を動かすまでに時間がかかり、その間も針は進み続けるからです。それでも遊んでいる人は、緑の真ん中あたりで止められるようになっていきます。 この矛盾のような現象を解く鍵は、「反応時間」と「判定幅」が別のものを測っているという点にあります。この記事では、反応時間の一般的な目安、判定幅を時間に直す計算、そして時計じかけの台所のような公式作品から「設計から読み取れること」を整理します。最後に、自分の反応時間をブラウザで測る短いコードと、結果の読み方も示します。数値は読者が自分の環境で出すもので、この記事が測定結果を示すことはありません。

この記事の目次
  1. 反応時間と判定幅は、別のものを測っている
  2. 判定幅は「幅÷速さ」で時間に直せる
  3. 公式作品から読み取れる、判定を支える設計
  4. 自分の反応時間を測る最小のツール
  5. 結果の読み方と起こりやすい誤り
  6. 次の行動

反応時間と判定幅は、別のものを測っている

反応時間は、予告なく現れた刺激に対して、動き出すまでにかかる時間です。画面の色が突然変わったらクリックする、という課題が典型です。視覚刺激への単純な反応は、一般に200ミリ秒台あたりが目安として語られることが多いです。ただし年齢、体調、集中、機器の違いで変わり、個人差も小さくありません。ここでは「数百ミリ秒の単位で、かなりばらつく」という程度に受け取ってください。

判定幅は、ゲーム側が「成功」とみなす時間の幅です。針が緑の範囲にいる時間が、その一例です。

両者は次の点で性質が違います。

  • 反応時間は、いつ起きるか分からない出来事への反応を測ります。
  • 判定幅の課題は、針の動きが規則的なので、いつ緑に入るかを予測できます。
  • 予測できるなら、見てから押すのではなく、見ながら先に押すことになります。

つまり、判定幅が反応時間より狭くても、規則的な動きなら成功できます。逆に、動きが不規則で予測できなければ、反応時間が下限になります。ゲームの難しさを調整する設計者は、この二つのどちらを求めているかを区別する必要があります。

判定幅は「幅÷速さ」で時間に直せる

緑の範囲の見た目の大きさだけでは、難しさは決まりません。針が速ければ、同じ幅でも通過は一瞬です。時間に直すには次の式を使います。

緑を通過する時間 = 緑の幅(角度)÷ 針の速さ(角度/秒)

針が一定の速さで回るなら、一周の秒数が分かれば計算できます。次の表は仮定の数字による例で、実在の作品の値ではありません。

  • 8秒、緑の角度:36度、緑を通過する時間:800ミリ秒
  • 8秒、緑の角度:18度、緑を通過する時間:400ミリ秒
  • 4秒、緑の角度:18度、緑を通過する時間:200ミリ秒
  • 4秒、緑の角度:9度、緑を通過する時間:100ミリ秒

3行目の200ミリ秒は、先ほど触れた反応時間の目安に近い値です。この場合、緑に入ったのを見てから押す方法では、ほぼ間に合いません。緑の手前から押し始める予測が必須になります。4行目まで来ると、予測できても入力のわずかなずれで失敗が増えます。

つまり判定幅を決める設計とは、「見てから押しても成功できるか」「予測すれば成功できるか」「予測しても難しいか」の境目を、数値で選ぶ作業だといえます。

公式作品から読み取れる、判定を支える設計

アソバースの公式作品のうち、時間に関わる確認済みの仕様から読み取れることを整理します。判定幅そのものの数値は確認済み事項にないため、「作品を開いて確かめる」ことになります。

時計じかけの台所

6つのレシピがあり、材料をレシピ順に入れて火にかけ、針が緑の範囲に来たら止めて配膳します。難易度は二つあり、時間制限なしの「見習い」と、1皿28秒・配膳6秒・ミス3回までの「本番」です。料理ごとに100点評価があります。

設計から読み取れることは次の点です。

  • 見習いは時間制限がないため、針の動きや緑の位置を観察して予測を作る練習の場になっています。
  • 本番では1皿28秒の制限と3回までのミスが加わり、予測を急いで実行する負荷がかかります。
  • 100点評価があるので、緑に入れば成功という二択ではなく、止めた位置の良し悪しが点数に反映される設計だと考えられます。ただし、どの位置が何点かという細部は、作品を開いて確かめる必要があります。

紙ひこうき郵便

海辺は36秒で5通、丘は40秒で8通、山は44秒で10通の手紙を集め、最後の6秒で赤い郵便受けへ向かいます。風船にぶつかると紙が傷み、3回で終了です。操縦は左右キー、ドラッグ、矢印ボタンから選べます。

ここで注目したいのは入力手段が複数ある点です。キー、ドラッグ、ボタンでは、指の動かし方も操作の細かさも違います。同じ反射神経でも、入力手段によって結果が変わる可能性があります。「どの入力が自分に合うか」は、遊んで確かめる価値があります。

小さな軌道

発射角度と初速を決めて、引力で曲がる軌道でゲートを目指します。全軌道予測の点線と前回の軌道が表示され、予測を消して挑むことも可能です。

この作品は反射神経よりも計画の要素が大きいゲームです。予測の点線を消せるのは、見て合わせる遊びから、頭の中で予測を立てる遊びへ切り替えられるということです。タイミングゲームの予測と同じ考え方を、別の形で体験できます。

WAVE / WAVE

4つの音を16ステップに並べてループ再生するリズムスタジオで、テンポとスウィングを調整できます。ここでは時間幅を計算で出せます。テンポが毎分120拍なら、1拍は60000÷120で500ミリ秒です。仮に1ステップを1拍の4分の1とすると125ミリ秒になります。1ステップが何拍にあたるかは作品の仕様なので、作品を開いて確かめてください。

音楽のずれは、数十ミリ秒でも気づける人がいると言われます。判定のあるゲームの許容幅と、耳で感じるリズムのずれは、必ずしも同じ尺度ではないという点も覚えておくと便利です。

自分の反応時間を測る最小のツール

読者が自分で数字を出せるように、反応時間を測る最小のコードを示します。保存先もサーバーも使わず、HTMLファイルとして保存してブラウザで開くだけで動きます。

html
<!doctype html>
<meta charset="utf-8">
<title>反応時間メモ</title>
<button id="b" style="width:100%;height:200px;font-size:24px">クリックで開始</button>
<pre id="log"></pre>
<script>
const b=document.getElementById("b"),log=document.getElementById("log");
let state="idle",t0=0,timer=0,times=[];
b.addEventListener("pointerdown",()=>{
  if(state==="idle"){
    state="wait";b.textContent="待つ…";b.style.background="#ccc";
    timer=setTimeout(()=>{
      state="go";b.textContent="今!";b.style.background="#6c6";
      t0=performance.now();
    },1000+Math.random()*3000);
  }else if(state==="wait"){
    clearTimeout(timer);state="idle";
    b.textContent="早すぎ。もう一度";b.style.background="";
  }else if(state==="go"){
    const ms=Math.round(performance.now()-t0);
    times.push(ms);state="idle";
    b.textContent=ms+" ms。もう一度";b.style.background="";
    const s=[...times].sort((x,y)=>x-y);
    log.textContent="回数:"+times.length+"\n中央値:"+s[Math.floor(s.length/2)]+" ms\n最小:"+s[0]+" ms\n最大:"+s[s.length-1]+" ms\n"+times.join(", ");
  }
});
</script>

ボタンを押すと灰色になり、1〜4秒のランダムな待ち時間のあとに緑色になります。緑になったらすぐ押します。待ち時間をランダムにしているのは、タイミングを予測できないようにするためです。待っている間に押すと「早すぎ」で仕切り直しになります。

記録の取り方

  • 1セットを10回とし、最初の1〜2回は慣れのため集計から外します。
  • 1日のうち時間帯を変えて、2〜3セット行います。
  • 各セットで、中央値、最小、最大を控えます。平均より中央値を見るのは、たまに大きく遅れた1回に数字が引っ張られにくいためです。
  • 入力手段も記録します。マウス、タッチパネル、トラックパッドなどを分けて控えてください。

結果の読み方と起こりやすい誤り

出た数字は、次のように読みます。

  • 中央値が一般的な目安より大きくても小さくても、それだけで反射神経の優劣は決まりません。この測定には、画面の表示遅延や入力機器の遅延が含まれるためです。
  • 画面の更新が毎秒60回なら、1フレームは約16.7ミリ秒です。色が変わってから実際に目に届くまでに、最大で1フレーム程度の差が出ることがあります。
  • 中央値は同じでも、最小と最大の幅が大きいセットは、集中や姿勢が安定していなかった可能性があります。
  • 入力手段を変えて中央値が大きく動くなら、その差は自分の反射神経ではなく機器の特性だといえます。

この数字を判定幅の議論に使うには、先ほどの表で計算した「緑を通過する時間」と並べます。

  • 緑の通過時間が自分の中央値より十分に長ければ、見てから押しても成功しやすい設計です。
  • 通過時間が中央値と同程度か短ければ、予測して先に押す必要があります。
  • 予測しても失敗が続くなら、判定幅が狭いか、入力の遅延が大きいか、針の速さの感じ取りが不十分かを疑います。

起こりやすい誤りもいくつかあります。

  • 1回だけの結果で自分の反応時間を決めてしまう。
  • 「早すぎ」を避けようと、緑になってから慎重に動いてしまい、実際より遅い数値が出る。
  • ゲームの遅れ(見てから押して失敗する)を、自分の反射神経だけのせいにする。入力と表示の遅延も関わります。
  • 計測用ページと実際のゲームを同じ尺度とみなす。ゲームは予測が使えるため、同じ数字にはなりません。

作る人へ:判定幅の決め方

自作のタイミングゲームに応用するなら、次の手順が使えます。

  1. 目標とする通過時間(ミリ秒)を先に決めます。
  2. 針の速さから、緑の角度を逆算します。
  3. 判定には、フレームの更新時刻ではなく、入力イベントが届いた時刻を使います。
  4. 数人にテストプレイを頼み、成功率と「早押し・遅押しのどちらに偏るか」を記録します。
  5. 偏りがあれば、判定幅を左右対称にするか、少し片側を広げるかを検討します。

この手順は、あくまで設計の考え方です。最終的な数値は、遊ぶ人の環境と年齢層で変わるため、必ずテストプレイで確かめます。

次の行動

まず上のコードをHTMLとして保存し、10回を2〜3セット測って、自分の中央値を出してみてください。そのあと、時計じかけの台所の「見習い」で針の動きを観察し、緑に入る前から押す感覚を試すと、反応と予測の違いが体でつかめます。最後に、作品内の緑の範囲や針の速さが数値でどれくらいかは、作品を開いて自分の目で確かめてみてください。