卷 II · 玩CH 06深度 06/24

有意义的选择,和那些假选择

「游戏是一系列有趣的选择。」这句话被引用了三十年,以至于没人再追问后半句:什么样的选择才算有趣?这一章不谈玄学 —— 假选择是可以被算出来的,本章有一个真的在跑支配策略判定的检测器。你会发现你以为的「三种武器让玩家自由搭配」,在数学上其实只有一种武器。

有意义的选择支配策略三种假选择平衡≠相等

那句话的完整版本

原话来自席德·梅尔(《文明》的作者):「一个(好)游戏是一系列有趣的选择。」

问题在于「有趣」这个词又把我们扔回了玄学。所以我们换个方向:不去定义什么是有趣的选择,而是精确地定义什么是无趣的选择 —— 后者是可以判定的,而把所有无趣的排除掉,剩下的就是你要的。

◆ 三种假选择
  1. 有支配策略:某个选项在所有情况下都不比别的差 → 其他选项等于不存在
  2. 无差别:选哪个结果都一样 → 这不是选择,是仪式
  3. 无信息:玩家完全无法预判后果 → 这不是选择,是抽奖

三种里第一种最常见、最隐蔽,也最能被数学抓出来。

假选择之一:支配策略

先给一个精确的定义,因为它真的能拿来算:

选项 A 支配选项 B,当且仅当:在每一种情境下 A 都不比 B 差,并且至少存在一种情境 A 严格更好。

如果 A 支配 B,那么任何一个理性玩家都不该选 B,在任何时候。B 就是废设计 —— 它占着 UI 的位置、占着你的开发时间、还让玩家觉得被耍了。

下面这个检测器是真的在跑上面那个判定。三组数据换着看:

第一组:那个所有人都犯过的错

「铁剑、钢剑、秘银剑」是一个教科书级的假选择:三把剑只是同一把剑的三个数值档位。

你可能会说:这不算选择啊,这是成长。没错 —— 而这正是问题所在。它的问题不在于存在,在于它被放进了一个「选择」的界面里

当玩家在商店里看到三把剑并排摆着,他会以为这是一个决策。他会认真比较,然后发现只是买得起哪把的问题。你消耗了他的注意力,却没有给他任何东西。

◆ 修复支配策略的三种方法

发现选项 A 支配 B 之后,你有三条路:

  1. 删掉 B。最诚实,也通常最好。如果一个选项永远不该被选,它就不该存在。
  2. 给 A 加一个代价,让它在某些情境下变差。秘银剑最强但很重(影响移速)、很贵(挤占其他资源)、或者只对某类敌人有效。这是把假选择变真选择的标准手法。
  3. 把它们从「选择」改成「进度」。如果你就是想要成长感,那就别把三把剑摆在一起让玩家挑 —— 让它们按顺序解锁,一次只有一把。这样玩家知道这是进度,不会浪费思考。

第 3 条常被忽略:很多假选择的正确修法不是让它变真,是坦白它不是选择。

第二组:真选择长什么样

「剑 / 弓 / 炸弹」在检测器里没有任何一项被支配。原因很清楚:近战最强但打不到远处,远程无敌但贴脸没用,炸弹清群王者但打单体很差。

这就形成了一个石头剪刀布式的结构:没有绝对最强,只有针对情境的最强。

而这带来了一个非常重要的副产品:玩家开始预判。

他会想:「下一个房间可能是一群小怪,我带炸弹吧。」这一刻,他不是在选装备 —— 他是在对未来下注。而下注是有趣的,因为它可能对也可能错,而且是他自己的判断。

◆ 有意义的选择的三个必要条件

把上面的例子抽象出来:

  1. 信息:玩家能大致预判每个选项的后果。(没有 → 变成抽奖)
  2. 代价:选了 A 就意味着放弃 B,不能全都要。(没有 → 变成收集)
  3. 不确定:他不能百分之百确定哪个是对的。(没有 → 变成计算题)

三条要同时成立,而且第 1 条和第 3 条之间有张力 —— 玩家要知道得足够多以便判断,但不能多到能算出唯一解。这个平衡点就是「有趣」的所在。

假选择之二:无差别

比支配策略更尴尬的一种:选项之间确实没有支配关系,因为它们压根就一样

