30秒で終わるゲームを作る:短さが遊びを濃くするか
遊びをつくる執筆にClaudeを使用しています。

自作のゲームを友人に渡し、1回目が終わった直後の数秒を見ている場面を考えてみます。画面を閉じるのか、そのまま「もう一回」を押すのか。この数秒に、そのゲームがもう一度遊ばれるかどうかがほぼ表れます。 「ゲームは短いほど繰り返し遊ばれる」と言われることがあります。1回の負担が小さいので再挑戦しやすい、という理屈です。一方で、30秒ではルールを覚える前に終わってしまい、何も残らないという反論も成り立ちます。どちらが当たるかは、遊びの中身と時間の組み合わせで変わるはずです。 この記事は結論を述べません。同じルールで制限時間だけを変えたゲームを2本用意し、遊ぶ人の「もう一回」を数えるための実験設計書です。準備するもの、手順、記録の取り方、結果の読み方、誤りやすい点の順に進めます。
「濃くなる」を測れる言葉にする
「遊びが濃い」は感想のままでは比べられません。次の4つの観察に分解します。どれも画面を見ているだけで数えられます。
- 再開率:1回目の終了後に「もう一回」を押した人の割合です。
- 連続回数:その人が離脱するまでに遊んだラウンド数です。
- 再開までの間隔:終了から次の開始までの秒数です。短ければ迷わず再開したことを示します。
- 得点の変化:1回目と2回目以降の得点の差です。上達の余地があるかを見ます。
見たいのは「短い版のほうが再開率と連続回数が高いか」です。ただし連続回数は、短い版ほど同じ時間でラウンド数を稼げるため、そのままでは公平に比べられません。そこで総プレイ時間(ラウンド数×制限時間)も併記します。短い版で連続回数が多くても総プレイ時間が短ければ、「濃い」というより「刻んだだけ」と読めるからです。
比較する条件は、基準を30秒、対照を90秒の2つにします。60秒でも構いませんが、差が出やすいのは3倍離れた条件です。ルールも画面も得点の付け方も同じにして、変えるのは制限時間だけにします。
公式作品の時間設計から読み取れること
時間を設計の中心に置いた例として、アソバースの公式作品を見ておきます。確認済みの仕様の範囲で、数字から読み取れることだけを書きます。
「紙ひこうき郵便」には風の異なる3ルートがあります。
- 海辺、制限時間:36秒、集める手紙:5通
- 丘、制限時間:40秒、集める手紙:8通
- 山、制限時間:44秒、集める手紙:10通
どのルートも最後の6秒は赤い郵便受けへ向かう時間です。この6秒を除くと、手紙を集める時間は30秒、34秒、38秒になります。1通あたりでは6秒、約4.3秒、3.8秒です。時間が少し延びる以上に、通数が増えてテンポが上がっていく作りだと読めます。
「時計じかけの台所」には、時間制限なしの見習いと、1皿28秒・配膳6秒・ミス3回までの本番があります。制限時間を外した練習の場と、制限をかけた本番の場を分けて持たせている設計だと読めます。
この2つから、自作ゲームの実験にも使える着眼点が2つ出てきます。
- 制限時間の中に「終わりの動作」(郵便受けや配膳)を置くかどうか。
- 時間なしの練習を本番の前に置くかどうか。
後者は、実験の追加条件にもできます。ただし各作品が実際にどう感じられるかは、作品を開いて確かめてください。
準備するもの:最小の30秒ゲームと記録用コード
用意するのは、ブラウザで開ける1つのHTMLファイルです。動くターゲットを制限時間内にできるだけ多く押す、最小のゲームを使います。ルールが単純なので、時間の影響だけを見やすくなります。
ログは各ラウンドの「制限時間」「前回終了から次の開始までの間隔」「得点」を、画面下に表示するだけにしました。外部通信はしません。
<!doctype html>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>タップ実験</title>
<button id="go">スタート</button>
<div id="hud"></div>
<button id="target" hidden>●</button>
<pre id="log"></pre>
<script>
const LIMIT = Number(new URLSearchParams(location.search).get("t")) || 30;
const log = [];
let score = 0, endAt = 0, lastEnd = null, round = 0, timer;
const $ = id => document.getElementById(id);
function move() {
const t = $("target");
t.style.position = "absolute";
t.style.left = 5 + Math.random() * 80 + "%";
t.style.top = 20 + Math.random() * 60 + "%";
}
function start() {
const now = performance.now();
round++; score = 0; endAt = now + LIMIT * 1000;
const gap = lastEnd === null ? "-" : Math.round(now - lastEnd) + "ms";
log.push({ round, limit: LIMIT, gap, score: "" });
$("go").hidden = true; $("target").hidden = false; move();
timer = setInterval(tick, 100);
}
function tick() {
const left = endAt - performance.now();
$("hud").textContent = "残り " + Math.max(0, left / 1000).toFixed(1) + " 秒 / " + score + " 点";
if (left <= 0) finish();
}
function finish() {
clearInterval(timer);
lastEnd = performance.now();
log[log.length - 1].score = score;
$("target").hidden = true;
$("go").hidden = false; $("go").textContent = "もう一回";
$("log").textContent = log.map(r =>
`${r.round}回目 制限${r.limit}秒 前回終了から${r.gap} 得点${r.score}`).join("\n");
}
$("go").onclick = start;
$("target").onclick = () => { score++; move(); };
</script>ファイル名は index.html にします。末尾に ?t=30 や ?t=90 を付けて開くと、制限時間を切り替えられます。投稿した作品でクエリ文字列が使えるかは、作品を開いて確かめてください。不安なら、LIMIT の値だけを変えた2つのファイルを用意すれば確実です。
ログは画面を開いている間しか残りません。再読み込みや閉じる操作で消えるので、記録は次の手順で外に書き出します。
手順:時間だけを変えて遊んでもらう
1. 参加者を割り当てる
30秒版と90秒版を、別々の人に遊んでもらうのが基本です。同じ人に両方を遊んでもらうと、先に遊んだほうの慣れや飽きが後に響きます。人数が少なく別々にできない場合は、順番を半数ずつ入れ替えます。
人数は、各条件で6〜8人を最低ラインの目安にします。統計的な結論を出すというより、傾向を見るための数です。
2. 声かけを固定する
全員に同じ文面で伝えます。たとえば「ターゲットを押して得点を稼ぐゲームです。やめたくなったらいつでも画面を閉じて構いません」とだけ言います。「もう一回やってみて」「もう少しやってみましょう」は、再開率を直接ゆがめるので禁止です。
3. 離脱の基準を決める
終了画面を出したまま、60秒たっても「もう一回」を押さなければ離脱とみなします。この秒数は目安で、事前に決めて全員に同じ基準を使うことが大切です。観察者は画面を見すぎず、記録用紙に目を落としておきます。
4. 記録用紙の形を決める
1人につき1行、次の項目を書き込みます。
- 参加者の通し番号と条件(30秒または90秒)
- 連続回数(画面のログの最終行の回数)
- 各ラウンドの得点と、前回終了からの間隔(画面のログを写し取る)
- 離脱の理由として本人が口にしたこと(聞かれなければ空欄)
画面のログは、離脱後に一度だけ撮影するか書き写します。途中で見せたり、再開を促す材料にしたりしないでください。
5. 総プレイ時間を計算する
連続回数に制限時間を掛けて総プレイ時間を出します。30秒版で6回遊べば180秒、90秒版で3回なら270秒です。例は計算の見せ方で、実際の値ではありません。
結果の読み方と誤りやすい点
集計では、条件ごとに再開率、連続回数の分布、再開までの間隔、1回目から2回目への得点変化、総プレイ時間を並べます。読み方の目安は次のとおりです。
- 30秒版の再開率と連続回数が高く、総プレイ時間も同等以上:短さが再挑戦を促した可能性が高いと読めます。
- 30秒版の再開率は高いが、総プレイ時間は短い:再挑戦はしやすいものの、1回の密度や持続は90秒版が上かもしれません。刻み方の問題と見ます。
- 30秒版で1回目から離脱が多い:ルールの理解や手応えが30秒に収まっていない可能性があります。1回目の得点と、離脱時の本人の言葉を見直します。
- 2回目の得点が大きく動く:上達の余地があり、再挑戦の動機になっていると読めます。動かない場合は、やり込む要素が足りないのかもしれません。
- 再開までの間隔が短い:迷わず再開しています。ただし反射的に押しただけの可能性もあるので、再開率とあわせて判断します。
- 条件間に差がない:時間以外の要素(ルールの面白さ、見た目、操作感)が支配的だと読めます。これも立派な結果です。
誤りやすい点は次のとおりです。
- 時間以外も変えてしまう:90秒版で難しくしたり得点式を変えたりすると、何が効いたか分からなくなります。変えるのは時間だけです。
- 知り合いの遠慮:友人は好意で続けてくれることがあります。再開を促さない声かけと、可能なら初対面に近い人を含めることで、ある程度は抑えられます。
- 新奇性:初めて見るゲームは1回目に好奇心で遊ばれます。見るべきは2回目以降の動きです。
- 人数が少ない:1人の極端な行動が平均を動かします。平均より、全員の行を並べて見ます。
- プレイ回数での代用:アソバースのプレイ回数は作品の起動の実測回数で、人数ではありません。同じ端末・作品の30分以内の再起動は重複が除かれます。作品内の「もう一回」が起動として数えられるかは、現在の案内で確認してください。いずれにせよ連続プレイの密度を測る道具ではないので、この実験の記録は自前で取ります。
- 公共スコアの期待:ゲーム内スコアの共通ランキングは提供されていません。ベスト表示をつけるなら、ゲーム内で完結させます。
次の行動
まず上のコードを index.html として保存し、?t=30 と ?t=90 で自分でも遊んでみてください。ルールの面白さ自体が弱いと感じたら、実験の前にそこを直すほうが先です。そのうえで、各条件6〜8人に、同じ声かけで渡してみます。
実験の後は、短い版で再開が多かったか、総プレイ時間はどうだったかを記録用紙で見比べてください。その材料があれば、次に作るゲームの制限時間を自分で決められます。

