使用小型房间图和可重复的种子构建一款原创洞穴探索游戏。在虚构的“灯笼洞穴”中,一个种子将危险放置在左侧分支,宝藏放置在右侧。另一个种子则互换两者,同时通往出口的安全路线保持畅通。
从离散的房间移动和一点生命值开始。可见的种子、移动日志和安全路径检查使关卡在添加跳跃或更大地图之前易于重放和诊断。
从一个可重复生成的洞穴开始

Mossmouth 的 Spelunky 商店页面 描述了一款具有随机关卡、陷阱和宝藏的平台游戏。利用探索变化洞穴这一宽泛概念,设计你自己的房间、危险和视觉风格。
对于这个原型,使用 3 乘 3 的房间网格。坐标以 (列, 行) 表示,从左上角的零开始。玩家从 S 开始,出口是 E,两个分支房间可以放置危险或宝藏。
构建房间图
| 行 | 列 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) |

将每个开放房间与其正交相邻的开放房间连接起来。移动进入一个相邻房间并消耗一个回合。拒绝向墙壁、网格外或对角线方向的移动,保持位置和回合数不变。
保证的主干路径是 S → (1,0) → (1,1) → (1,2) → E。这五个房间在两种布局中均保持安全。(0,1) 和 (2,1) 处的分支房间在不破坏通往出口路线的情况下,创造了一个小小的选择。
比较两个种子
对于偶数整数种子,将危险物放置在 (0,1),宝藏放置在 (2,1)。对于奇数种子,交换它们。初始生命值为 1,宝藏数量为 0。进入危险物会将生命值降为零并结束本次运行。进入宝藏会收集一次并清空该房间。无论是否收集了宝藏,进入 E 都会完成本次运行。
| 种子 | 危险 | 宝藏 | 从 S 向下移动 |
|---|---|---|---|
| 8 | (0,1) | (2,1) | 移动一次后结束回合。 |
| 9 | (2,1) | (0,1) | 收集一个宝藏;生命值保持为 1。 |

对于任意种子,主干路径都能在四步内安全到达 E。使用种子 8 时,向右、向下、向右的路径可在三步内到达宝藏。再向下移动一步即可到达 E。在相同种子下重置时,恢复相同的房间内容、生命值和宝藏数量。
检查生成的路线
在允许回合开始前,从 S 到 E 搜索房间图,并将危险房间视为被阻挡。仅当存在路径时才接受该布局。广度优先搜索可以记录已访问的房间,并将每个未访问的安全邻居加入队列,直到到达 E 或队列耗尽。
如果搜索失败,显示生成错误并拒绝该布局。如果相同种子在重置后产生不同的危险位置,请检查种子规则,并确保重置不会静默地生成新种子。这些是针对已创建房间模型的检查,而非来自已完成游戏的测量数据。
向 AI 提供完整的洞穴测试用例
构建一款名为 Lantern Caves 的原创浏览器洞穴游戏。
使用 3x3 网格,坐标为 (列, 行),从左上角开始,索引从 0 开始。
起点 S=(0,0);终点 E=(2,2)。
开放房间:(0,0), (1,0), (1,1), (1,2), (2,2), (0,1), (2,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 游戏制作器中构建 Lantern Caves,并在添加更多危险之前验证图和重置行为。
常见问题
第一个洞穴关卡应该有多大?
从一个可以完全检查的小型房间图开始。一个三乘三的网格就足以展示一条保证存在的路径和两个变化的分支房间。一旦重置和路径检查功能正常工作,就可以扩展生成器,同时保留相同的验证规则。
为什么要保持种子可见?
可见的种子让你能够重现特定的房间布局,并在出现问题时进行报告。重置虚构种子 8 的布局应能将危险和宝藏恢复到相同的房间。在重放通过后,可以有意识地引入新的种子。
如何检查生成的洞穴是否可解?
仅使用安全的连通房间,从起点搜索到出口。在此检查中,将危险视为阻挡,如果不存在路径则拒绝该布局。Lantern Caves 测试用例为两个示例种子都保留了一个由五个房间组成的安全主干。
无效移动应该做什么?
当移动目标指向墙壁、网格边缘或对角房间时,保持玩家的位置和回合数不变。解释输入被拒绝的原因。这使得移动错误可以与进入危险房间的有效移动区分开来。


