小さなルームグラフと再現可能なシードを持つオリジナルの洞窟探索ゲームを構築します。架空のランタン洞窟では、あるシードは左の分岐に危険を、右に宝を配置します。別のシードはそれらを交換しますが、出口への安全なルートは常に開かれています。
離散的なルーム移動と1つの体力ポイントから始めます。表示されるシード、移動ログ、安全経路チェックにより、ジャンプや大きなマップを追加する前に、レベルを簡単に再現・診断できます。
繰り返し可能な洞窟から始める

MossmouthのSpelunkyのストアページでは、ランダム生成されるレベル、トラップ、そして宝を特徴とするプラットフォームゲームとして説明されています。変化する洞窟を探検するという大まかなアイデアを用いて、独自の部屋、危険要素、ビジュアルアイデンティティを設計してください。
このプロトタイプでは、3×3の部屋グリッドを使用します。座標は左上をゼロとして(列、行)の形式で記述されます。プレイヤーはSから開始し、出口はEです。2つの分岐する部屋には、危険要素または宝を配置できます。
ルームグラフを構築する
| 行 | 列 0 | 列 1 | 列 2 |
|---|---|---|---|
| 0 | S (0,0) | 開 (1,0) | 壁 (2,0) |
| 1 | 分岐 (0,1) | 開 (1,1) | 分岐 (2,1) |
| 2 | 壁 (0,2) | 開 (1,2) | E (2,2) |

各開いた部屋を、直交する隣接する開いた部屋に接続します。移動は隣接する1つの部屋に入り、1ターン消費します。壁、グリッド外、または斜めへの移動は拒否され、位置とターン数は変更されません。
保証された骨格は S → (1,0) → (1,1) → (1,2) → E です。これら5つの部屋は、どちらのレイアウトでも安全です。(0,1) と (2,1) の分岐部屋は、出口へのルートを壊すことなく、小さな選択を生み出します。
2つのシードを比較する
偶数の整数シードの場合、危険地帯を (0,1) に、宝物を (2,1) に配置します。奇数のシードの場合、それらを交換します。ヘルス 1 と宝物 0 で開始します。危険地帯に入るとヘルスがゼロになり、ランが終了します。宝物に入ると一度だけ収集され、部屋がクリアされます。E に入ると、宝物が収集されていなくてもランが完了します。
| シード | 危険 | 宝物 | Sから下へ移動 |
|---|---|---|---|
| 8 | (0,1) | (2,1) | 1回の移動でランが終了します。 |
| 9 | (2,1) | (0,1) | 宝物を1つ収集。ヘルスは1のままです。 |

どちらのシードでも、バックボーンは4回の移動でEに安全に到達します。シード8の場合、右、下、右の経路で3回の移動で宝物に到達します。さらに1回下へ移動するとEに到達します。同じシードでリセットした場合、同じ部屋のコンテンツ、ヘルス、宝物の数を復元してください。
生成されたルートをチェック
ランを許可する前に、危険な部屋をブロックとして扱い、SからEへの部屋グラフを検索します。パスが存在する場合のみレイアウトを承認します。幅優先探索により、訪問済み部屋を記録し、未訪問の安全な隣接部屋をキューに追加し、Eに到達するかキューが空になるまで処理できます。
検索に失敗した場合、生成エラーを表示し、レイアウトを拒否します。同じシードでリセット後に異なる危険な位置が生成される場合は、シードルールを確認し、リセットが新しいシードを無言で引き出していないことを確認してください。これらは、完成したゲームからの測定値ではなく、作成された部屋モデルに対するチェックです。
AIに完全な洞窟フィクスチャを与える
オリジナルのブラウザ用洞窟ゲーム「Lantern Caves」を作成してください。
3x3のグリッドを使用し、座標は左上を基準としたゼロベースの(列, 行)とします。
スタート地点S=(0,0)、出口E=(2,2)。
開いた部屋: (0,0), (1,0), (1,1), (1,2), (2,2), (0,1), (2,1)。その他のセルはすべて壁です。
直交方向に隣接する開いた部屋を接続します。1回の有効な移動は、隣接する開いた部屋に1つ入り、1ターン消費します。
壁、グリッド外への移動、斜め移動は拒否し、位置やターン数は変更しません。
偶数の整数シードでは、ハザード(0,1)と宝物(2,1)を配置します。奇数の整数シードでは、これらを交換します。
初期ヘルス1、宝物数0。ハザードに入るとヘルスが0になり、ランが終了します。
宝物に入ると一度だけ収集され、その部屋はクリアされます。Eに入ると、宝物の有無に関わらずランが完了します。
プレイ前に、ハザードをブロックとして扱い、SからEへのグラフ探索を行います。安全な経路が存在しないレイアウトは拒否します。
バックボーン(0,0), (1,0), (1,1), (1,2), (2,2)は、シード8と9では安全です。
シード8の場合、一度下へ移動するとランが終了します。シード9の場合、その移動で宝物を収集し、ヘルスは1のままです。
シード8の場合、右、下、右の順に移動すると宝物を収集し、その後下へ移動するとEに到達します。
各移動にIDを割り当てます。同じIDを持つ重複イベントは無視します。
同じシードでリセットすると、部屋の内容、ヘルス、宝物、ターン数、アクションIDが復元されます。
シード、現在の部屋、ターン数、ヘルス、宝物、および読みやすい移動ログを表示します。
オリジナルの洞窟アートと、キーボードで操作可能なコントロールを使用してください。
両方のシードで安全なバックボーンをテストしてください。次に、各シードで最初の下の移動を繰り返し、結果を比較してください。壁への移動と重複したイベントIDを試してください。フィクスチャの適応については、初回ビルドガイドを参照してください。
SEELE AI Game MakerでLantern Cavesを構築し、さらに多くのハザードを追加する前に、グラフとリセットの動作を確認してください。
よくある質問
最初の洞窟レベルはどのくらいのサイズにすべきですか?
完全に検証可能な小さなルームグラフから始めましょう。3×3のグリッドであれば、保証されたルートと2つの分岐ルームの変化を示すのに十分です。リセットとパスチェックが正常に動作するようになったら、同じ検証ルールを維持したままジェネレーターを拡張してください。
なぜシードを表示しておくのですか?
シードを表示しておくと、特定のルーム配置を再現し、問題が発生した際に報告できます。架空のシード8のレイアウトをリセットすると、ハザードと宝が同じルームに復元されるはずです。リプレイがパスした後に、意図的に新しいシードを導入できます。
生成された洞窟がクリア可能かどうかをどのように確認できますか?
開始地点から出口まで、安全に接続された部屋のみを使用して経路を検索します。このチェックでは危険要素をブロックとして扱い、経路が存在しないレイアウトは拒否します。Lantern Cavesのフィクスチャは、両方の例のシードに対して5室のバックボーンを安全に保ちます。
無効な移動に対して何を行うべきですか?
移動が壁、グリッドの端、または対角線上の部屋をターゲットとする場合、プレイヤーの位置とターン数は変更しません。入力が拒否された理由を説明します。これにより、移動エラーと危険な部屋への有効な移動を区別できます。


