随笔 · 2026-07-15

把运气逐出设计——从扫雷到 guessing-free 逻辑解谜

三十年,如何把终盘的50/50变成演绎的快感

前言

只剩两格,一颗地雷。周围的数字全部用完,盘面上再没有能告诉你该开哪一格的线索。扫雷终盘常常出现的这一刻,游戏不再是逻辑解谜,而变成了抛硬币。十五分钟的推理堆叠到最后,成败却由运气决定。我认为这种"被迫的猜测",是逻辑解谜设计中扎得最深的一处缺陷。

本文追溯用三十年时间逐步剔除这一缺陷的系谱。起点是1990年的扫雷。途经Hexcells与Tametsi。终点则是从制度上禁止赌博成功本身的14 Minesweeper Variants。这种被称为guessing-free、或no-guess的设计思想,绝非单纯的体贴。它是把难度的来源从运气转移到演绎的一次结构性选择。

扫雷(1990)——运气与逻辑同居的原型

扫雷的原型,是Curt Johnson为OS/2编写的游戏,后由同事Robert Donner移植到Windows。它收录于1990年10月的Windows Entertainment Pack,1992年成为Windows 3.1的标配。此后,从办公室午休到实验室,它大概成了史上被最多人玩过的逻辑解谜。规则一句话就能写完:数字表示相邻八格中潜藏的地雷数。信息通道只有这一条。

单一通道与随机布雷的组合,在结构上必然产生逻辑无法确定的局面——角落残留的小区域,两个对称排列的候选格。高手会计算概率、选择"更不容易死"的一边,但那是期望值上的赌博,不是演绎。长长的一串推理在一次点击中化为乌有,而这次落败并非玩家的责任。这种糟糕的体验,正是后来设计者们的出发点。

讽刺的是,扫雷本身的数字推理,在计算复杂度上原本就足够深。Richard Kaye在2000年的论文《Minesweeper is NP-complete》中证明,判定盘面的整合性属于NP完全问题。难度的源头从一开始就很丰富。问题在于,运气这种杂质,从最初就混进了这片富矿。

Hexcells——扩充线索词汇,消除猜测

Matthew Brown的Hexcells三部曲(2014年的Hexcells Infinite完结),是最早正面提出清除这种杂质的商业作品之一。比六边形网格这种外观变化更重要的,是线索词汇的增加:数字被大括号括起来表示对应格子相连,用短横夹住则表示不相连。列的外侧,还放着该列全体的合计数。

用设计语言来说,Hexcells在扫雷"数字"这唯一一种词性的语法上,新增了位置关系与全局分布这两种新词性。信息通道一旦变成多线,就能让每个局面至少存在一条演绎能够走通。玩家的视线也随之改变,从局部的数字凑对,被提升到横跨整个盘面、寻找线索交点的观察。手工制作的全部关卡,都以"无需猜测即可解开"为前提组建。

三部曲的完结篇Hexcells Infinite,配备了从随机种子生成盘面的无限模式,同时也致力于让生成的盘面同样只靠逻辑就能解开。如何让手工的严谨与生成的产量两者兼得——这个如今在生成式内容语境下被热议的问题,早在2014年就已被这部作品小小地回答过一次,值得记上一笔。

Tametsi——160关手工关卡展现的纯化

2017年,Grip Top Games的Tametsi把这一思想纯化到了极致。正方形、八边形,以及错综复杂的镶嵌图案。地雷按颜色区分,各颜色的总数成为新的线索维度。收录的160关,无一例外都保证无需猜测即可解开。装饰几乎没有,画面上只剩盘面与数字。这是一种减法设计。

玩Tametsi会注意到,guessing-free的保证从根本上改变了玩家的心理。卡关不再意味着"也许无解",而是"只是还没找到"。某处一定存在可以确定的一手——正是这份信任,才能让人盯着盘面看十分钟、二十分钟。一关的推进就像一篇长长的证明,最后一格打开的瞬间,证明也随之闭合。剔除运气并没有剔除快感,而是让快感变得更纯粹。

14 Minesweeper Variants——用规则差分重新发明演绎

2022年的14 Minesweeper Variants,是这一系谱的另一个终点。开发方名单中,有《Understand》的Artless Games。地雷不纵横相邻、每行每列恰好两颗——只需替换一条变体规则,所需的推理形式就会截然不同。它不靠扩大盘面或增加地雷,而是靠规则差分制造深度。作为不依赖组合爆炸的难度设计范例,这样的教科书级案例并不多见。

最出彩的地方,是存在这样一种模式:一旦打开逻辑上尚未确定的格子,地雷布局本身就会被重新排布。瞎猜偶然蒙对这种虚假的奖励,被机制彻底堵死。Hexcells让猜测变得没有必要,Tametsi则保证了它的不必要,而14 Minesweeper Variants,则让猜测本身变得毫无意义。走到这一步,guessing-free已经不再是喜好问题,而是一种信条。

提示功能的实现也一以贯之。对卡关的玩家,它不是直接给出答案,而是指出该看哪一组线索。用我在提示功能的设计中所用的分类来说,这属于交出观察焦点、而非交出答案的类型。既然已经禁止猜测,那么卡关的化解也理应在演绎的内部完成。所谓设计上的首尾一贯,指的大概就是这种事。

猜测从何而来——信息、责任与代价

把系谱并排放在一起,就能看清被迫猜测究竟从何而来。其本质是信息通道的不足。当确定所需的线索供给跟不上必须打开的格子数量时,玩家就会被逼入赌博。所谓保证guessing-free,说到底就是从第一手到最后一手、在每一个局面都铺满线索之网,让至少一条确定的手始终存在。

这与我在可读的失败中讨论过的问题正好成对。那篇处理的,是让卡关变得可被玩家读懂的设计。被迫的猜测,正是它最糟糕的反面——不仅是无法读懂的失败,玩家一方还完全不承担责任。当败因无法归结到自己的推理时,人就无法从中学习,只留下不讲道理的观感。

当然,这是有代价的。保证所有局面都可演绎,会对盘面的组合空间施加强约束。手工制作的话,每一关的验证成本会陡增;生成式的话,则必须实现可解性检测器。guessing-free并不是免费的。正因如此,我认为这段靠个人开发者的执念、花了三十年才把它推上标准位置的系谱,具有作为技术史的价值。

结语

扫雷曾是丰富演绎与不讲道理的运气同居的原型。Hexcells扩充线索词汇消除了运气,Tametsi用160关手工关卡证明了其纯度,14 Minesweeper Variants则从制度上禁止了赌博的成功。三十年的系谱,可以读作一部把难度的来源从运气悄悄转移到演绎的修复史。

如果我接下来要做一款逻辑解谜,最先决定的会是"是否保证零猜测"。若保证,就从制作流程的最初起,就嵌入不让确定手断供的验证系统。若不保证,就明确标出赌博开始的那一刻——从这里起,是运气了。最糟糕的做法,是先让玩家相信可以靠演绎解开,再悄悄混入赌博。也想给读者留一个问题:你上一次觉得"这也太不讲道理了"的解谜,真的是难吗?还是只是被迫赌了一把?

Reactions (no login)

Anonymous • one of each per visitor per day