「難易度選択」を作り込む:何を変えるかを一つに絞る
遊びをつくる執筆にClaudeを使用しています。

「やさしい」「ふつう」「むずかしい」の3段階を付けることにして、むずかしいでは敵の体力を1.5倍にし、動きを1.2倍速くし、制限時間を短くし、アイテムの出現も減らす場面を考えてみます。数字は一通り調整できても、遊ぶ人に「むずかしいは何が違うのですか」と聞かれたとき、作り手自身が一言で答えられません。 難易度選択でつまずく原因の多くは、調整のしやすさではなく、変える軸が多すぎることにあります。段階ごとに「何が変わるのか」を一つに絞ると、作る側は検証が楽になり、遊ぶ側は自分に合う段階を選びやすくなります。この記事では「速さ」「長さ」「選択肢」のうち、自分のゲームでどれを段階の軸にするかを決め、最小のコードで実装し、自分で試遊して確かめるまでを手順にします。結果の数字は載せていません。記録の取り方と読み方を示すので、手元で答えを出してください。
三つの軸:速さ・長さ・選択肢
最初に、難易度の軸を三つに分けます。
- 速さ:反応や判断に使える時間です。制限時間、的が出ている秒数、お手本の再生テンポなどが当たります。
- 長さ:続けて正しくこなす量です。ラウンド数、覚える順番の長さ、必要な手数などです。
- 選択肢:同時に見分けたり選んだりする対象の数です。盤面の大きさ、ボタンの数、混ざる種類の数などです。
三つは、プレイヤーがつらく感じる場所がそれぞれ違います。速さを上げると焦りが増え、長さを伸ばすと集中の持続や記憶の負担が増え、選択肢を増やすと迷いと見落としが増えます。
軸を決めるときは、自分のゲームの「面白い瞬間」がどこにあるかを先に考えてみます。素早く反応して決まった瞬間が面白いなら速さ、積み上げて到達する達成感なら長さ、見分けて選ぶ手応えなら選択肢が候補になります。面白い瞬間を壊さない軸を選ぶのが基本です。
公式作品の設計から軸を読む
アソバースの公式作品の段階づけを、確認済みの範囲で「設計から読み取れること」として整理します。ここにない細部は、作品を開いて確かめてください。
- こだまの森、用意されている段階:6・8・10ラウンドの3コース、設計から読み取れること:段階の違いがラウンド数、つまり長さとして示されています。1ラウンドの中身がコースで変わるかは作品を開いて確かめます
- かたちのあいだ、用意されている段階:3×3の入門と4×4の2段階、設計から読み取れること:盤面の大きさが段階です。動かせる対象が増えるので、選択肢の軸と読めます
- 時計じかけの台所、用意されている段階:時間制限なしの見習いと、1皿28秒・配膳6秒・ミス3回までの本番、設計から読み取れること:制限時間とミスの許容が切り替わります。見習いは速さを外して手順の習得に専念できる形です
- 紙ひこうき郵便、用意されている段階:海辺36秒で5通、丘40秒で8通、山44秒で10通。風も3ルートで異なる、設計から読み取れること:時間、通数、風が同時に違います。段階名より、ルートごとの個性として読めます
- 雨音のピアノ、用意されている段階:記憶ゲームは3音から8音へ育ち、お手本の速さを選べる、設計から読み取れること:長さ(音数)は進行で伸び、速さは別の選択として分かれています
この表から二つのことが読み取れます。
一つ目は、軸が一つに見える作品が多いことです。こだまの森は長さ、かたちのあいだは盤面の大きさという具合に、段階名を聞いただけで違いが想像できます。
二つ目は、複数の軸が動く作品は、段階を難易度ではなく別のコースとして見せているように読めることです。紙ひこうき郵便は「易しい・難しい」ではなくルート名で選ぶ形です。軸が複数あっても、プレイヤーに説明できる形になっていれば成り立ちます。
潮目のオセロや灯りのチェスのように、相手の強さを3段階から選ぶ作品もあります。この場合に変わるのは相手の判断の質で、速さ・長さ・選択肢のどれにも当てはまりません。ただ、段階名でプレイヤーが期待する違いを一つにそろえる考え方は同じです。
手順:軸を一つに絞って作る
ここからは、自分のゲームに難易度選択を入れる手順です。
- 面白い瞬間を一文で書きます。 「光った場所を素早く押せた瞬間」のように、行動と手応えを書きます。
- 軸を一つ選びます。 速さ・長さ・選択肢のうち、一文の核を壊さないものにします。迷ったら、遊ぶ人が「やさしい」と聞いて想像するものに最も近い軸を選びます。
- 他の二軸を定数に固定します。 コードの上部に名前を付けて並べ、段階では絶対に触らない約束にします。
- 段階を3つ用意し、変える値を一つの数にします。 速さなら間隔、長さなら回数、選択肢なら個数です。
- 段階名を、変わる軸が分かる言葉にします。 「むずかしい」だけでなく、「はやい」「ながい」「ますが多い」など、違いが見える名前にすると選びやすくなります。
- 開始前に一行で違いを表示します。 「的が出ている時間が短くなります」のような説明です。
速さを軸にした最小例を示します。20回光る4つのボタンのうち、光った一つを押すゲームです。ラウンド数(長さ)とボタン数(選択肢)は定数で、段階で変わるのは光る間隔だけです。
<!doctype html>
<html lang="ja"><meta charset="utf-8">
<body>
<select id="lv">
<option value="900">ゆっくり</option>
<option value="650" selected>ふつう</option>
<option value="450">はやい</option>
</select>
<button id="go">はじめる</button>
<p>得点: <span id="sc">0</span> / 残り: <span id="rest">0</span></p>
<div id="field" style="display:flex;gap:8px"></div>
<script>
const ROUNDS = 20; // 長さ:固定
const CHOICES = 4; // 選択肢:固定
let score = 0, remain = 0, timer = null, target = -1, hit = false;
for (let i = 0; i < CHOICES; i++) {
const b = document.createElement("button");
b.textContent = "●";
b.style.cssText = "width:64px;height:64px;opacity:.3";
b.onclick = () => {
if (i === target && !hit) { hit = true; score++; sc.textContent = score; }
};
field.append(b);
}
function paint() {
[...field.children].forEach((b, i) => b.style.opacity = i === target ? 1 : .3);
}
function show() {
if (remain <= 0) { clearInterval(timer); target = -1; paint(); rest.textContent = "終了"; return; }
remain--; hit = false;
target = Math.floor(Math.random() * CHOICES);
paint(); rest.textContent = remain;
}
go.onclick = () => {
clearInterval(timer);
score = 0; sc.textContent = 0; remain = ROUNDS;
show();
timer = setInterval(show, Number(lv.value)); // 段階で変わるのはここだけ
};
</script>
</body></html>軸を長さに変えるなら、setInterval の間隔を固定して ROUNDS を選択値にします。選択肢なら CHOICES を選択値にして、ボタンを作り直す処理を加えます。どの場合も、選択値が入るのは一か所だけというのが約束です。
試遊で確かめる:段階の差が出ているか
段階が本当に「一つの軸の差」として働いているかは、作り手の感覚ではなく記録で確かめます。以下は自分で行う設計です。結果は手元で出してください。
問い: 3つの段階で、同じ人の成績に順序のある差が出ているか。
準備:
- 自分以外の試遊者を2〜3人用意します。難しければ自分で行い、その場合は慣れの影響が大きい点に注意します。
- 記録用の紙か表計算を用意します。
手順:
- 試遊者ごとに、段階を遊ぶ順番を変えます。たとえば「ゆっくり→ふつう→はやい」「はやい→ゆっくり→ふつう」のように入れ替えます。慣れの影響が一方向に偏らないようにするためです。
- 各段階を1人につき2〜3回遊んでもらいます。
- 1プレイごとに、段階名、得点(取り逃し数でもよい)、途中でやめたかどうかを書きます。
- 終わったら「どの段階が一番楽しかったか」「なぜ難しいと感じたか」を一言ずつ聞いて書き留めます。
結果の読み方:
- やさしい側とはやい側でほとんど成績が変わらない: 軸の値の幅が小さすぎます。値の差を広げます。
- 全員が最上段階で大きく崩れ、途中でやめる人が出る: 差が急すぎます。中間の値を調整します。
- 成績の差はあるのに、理由の一言がばらばら: 他の要因が効いています。固定したはずの定数が実質的に変わっていないか、操作のしづらさなど段階と無関係な難しさがないかを見直します。
- 理由の一言が段階の軸と一致している(「速くて追えなかった」など): 軸が一つとして伝わっています。
成績の差だけでなく、理由の一言が軸と一致しているかが重要な判断材料です。数字が整っていても理由がばらけているなら、段階はまだ一つの軸になっていません。
起こりやすい失敗
- 段階名が軸と関係ない。 「むずかしい」のままだと、遊ぶ人は何が変わるか想像できません。開始前の一行説明と段階名で補います。
- 固定したつもりの軸が動いている。 速さを上げたせいで、実際には一度に判断すべき情報量が増えていることがあります。定数が本当に同じ負荷になっているか、試遊の理由の一言で確かめます。
- 最初の段階が易しすぎて学ぶ要素がない。 時計じかけの台所の見習いのように、制限を外して手順を覚えさせる役割を持たせると、下の段階にも意味が出ます。作品を開いて、見習いで何を覚えられるかを確かめてみてください。
- 段階を増やしすぎる。 3つで差が出ない軸は、5つに増やしても差は出ません。まず3つで成立させます。
- 記録が残らず、調整が感覚頼みになる。 試遊の表は簡単なもので構わないので、毎回同じ形式で残します。
次の行動
自分のゲームの「面白い瞬間」を一文で書き、速さ・長さ・選択肢のどれがそれを壊さないかを決めてください。そのうえで上のコードを手元で動かし、ROUNDS と CHOICES を固定したまま、間隔の3つの値を試遊で調整してみます。完成したら、アソバースの投稿画面から作品として公開し、遊んでもらった感想をレビューなどで確かめる流れに進めます。

