有意义的选择,和那些假选择
「游戏是一系列有趣的选择。」这句话被引用了三十年,以至于没人再追问后半句:什么样的选择才算有趣?这一章不谈玄学 —— 假选择是可以被算出来的,本章有一个真的在跑支配策略判定的检测器。你会发现你以为的「三种武器让玩家自由搭配」,在数学上其实只有一种武器。
那句话的完整版本
原话来自席德·梅尔(《文明》的作者):「一个(好)游戏是一系列有趣的选择。」
问题在于「有趣」这个词又把我们扔回了玄学。所以我们换个方向:不去定义什么是有趣的选择,而是精确地定义什么是无趣的选择 —— 后者是可以判定的,而把所有无趣的排除掉,剩下的就是你要的。
- 有支配策略:某个选项在所有情况下都不比别的差 → 其他选项等于不存在
- 无差别:选哪个结果都一样 → 这不是选择,是仪式
- 无信息:玩家完全无法预判后果 → 这不是选择,是抽奖
三种里第一种最常见、最隐蔽,也最能被数学抓出来。
假选择之一:支配策略
先给一个精确的定义,因为它真的能拿来算:
选项 A 支配选项 B,当且仅当:在每一种情境下 A 都不比 B 差,并且至少存在一种情境 A 严格更好。
如果 A 支配 B,那么任何一个理性玩家都不该选 B,在任何时候。B 就是废设计 —— 它占着 UI 的位置、占着你的开发时间、还让玩家觉得被耍了。
下面这个检测器是真的在跑上面那个判定。三组数据换着看:
第一组:那个所有人都犯过的错
「铁剑、钢剑、秘银剑」是一个教科书级的假选择:三把剑只是同一把剑的三个数值档位。
你可能会说:这不算选择啊,这是成长。没错 —— 而这正是问题所在。它的问题不在于存在,在于它被放进了一个「选择」的界面里。
当玩家在商店里看到三把剑并排摆着,他会以为这是一个决策。他会认真比较,然后发现只是买得起哪把的问题。你消耗了他的注意力,却没有给他任何东西。
发现选项 A 支配 B 之后,你有三条路:
- 删掉 B。最诚实,也通常最好。如果一个选项永远不该被选,它就不该存在。
- 给 A 加一个代价,让它在某些情境下变差。秘银剑最强但很重(影响移速)、很贵(挤占其他资源)、或者只对某类敌人有效。这是把假选择变真选择的标准手法。
- 把它们从「选择」改成「进度」。如果你就是想要成长感,那就别把三把剑摆在一起让玩家挑 —— 让它们按顺序解锁,一次只有一把。这样玩家知道这是进度,不会浪费思考。
第 3 条常被忽略:很多假选择的正确修法不是让它变真,是坦白它不是选择。
第二组:真选择长什么样
「剑 / 弓 / 炸弹」在检测器里没有任何一项被支配。原因很清楚:剑近战最强但打不到远处,弓远程无敌但贴脸没用,炸弹清群王者但打单体很差。
这就形成了一个石头剪刀布式的结构:没有绝对最强,只有针对情境的最强。
而这带来了一个非常重要的副产品:玩家开始预判。
他会想:「下一个房间可能是一群小怪,我带炸弹吧。」这一刻,他不是在选装备 —— 他是在对未来下注。而下注是有趣的,因为它可能对也可能错,而且是他自己的判断。
把上面的例子抽象出来:
- 信息:玩家能大致预判每个选项的后果。(没有 → 变成抽奖)
- 代价:选了 A 就意味着放弃 B,不能全都要。(没有 → 变成收集)
- 不确定:他不能百分之百确定哪个是对的。(没有 → 变成计算题)
三条要同时成立,而且第 1 条和第 3 条之间有张力 —— 玩家要知道得足够多以便判断,但不能多到能算出唯一解。这个平衡点就是「有趣」的所在。
假选择之二:无差别
比支配策略更尴尬的一种:选项之间确实没有支配关系,因为它们压根就一样。
典型场景:
- 三个天赋分别是「+10% 火焰伤害」「+10% 冰霜伤害」「+10% 雷电伤害」,而游戏里三种元素没有任何区别
- 选择你的出身:战士 / 法师 / 盗贼 —— 结果只影响初始装备,玩十分钟就没差了
- 对话选项 A 和 B,NPC 的回复只差了一句话,后续完全相同
因为它消耗信任。
玩家第一次遇到会认真想。第二次会稍微想想。第三次他会发现「哦,选什么都一样」—— 然后从此以后,他对你游戏里所有的选择都会打折扣,包括那些真的有意义的。
对话选项是重灾区。如果你的分支对话最后都汇流到同一个地方,玩家会很快学会无脑点第一个。此时你写的所有分支文本,价值归零。
怎么修
无差别选择只有两种修法:要么让它真的有差别,要么删掉它。
但有一个例外值得知道:纯表达性选择。捏脸、选颜色、给角色起名字 —— 这些对玩法零影响,但它们不是假选择,因为它们兑现的是另一样东西:「这是我的」。
判断标准:这个选择的结果,玩家能不能一直看见?能(我的角色是紫色的)→ 有价值。不能(我选了「善良」出身但游戏里没人提过)→ 假选择。
假选择之三:无信息
玩家面前三扇门,长得一模一样,没有任何线索。选一扇。
这不是选择,是抽奖。而抽奖的问题是:玩家学不到任何东西。他选错了,下次还是不知道该怎么选。
这一条有个重要的例外,涉及肉鸽类游戏的核心设计。
《杀戮尖塔》的地图上,你能看到路线的图标(战斗 / 精英 / 商店 / 休息),但看不到具体是什么敌人、什么商品。这是部分信息,不是无信息 —— 而部分信息恰恰是最有趣的状态:
- 你能推理(走精英路线风险高但奖励好)
- 但不能确定(这个精英正好克制我的构筑吗)
- 所以你会下注,而且事后能复盘(「我不该在血这么少的时候走精英」)
能复盘,是判断信息够不够的最好标准。玩家输了之后如果能说出「我错在哪一步」,那信息就是够的;如果只能说「运气不好」,那就不够。
平衡不等于相等
这是个人开发者最常见的一个误解,值得单独一节。
「平衡」听起来像是让所有选项一样强。于是有人拿着表格反复调数值,试图让每个武器的 DPS 都是 100。
这恰恰会做出最无聊的游戏。如果所有选项一样强,那就退化成了假选择之二 —— 无差别。
平衡不是「一样强」,是「各有各的最强时刻」。
更精确地说,一个平衡的选项集合满足:对于每一个选项,都存在至少一种玩家能遇到的情境,在那个情境下它是最优解。
这条定义有几个很实用的推论:
- 一个选项强得离谱但只在很窄的情境下有用 —— 这是好设计,不是失衡。(对空导弹)
- 一个选项各项数值都中等 —— 这才可能是坏设计,因为它可能永远不是任何情境下的最优解。「万金油」是最容易变成废选项的东西。
- 失衡的真正定义是:某个选项的最优情境覆盖了绝大多数实际游戏时间。
一个诊断技巧:看使用率分布
如果你有玩家数据(哪怕只是五个朋友),看每个选项的使用率:
- 某个选项使用率 > 60% → 大概率有支配策略,去查它是不是在太多情境下都最优
- 某个选项使用率 < 5% → 它可能是废选项,或者它的最优情境玩家没遇到过(这两种情况的修法完全不同!)
- 所有选项使用率都是 33% → 警惕,这可能是无差别,玩家在随便选
中间那条特别值得注意。一个使用率极低的选项,不一定是它弱,可能是你从来没造出它该发光的那个情境。这时候正确的修法不是加强它,是去关卡里加一个需要它的地方。
如果你的游戏有一组选项(武器、道具、卡牌),把它们的收益矩阵写成资源文件,然后写一个编辑器脚本自动跑支配检测。这比你手动看表格靠谱得多。
@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% 的选项,可能不是它弱,而是你没造出它该发光的情境。
- 卡牌 / 肉鸽:这一章几乎就是为它写的。每一次「三选一」都是一次支配检测的机会。杀戮尖塔式的设计秘诀:让卡牌的强度取决于牌库里已有的东西 —— 这样同一张卡在不同时刻价值不同,天然免疫支配策略。
- 平台 / 动作:选择常常藏在路线里。「走上面这条路更快但更险」就是一次有代价的选择。做法:给同一段关卡设计两条通路,一条安全慢、一条危险快 —— 一行关卡设计,白送一个有意义的选择。
- 塔防:塔的种类是最容易出支配策略的地方。务必给每种塔一个「只有它能干」的活(唯一能打空中的、唯一能减速的),而不是「伤害更高的版本」。
- 模拟经营:选择几乎全是时间和空间的分配,天然有代价(用了就没了),所以很难做出假选择。它的风险在另一端:信息过载导致玩家算不动,退化成随便点。
- 叙事解谜:对话选项是假选择的重灾区。如果分支最终汇流,至少要让玩家看得见差异 —— 一个角色记住了你说的话、一句后文的回指。哪怕不改变结局,「被记住」本身就让选择有了价值。