典型场景:

  • 三个天赋分别是「+10% 火焰伤害」「+10% 冰霜伤害」「+10% 雷电伤害」,而游戏里三种元素没有任何区别
  • 选择你的出身:战士 / 法师 / 盗贼 —— 结果只影响初始装备,玩十分钟就没差了
  • 对话选项 A 和 B,NPC 的回复只差了一句话,后续完全相同
✕ 为什么无差别选择比没有选择更糟

因为它消耗信任

玩家第一次遇到会认真想。第二次会稍微想想。第三次他会发现「哦,选什么都一样」—— 然后从此以后,他对你游戏里所有的选择都会打折扣,包括那些真的有意义的。

对话选项是重灾区。如果你的分支对话最后都汇流到同一个地方,玩家会很快学会无脑点第一个。此时你写的所有分支文本,价值归零。

怎么修

无差别选择只有两种修法:要么让它真的有差别,要么删掉它。

但有一个例外值得知道:纯表达性选择。捏脸、选颜色、给角色起名字 —— 这些对玩法零影响,但它们不是假选择,因为它们兑现的是另一样东西:「这是我的」

判断标准:这个选择的结果,玩家能不能一直看见?能(我的角色是紫色的)→ 有价值。不能(我选了「善良」出身但游戏里没人提过)→ 假选择。

假选择之三:无信息

玩家面前三扇门,长得一模一样,没有任何线索。选一扇。

这不是选择,是抽奖。而抽奖的问题是:玩家学不到任何东西。他选错了,下次还是不知道该怎么选。

◆ 但要小心:信息不足 ≠ 无信息

这一条有个重要的例外,涉及肉鸽类游戏的核心设计。

《杀戮尖塔》的地图上,你能看到路线的图标(战斗 / 精英 / 商店 / 休息),但看不到具体是什么敌人、什么商品。这是部分信息,不是无信息 —— 而部分信息恰恰是最有趣的状态:

  • 你能推理(走精英路线风险高但奖励好)
  • 但不能确定(这个精英正好克制我的构筑吗)
  • 所以你会下注,而且事后能复盘(「我不该在血这么少的时候走精英」)

能复盘,是判断信息够不够的最好标准。玩家输了之后如果能说出「我错在哪一步」,那信息就是够的;如果只能说「运气不好」,那就不够。

平衡不等于相等

这是个人开发者最常见的一个误解,值得单独一节。

「平衡」听起来像是让所有选项一样强。于是有人拿着表格反复调数值,试图让每个武器的 DPS 都是 100。

这恰恰会做出最无聊的游戏。如果所有选项一样强,那就退化成了假选择之二 —— 无差别。

◆ 平衡的真正含义

平衡不是「一样强」,是「各有各的最强时刻」。

更精确地说,一个平衡的选项集合满足:对于每一个选项,都存在至少一种玩家能遇到的情境,在那个情境下它是最优解。

这条定义有几个很实用的推论:

  • 一个选项强得离谱但只在很窄的情境下有用 —— 这是好设计,不是失衡。(对空导弹)
  • 一个选项各项数值都中等 —— 这才可能是坏设计,因为它可能永远不是任何情境下的最优解。「万金油」是最容易变成废选项的东西。
  • 失衡的真正定义是:某个选项的最优情境覆盖了绝大多数实际游戏时间。

一个诊断技巧:看使用率分布

如果你有玩家数据(哪怕只是五个朋友),看每个选项的使用率

  • 某个选项使用率 > 60% → 大概率有支配策略,去查它是不是在太多情境下都最优
  • 某个选项使用率 < 5% → 它可能是废选项,或者它的最优情境玩家没遇到过(这两种情况的修法完全不同!)
  • 所有选项使用率都是 33% → 警惕,这可能是无差别,玩家在随便选

中间那条特别值得注意。一个使用率极低的选项,不一定是它弱,可能是你从来没造出它该发光的那个情境。这时候正确的修法不是加强它,是去关卡里加一个需要它的地方

⚙ Godot 落地:把选项做成数据,然后真的去算

如果你的游戏有一组选项(武器、道具、卡牌),把它们的收益矩阵写成资源文件,然后写一个编辑器脚本自动跑支配检测。这比你手动看表格靠谱得多。

@tool
extends EditorScript

# 每个选项在各情境下的收益(和上面那个 demo 同一套判定)
const OPTIONS := {
	"sword":  [8, 1, 3, 6],
	"bow":    [2, 9, 2, 5],
	"bomb":   [3, 2, 9, 2],
}

