マガジン

30秒で終わるゲームを作る:短さが遊びを濃くするか

遊びをつくる

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

増えすぎた部品を脇へよけ、一周できる小さなゲームのコースを完成させる手元。
記事のテーマをもとに制作したAI生成の写真風イメージ。

自作のゲームを友人に渡し、1回目が終わった直後の数秒を見ている場面を考えてみます。画面を閉じるのか、そのまま「もう一回」を押すのか。この数秒に、そのゲームがもう一度遊ばれるかどうかがほぼ表れます。 「ゲームは短いほど繰り返し遊ばれる」と言われることがあります。1回の負担が小さいので再挑戦しやすい、という理屈です。一方で、30秒ではルールを覚える前に終わってしまい、何も残らないという反論も成り立ちます。どちらが当たるかは、遊びの中身と時間の組み合わせで変わるはずです。 この記事は結論を述べません。同じルールで制限時間だけを変えたゲームを2本用意し、遊ぶ人の「もう一回」を数えるための実験設計書です。準備するもの、手順、記録の取り方、結果の読み方、誤りやすい点の順に進めます。

この記事の目次
  1. 「濃くなる」を測れる言葉にする
  2. 公式作品の時間設計から読み取れること
  3. 準備するもの:最小の30秒ゲームと記録用コード
  4. 手順:時間だけを変えて遊んでもらう
  5. 結果の読み方と誤りやすい点
  6. 次の行動

「濃くなる」を測れる言葉にする

「遊びが濃い」は感想のままでは比べられません。次の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つ出てきます。

  1. 制限時間の中に「終わりの動作」(郵便受けや配膳)を置くかどうか。
  2. 時間なしの練習を本番の前に置くかどうか。

後者は、実験の追加条件にもできます。ただし各作品が実際にどう感じられるかは、作品を開いて確かめてください。

準備するもの:最小の30秒ゲームと記録用コード

用意するのは、ブラウザで開ける1つのHTMLファイルです。動くターゲットを制限時間内にできるだけ多く押す、最小のゲームを使います。ルールが単純なので、時間の影響だけを見やすくなります。

ログは各ラウンドの「制限時間」「前回終了から次の開始までの間隔」「得点」を、画面下に表示するだけにしました。外部通信はしません。

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人に、同じ声かけで渡してみます。

実験の後は、短い版で再開が多かったか、総プレイ時間はどうだったかを記録用紙で見比べてください。その材料があれば、次に作るゲームの制限時間を自分で決められます。