ワンボタンゲームの入力は一種類ではない:押す長さと間隔
遊びを見つける執筆にClaudeを使用しています。

「ボタンは一つだけ」と説明されるゲームを遊ぶ場面を考えてみます。画面には説明が一行あるだけで、操作は「タップ」としか書かれていません。ところが遊んでいるうちに、軽く触れただけでは足りない場面や、少し待ってから押したほうがうまくいく場面に出会うことがあります。ボタンは一つでも、判定に使われている情報は一つとは限りません。 この記事の問いは「一つのボタンから、ゲームはいくつの種類の情報を取り出しているのか」です。確かめる方法は、遊びながら数えることです。押した瞬間、離した瞬間、押している長さ、押さずにいる長さ、連続した押しの間隔、押した回数、長短の並びを、別々の量として切り分けます。そのうえで、どの量を変えるとゲームの結果が変わるかを一つずつ確かめます。 結果の数値はここには載せません。あなたが選んだゲームで、あなたが数えた記録だけが答えになります。手順、記録シート、確認用の短いコード、読み方の基準、間違えやすい点の順に進みます。
一つのボタンが運べる情報を数える
ボタンの操作は、突き詰めると「押された」と「離された」という二つのできごとです。ほかのものはすべて、この二つの時刻から計算できます。計算で取り出せる量を分けると、次のようになります。
- 押した瞬間、何を見るか:押された時刻、ゲームでの現れ方の例:動くものに合わせてタイミングよく押す
- 離した瞬間、何を見るか:離された時刻、ゲームでの現れ方の例:押しっぱなしで溜めて、離すと発射する
- 押している長さ、何を見るか:離した時刻 − 押した時刻、ゲームでの現れ方の例:長く押すほど高く跳ぶ、遠くへ飛ぶ
- 空白の長さ、何を見るか:離してから次に押すまで、ゲームでの現れ方の例:一拍待ってから押す、間を空けすぎると失敗する
- 押す周期、何を見るか:押した時刻から次に押した時刻まで、ゲームでの現れ方の例:一定のテンポで押し続ける
- 回数、何を見るか:一定時間内に押した数、ゲームでの現れ方の例:連打、ダブルタップ
- 長短の並び、何を見るか:長い押しと短い押しの順序、ゲームでの現れ方の例:決まったリズムを再現する
- 押さないこと、何を見るか:何もしない時間そのもの、ゲームでの現れ方の例:待つことが正解になる場面
最後の「押さないこと」は、ボタンの操作ではありません。それでもゲームが「押さなかった」ことを判定に使っていれば、情報の一種として数えます。何もしないことで成立する場面があるかどうかが、入力の幅を左右するからです。
もう一つ区別しておきたいのは、「空白の長さ」と「押す周期」です。押す周期は、押している長さと空白の長さの合計になります。ゲームの説明文が「間隔」と書いているとき、どちらを指すのかで必要な操作が変わります。数えるときは、離してから次に押すまでなのか、押してから次に押すまでなのかを、毎回書き分けてください。
記録の設計:ゲーム1本ごとの採点シート
数え方の骨格は「一度に一つだけ操作を変えて、結果が変わるかを見る」ことです。説明文に書かれている量ではなく、実際に結果へ効いている量を見つけます。
準備するもの
- 調べたいワンボタンのゲームを1本。自分で作ったものでも、他の人が作ったものでも構いません
- 紙かメモアプリ。表は後述の形で十分です
- 時間を測りたい場合は、後述の小さな記録ツール
遊ぶ対象の例として、アソバースの公式作品「時計じかけの台所」を考えてみます。確認できている範囲では、材料を入れて火にかけ、針が緑の範囲に来たら止めて配膳する流れです。「止める」操作が主役で、押した瞬間が効くと予想できます。ただしこれは予想です。長く押す必要があるのか、連打が影響するのかは、作品を開いて確かめてください。
手順
- ゲームの説明文を読み、「押す」「離す」「待つ」にあたる語を書き出します。「長押し」「連打」「タイミング」のような語があれば、それも拾います。
- 先ほどの表の8つの量を、シートの行に並べます。
- 量ごとに、次の三つを書く欄を作ります。
- 説明文に書かれているか(はい/いいえ)
- 意図的に変えたとき、結果が変わったか(変わった/変わらなかった/判断できない)
- 変えた回数
- 1つの量につき、最低3回は変えて試します。同じ変え方を3回繰り返し、結果が毎回同じ向きに変わるかを見ます。
- 試すときは、他の量をなるべく動かさないようにします。たとえば長さを試すなら、押し始める時刻を揃えます。
量ごとの試し方
- 押した瞬間:早く押す、遅く押すを意図的に行い、結果の違いを見ます。
- 離した瞬間:同じ長さの押しで、離す位置だけをずらします。画面上の動きを目安に、離す場面を変えます。
- 押している長さ:押す瞬間は揃えたまま、短く押す場合と長く押す場合を比べます。
- 空白の長さ:押す操作を2回続ける場面で、間を詰める場合と空ける場合を比べます。
- 回数:同じ時間内に1回押す場合と、何度も押す場合を比べます。
- 長短の並び:長短を入れ替えた押し方を試します。ゲームにリズムの手本があれば、その手本どおりかどうかも見ます。
- 押さないこと:何も押さずに待つと、何が起こるかを見ます。放置を失敗とするか、成立とするかは、ゲームの設計を知る手がかりです。
ここで「判断できない」という欄を残しておくことが大切です。たとえば結果が変わったように見えても、別の要因で変わった可能性があるなら、その場で「変わった」と決めないでください。同じ操作を3回繰り返して、毎回同じ向きになったときだけ「変わった」とします。
最小の記録ツールで自分の押し方を見る
人間の感覚では、短く押したつもりが意外に長かったり、一定の間隔で押したつもりが揺れていたりします。自分の押し方の癖を知っておくと、ゲームで「長さが効いていない」と判断してしまう誤りを避けられます。次のHTMLを1つのファイルに保存してブラウザで開くと、押した長さと、前回の押下からの間隔がミリ秒で出ます。キーボードはスペースキー、画面はボタンで動きます。
<!doctype html>
<meta charset="utf-8">
<title>ボタン記録</title>
<button id="b" style="font-size:2rem;padding:1rem 2rem">押す</button>
<pre id="o"></pre>
<script>
const b=document.getElementById('b'),o=document.getElementById('o');
let downAt=null,lastDown=null,n=0;
const rows=['番号,押下周期ms,長さms'];
function down(t){
if(downAt!==null)return;
downAt=t;
}
function up(t){
if(downAt===null)return;
n++;
const gap=lastDown===null?'':Math.round(downAt-lastDown);
rows.push(n+','+gap+','+Math.round(t-downAt));
lastDown=downAt;downAt=null;
o.textContent=rows.join('\n');
}
b.addEventListener('pointerdown',e=>{b.setPointerCapture(e.pointerId);down(e.timeStamp)});
b.addEventListener('pointerup',e=>up(e.timeStamp));
b.addEventListener('pointercancel',()=>{downAt=null});
addEventListener('keydown',e=>{if(e.code==='Space'&&!e.repeat){e.preventDefault();down(e.timeStamp)}});
addEventListener('keyup',e=>{if(e.code==='Space'){e.preventDefault();up(e.timeStamp)}});
</script>出力の「押下周期」は、押してから次に押すまでの時間です。空白の長さは、押下周期から直前の押しの長さを引くと求まります。行をコピーして表計算ソフトに貼れば、自分の揺れの幅も確認できます。
使い方の例を挙げます。
- 「できるだけ短く」押す練習を10回行い、長さの列を見ます。
- 「1秒ごとに押す」を目標に10回行い、押下周期の列を見ます。
- 同じ操作を日をまたいで行い、並べて比べます。
この記録は、ゲームの判定とは別物です。ゲームの内部では、画面の更新単位(多くは1秒間に約60回、つまり1回あたり約16.7ミリ秒)で入力を読み取っていることが一般的です。ツールの数値は、ゲームの判定そのものではなく、自分の操作の目安として扱ってください。
結果の読み方
シートが埋まったら、「変わった」に印がついた量を数えます。この個数が、そのゲームが実際に使っている入力の種類です。ゲームごとの分かれ方を、判断の基準として整理します。
効いている量が1つだけの場合。 多くは「押した瞬間」だけです。操作の学習は早く、難しさはもっぱらタイミングの見極めから来ます。操作の幅は小さいぶん、見る側が読み取りやすい作りです。
効いている量が2つの場合。 「押した瞬間」と「押している長さ」の組み合わせがよく見られる形です。いつ押し始めるかと、どれだけ続けるかを別々に考える必要があります。遊びながら、片方の失敗がもう片方の練習を邪魔しないか、気にして見てください。
効いている量が3つ以上の場合。 押す周期や回数、長短の並びまで関わると、ボタンは一つでも操作はかなり多様になります。リズムゲーム的な性格が強くなるはずです。
もう一つ大切なのは、説明文と実際のズレです。説明文には「タップ」としか書かれていないのに、長さが効いている場合があります。逆に「長押し」と書かれているのに、実際は押した瞬間しか使われていない場合もあります。このズレがあるゲームは、初見の人が操作を誤解しやすい作りといえます。作る側として見れば、チュートリアルや説明文で補う箇所です。
また、「押さないこと」が成立するゲームでは、放置しても進行するのか、止まるのかで性格が変わります。待つことが正解になる場面があるなら、ボタンの数を増やさずに判断の幅を広げる設計になっています。
保護者や教える立場の方は、長押しや連打が必要かどうかを見ておくと、遊ぶ人の手に合うかを判断しやすくなります。表の「効いている量」を見て、細かいリズムが必要かどうかを確認してください。
起こりやすい誤り
数えるときに間違えやすい点を挙げます。
- キーの自動リピート。 キーボードのキーを押し続けると、OSが同じ入力を繰り返し送る場合があります。ゲーム側で無視していれば「長押し」として扱われますが、無視していなければ「連打」に見えます。上のツールでは、繰り返しの入力を無視しています。ゲームでの挙動は、実際に長押しして確かめてください。
- タッチとマウスの二重入力。 環境によっては、タッチの後にマウス相当の入力が追加で届き、1回の操作が2回に数えられることがあります。回数を数えるときは、連打が必要と決める前に、1回だけ押したときの反応を確認してください。
- 一度に複数の量を動かす。 「長く押したら結果が変わった」と感じても、同時に押す瞬間も遅れていたなら、効いたのは瞬間かもしれません。1つの量だけを動かす約束を守ってください。
- 画面更新の単位に縛られた判断。 数十ミリ秒の違いは、画面更新の単位に切り上げられて同じ結果になることがあります。「変わらなかった」とするのは、差を十分に大きくしてからにしてください。
- 試行回数が少ない。 1回だけの結果で決めると、偶然に引きずられます。同じ変え方を3回行い、毎回同じ向きかを確認します。
次の行動
まず、今遊んでいるワンボタンのゲームを1本選び、8つの量の行を持つシートを作ってください。1量につき3回ずつ試すだけで、そのゲームの「入力の種類」が見えてきます。「時計じかけの台所」のように針の位置で止めるタイプの作品も、アソバースならログインせずに開けます。説明にない量が効いているかどうかを、まず1本で確かめてみてください。
自作するなら、完成後に自分のゲームでも同じシートを埋めてみてください。ルール文に書いた量と実際に効く量が一致していれば、遊ぶ人にとって分かりやすい作品になります。

