没有人看一眼关卡就断定它难不难。难度是测量出来的,每个关卡都必须落在所属那一幕的区间之内——不在区间内的,进不了代码仓库。
4 项指标
游戏自带的求解器会把每个关卡从头解到尾,得出 4 个数字:
- 最少步数。 这就是关卡的
par,从不手工填写。 - 状态空间。 关卡有多少种互不相同的可达状态;谜题真正的规模。
- 死局率。 解法已经丢失的状态所占的比例。
- 解法多样性。 在最少步数 + 2 步以内,存在多少种互不相同的解法。
区间
每一幕在这 4 个数字上各有一个区间:
| 幕 | 最少步数 | 状态空间 | 死局 | 解法多样性 |
|---|---|---|---|---|
| I | 6–14 | < 5,000 | ≤ %0 | ≥ 3 |
| II | 10–22 | < 50,000 | ≤ %10 | ≥ 2 |
| III | 14–30 | < 400,000 | ≤ %20 | ≥ 1 |
这张表就是关卡校验器在 CI 中强制执行的那一张——展示给读者的区间与机器检查的区间,不可能是两回事。
关卡实际落在哪里,可以在幕一页的表格中看到;那些数值同样读取自关卡目录。
区间之外还有门槛
区间说明的是关卡有多大,并不说明它好不好。所以除了区间,校验器还会检查关卡的质量。这些就是门槛:
- 每个关卡至少有 1 个敌人。
- 把敌人当作不存在、画出的最短路径中,至少有 1 条因为敌人而变得致命;并且最短解法至少包含 1 次互动:制伏、一颗石子,或者为避开什么而绕的一段路。无视敌人就能通关的关卡,过不了这道门槛。
- 每个敌人在关卡里都有作用:把它拿掉,最短解法或解法集合就会改变。没有为装饰而摆放的敌人。
- 教学关卡没有这条规则就无法通过:在最短解法 3 步之内,找不到绕开这条规则的解法。
- 一个关卡中单向边至多占 30%。
- 在有商队成员的关卡中,每个成员至少有 1 种解法,没有另一个成员的行动就无法实现。
- 每个关卡的第三颗星都必须可以达成,并且必须提供一条比标准步数长、但有上限的路线。
相邻关卡之间的跳跃也在测量之列:若同一幕中 2 个相邻主线关卡的标准步数增幅超过 2 步,或者求解器状态空间的增长超过 2.5 倍,校验器就会发出警告。这是警告,不是错误——有意的跳跃,附上理由即可接受。
为什么死局率开得很慢
死局,就是在不知不觉中丢掉了解法:在错误的时刻打开了一扇门,把钱币花在了错误的关口上,把一名成员带进了无法救回的角落。
在第 1 幕,这个比率接近于零,因为玩家还在学习规则。到第 3 幕,它达到 20%——但即便在那里,代价也只是 1 次点按,因为撤销没有次数限制。死局不惩罚玩家;它邀请玩家留心。
为什么解法多样性会收窄
第 1 幕要求至少有 3 种互不相同的接近最少步数的解法:新玩家必须能找到自己的路。到第 3 幕,1 种就够了,因为要求的不再是“一条路线”,而是那条路线。
这也解释了为什么大师星在第 3 幕会变得更难。