func _run() -> void:
	for a in OPTIONS:
		for b in OPTIONS:
			if a != b and dominates(OPTIONS[a], OPTIONS[b]):
				push_warning("「%s」被「%s」完全支配 —— 假选择" % [b, a])

func dominates(a: Array, b: Array) -> bool:
	var strictly_better := false
	for i in a.size():
		if a[i] < b[i]:
			return false          # 有一处更差,就不构成支配
		if a[i] > b[i]:
			strictly_better = true
	return strictly_better

每次改数值就在编辑器里跑一遍。它会抓到你肉眼绝对看不出来的东西 —— 尤其当情境有六七个、选项有十几个的时候,人脑根本比不过来。

选择的呈现:设计对了也可能被埋掉

最后一层,很实际:一个设计得很好的选择,如果呈现得不好,在玩家眼里仍然是假选择。

因为玩家判断一个选择有没有意义,靠的是他能获取到的信息 —— 而信息是由 UI 传递的。

呈现问题后果修法
选项的差异藏在数字里 玩家要心算才能比较,于是他不比较,随便选 把差异可视化:对比条、图标、「比当前 +3」
没告诉玩家会失去什么 他不知道这是取舍,以为是纯获得 明确显示代价,哪怕只是一行小字
选项太多 超过 5 个,玩家会放弃比较,挑第一个顺眼的 三选一是黄金数量
没显示当前状态 「+20% 火焰伤害」—— 我现在有多少火焰伤害? 选择界面上要能看到相关的现状
选完就消失,无法复盘 玩家学不到这次选择的后果 把已做的选择记录下来,可回看
◆ 「三选一」为什么是黄金数量
  • 两个太少 —— 容易退化成「好的那个」和「差的那个」,而且没有构筑空间。
  • 三个刚好 —— 玩家能同时在脑子里持有三个选项做比较,而且三个足以覆盖不同的策略方向。
  • 五个以上会触发选择过载:比较成本超过收益,玩家干脆放弃思考。而放弃思考的玩家,等于你的选择设计全部作废

这也解释了为什么几乎所有肉鸽都用三选一 —— 那不是巧合,是被反复验证过的数量。

一个额外的技巧:让玩家看见没选的路

选完之后,短暂地展示一下你没选的那两个是什么

这个小设计有两个作用:

  • 让玩家意识到这次选择确实有代价(他放弃了具体的东西,而不是抽象的「其他」)
  • 制造「下次要试试那个」的动机 —— 这是免费的重玩理由

本章小结

  • 不定义「有趣」,而是排除三种假选择:支配策略、无差别、无信息。
  • 支配可以被精确计算:A 在每种情境下都不差于 B 且至少一处更好 → B 是废设计。
  • 修支配策略的三条路:删掉、给强者加代价、或者坦白它是进度不是选择
  • 有意义的选择需要同时具备:信息、代价、不确定。判据是玩家输了能不能复盘。
  • 平衡 ≠ 相等。平衡是「每个选项都有它最强的那个情境」。万金油最容易变成废选项。
  • 使用率 < 5% 的选项,可能不是它弱,而是你没造出它该发光的情境
⇄ 换个类型
  • 卡牌 / 肉鸽:这一章几乎就是为它写的。每一次「三选一」都是一次支配检测的机会。杀戮尖塔式的设计秘诀:让卡牌的强度取决于牌库里已有的东西 —— 这样同一张卡在不同时刻价值不同,天然免疫支配策略。
  • 平台 / 动作:选择常常藏在路线里。「走上面这条路更快但更险」就是一次有代价的选择。做法:给同一段关卡设计两条通路,一条安全慢、一条危险快 —— 一行关卡设计,白送一个有意义的选择。
  • 塔防:塔的种类是最容易出支配策略的地方。务必给每种塔一个「只有它能干」的活(唯一能打空中的、唯一能减速的),而不是「伤害更高的版本」。
  • 模拟经营:选择几乎全是时间和空间的分配,天然有代价(用了就没了),所以很难做出假选择。它的风险在另一端:信息过载导致玩家算不动,退化成随便点。
  • 叙事解谜:对话选项是假选择的重灾区。如果分支最终汇流,至少要让玩家看得见差异 —— 一个角色记住了你说的话、一句后文的回指。哪怕不改变结局,「被记住」本身就让选择有了价值。