ステージの順番を自動で並べられるか:難しさを数で表す手順
遊びをつくる執筆にClaudeを使用しています。

8つのステージを作り終えたものの、どの順で並べればよいか決められない場面を考えてみます。作った順に並べると、途中に急に重いステージが挟まります。かといって勘で並べ替えても、遊んだ人が同じ順だと感じてくれる保証はありません。 この記事では「ステージの難しさを、要素の数や手数から見積もって並べ替えられるか」という問いを扱います。数えられるものを3つに絞り、短いコードで順位をつけ、実際に遊んでもらった記録と突き合わせる手順までを示します。見積もりの数字は、遊んだ人の体感を予測するための仮説です。当たったかどうかは、読者自身の記録で確かめることになります。
難しさとして数えられるもの
ステージの難しさは、次の3つに分けると数えやすくなります。
- 要素数:盤面に置かれる駒、鏡、材料などの数です。増えるほど、プレイヤーが同時に頭に入れるものが増えます。
- 最短手数:クリアに最低限必要な操作の回数です。長い手順ほど、途中で選択を誤る機会が増えます。
- 分岐数:各場面で選べる操作の数の目安です。最短手数が同じでも、選択肢が多いほど正解を探す手間が増えます。
この3つを掛け合わせる発想が、探索空間の見積もりです。各場面で選べる操作が平均 b 通り、最短手数が d なら、総当たりで考えたときの組み合わせはおよそ b の d 乗通りです。数が大きくなりすぎるので、桁数に当たる d × log10(b) を使うと、ステージ同士を比べやすくなります。
ただし、この数字は「機械が総当たりするときの重さ」に近いものです。人間はそのように遊びません。色や形から正解を直感で絞れるステージは、桁数が大きくても易しく感じられます。そのため、見積もりはあくまで出発点であり、後で実測と照らして直す前提で使います。
公式作品の設計から読み取れること
アソバースの公式作品には、難しさを数で扱う手がかりが設計に表れているものがあります。確認済みの数字と、そこから読み取れることを整理します。作品内部の具体的な数値や配置は、ここでは扱いません。
- 紙ひこうき郵便、確認できる数:海辺は36秒で5通、丘は40秒で8通、山は44秒で10通。最後の6秒は郵便受けへ、数から読み取れること:1通あたりの持ち時間は、全体を割ると7.2秒、5.0秒、4.4秒です。最後の6秒を除くと6.0秒、4.25秒、3.8秒です。ルートが進むほど持ち時間が短くなる並びです、作品を開いて確かめること:風の違いが体感にどう効くか。数に表れない部分です
- 月夜の配達、確認できる数:小包3つ、バッグ2枠、燃料は1区間で1、3つの夜、数から読み取れること:バッグが2枠なので、3つを一度には運べません。燃料が有限なので、区間数に上限がかかります、作品を開いて確かめること:夜ごとの最少区間数。作品側が記録しています
- プリズムの道、確認できる数:8ステージ、鏡は/と\の切り替え、最少回転の記録、数から読み取れること:切り替えが2通りの鏡がn枚なら、向きの組み合わせは最大で2のn乗です。最少回転が記録されるので、手数を指標にできます、作品を開いて確かめること:各ステージの鏡の数と色ガラスの効き方
- かたちのあいだ、確認できる数:3×3の入門と4×4の2段階。ヒントは最短とは限らない、数から読み取れること:標準的なスライドパズルなら、到達できる配置は3×3で181,440通、4×4で10,461,394,944,000通です、作品を開いて確かめること:4×4の2段階の違いが何で決まるか
- こだまの森、確認できる数:6・8・10ラウンドの3コース。聴き直しは15点減、間違いは30点減で3回まで、数から読み取れること:間違いの減点は聴き直しの2倍です。長いコースほど、取りこぼしの機会が増える構造です、作品を開いて確かめること:覚える列がラウンドごとにどう伸びるか
表から言えるのは、これらの作品が「数えられる量」を段階の差として使っていると読めることです。かたちのあいだでは、盤の大きさを3×3から4×4へ上げる設計が、配置の数の桁を大きく変えます。月夜の配達では、バッグの枠と燃料という2つの上限が、手順の自由度を絞ります。どの要素を、どの順で、どれだけ変えているかは、作品を開いて確かめてください。
注意したいのは、かたちのあいだのヒントが「次の一手のヒント(最短とは限らない)」と明記されている点です。最短手数を厳密に求めることと、遊びを助けることは別の仕事だと読めます。自作ゲームでも、見積もりに使う最短手数を厳密に出せない場合は、手で解いた手数や目安でも並べ替えには足ります。
最小の見積もり式をコードにする
ここまでの考え方を、そのままコードにします。ステージごとに要素数、最短手数、分岐数を手入力し、スコアの低い順に並べるだけの最小構成です。データは説明用の架空の値で、実在の作品とは関係ありません。要素数の重み 0.3 も仮の値です。
<pre id="out"></pre>
<script>
// 説明用の架空データ(手入力)
const stages = [
{ name: "A", pieces: 3, minMoves: 4, branching: 3 },
{ name: "B", pieces: 5, minMoves: 9, branching: 2 },
{ name: "C", pieces: 4, minMoves: 12, branching: 3 },
{ name: "D", pieces: 6, minMoves: 7, branching: 4 }
];
// 探索空間の桁数 + 要素数の補正(0.3は仮の重み)
function score(s) {
const space = s.minMoves * Math.log10(s.branching);
return space + 0.3 * s.pieces;
}
const sorted = stages
.map(s => ({ ...s, score: score(s) }))
.sort((a, b) => a.score - b.score);
document.getElementById("out").textContent = sorted
.map((s, i) => `${i + 1}. ${s.name} スコア ${s.score.toFixed(2)}`)
.join("\n");
</script>保存して .html として開くと、スコアの低い順に並んだ一覧が表示されます。自分のステージのデータに書き換えれば、そのまま「仮の並び順」になります。
使い方のコツは、重みを変えて順位がどう動くかを見ることです。たとえば要素数の重みを 0.3 から 1.0 に上げても順位がほとんど変わらないなら、そのデータでは手数と分岐数が順位を決めています。逆に少しの重み変更で順位が入れ替わるステージは、見積もりが不安定なので、実測で優先的に確かめる対象になります。
見積もりと体感のずれを確かめる手順
並び順の良し悪しは、遊んだ人の記録で判断します。結果を想像で決めず、次の手順で自分のデータを集めてください。
- ステージ単位で記録を取れるようにします。 記録する項目は、クリアまでの時間、やり直しの回数、ヒントを使った回数、途中でやめたかどうかの4つです。
- 遊んでもらう人を決めます。 人数に決まりはありません。同じ人に全ステージを遊んでもらうと比べやすくなりますが、順番に慣れる影響が出ます。人ごとにステージの順を入れ替えて遊んでもらうと、その影響を薄められます。
- ステージごとの順位を作ります。 やり直し回数の平均など、使う指標を1つ決めて、易しい順に並べます。
- 見積もりの順位と並べて、差を見ます。 見積もり順位と実測順位が2つ以上ずれているステージに印をつけます。
記録の置き場所には注意が必要です。アソバースでは、プレイ回数は作品単位の起動回数で、ステージ単位の集計は確認済みの機能にありません。ゲーム内スコアの共通ランキングも未提供です。ステージ別の記録は、自作ゲームの中で取る必要があります。ログイン中のクラウドセーブは、作品ごとにJSONで128KiBまで使えますが、それはプレイヤー個別の保存です。全員分の集計を行う仕組みが使えるかどうかは、現在の案内で確認してください。確実なのは、友人に遊んでもらって手元で記録する方法です。
判断の目安も決めておきます。
- 見積もりと実測の順位が大きく外れたステージは、数えていない要素が効いています。色の見分けにくさ、画面の見づらさ、操作の癖などです。
- 実測で「やめた」が集中するステージは、難しさの量ではなく、遊び方が伝わっていない可能性があります。数を直す前に、導入を見直します。
- 順位が概ね合っているなら、次の新ステージは見積もりスコアで置き場所を決めて構いません。
起こりやすい誤り
最短手数をそのまま難しさと見なす。 最短手数が長くても、一手ごとに正解が明らかなら易しく感じられます。分岐数や、間違いに気づける手がかりの有無を別に見てください。
要素を足すほど難しくなると決めつける。 要素が増えても、役割が重なっていれば判断の量は増えません。数えるのは、プレイヤーが別々に判断しなければならない要素です。
1人の結果で重みを決める。 得意不得意の差が大きいので、1人の記録で重みを調整すると、その人専用の並びになります。
難しさだけで並べる。 難しさが単調に上がり続けると、遊び続ける気力が持たない場合があります。いったん易しいステージを挟むかどうかは、数ではなく設計の判断です。紙ひこうき郵便の3ルートが、1通あたりの持ち時間では短くなる並びでも、実際の体感が同じ順かどうかは作品を開いて確かめるしかありません。
次の行動
まず自作のステージ(または公式作品の1つ)について、要素数、最短手数、分岐数を数え、上のコードに入れて仮の並び順を作ってください。次に、2〜3人に全ステージを遊んでもらい、やり直し回数を記録して順位を比べます。ずれたステージが見つかったら、そこに数え漏れた要素があると考えて、重みか項目を直してください。

