# 战斗如何运作

LLMS 索引： [llms.txt](/dvw/llms.txt)

---

从大处着眼，战斗牵涉许多活动：法师施放法术，弓手射出箭矢，牧师给伤者疗伤。这些事也许很重要，甚至能决定战斗的胜负，但它们终究只是核心冲突的附属品：两个个体面对面站着，用近距离武器硬碰硬地互殴。原因很简单：近身战斗比远程战斗更刺激。怪物就贴在你脸上。没错，正在蓄力施放能把坏蛋轰翻的法术的法师也很兴奋，但这份兴奋来自前线正在发生的事：如果顶在前面的坦克不觉得打得过瘾，法师也不会觉得过瘾。

因为这个原因 [^54]，凡是有战斗的虚拟世界，大多都把近身战斗放在首位。由此确定了基本机制，以及判定成败的度量方式。远程战斗遵循同一套系统，魔法（无论攻击性的还是防御性的）也一样。因此，讨论战斗的时候，把重点放在近身这种类型上是合理的。

《MUD1》的近身战斗是这样做的：

- 一个角色攻击同处一地的另一个玩家。

- 随即开始一段自动战斗序列，双方角色轮流击中对方。

- 命中概率取决于角色的灵巧属性。

- 造成的伤害取决于角色的力量属性。

- 伤害从角色的 stamina（体力）[^55] 属性中扣除。

- 当某个角色的体力降到 1 以下时，该角色死亡，战斗结束。

这至今仍大体上是基本范式。伤害可以由武器提高，也可以由护甲和盾牌降低；法术可以增强属性、治疗伤势，也可以做相反的事（对敌人做）；有些战斗者可能拥有多次攻击（龙可以一边朝你喷火，一边用爪子抓你）；技能可能带来额外的特殊动作。有这些增减，底层机制大体上仍然不变。

《MUD1》为什么这么做？它和《龙与地下城》（Dungeons & Dragons）战斗的运作方式像得出奇——相似到许多虚拟世界都公开沿用 D&D 的传统，把角色的 health 称作 “hit points”（生命值）。

《MUD1》这么做，是因为它能带来好玩的玩法。罗伊希望战斗以互相挥击的形式展开——我挥一下，你挥一下，我挥一下，你挥一下——因为那是最合适的抽象层次。他希望战斗自动化，否则玩家得不停地输入 “hit them [^56]”，会很烦人。当一个角色向另一个角色挥击时，总得存在某种命中的机会：这个概率就由灵巧属性来体现。至于一击打中之后会怎样，嗯，显然总得有伤害。

罗伊和我讨论过这件事该怎么处理。虽然我很熟悉 D&D 的战斗系统，但我也知道这类事情还有别的做法（毕竟我玩的不只是 D&D）。说起来，我当时已经设计过好几款采用不同机制的桌游，还有一款电脑游戏 [^57]。不过总体而言，那套经典做法靠着简单胜出。身处战斗之中时，你想一眼就看出自己打得怎么样。太复杂的东西，玩家来不及吸收；再简单一些，战斗就毫无乐趣可言了。

于是我们决定，给角色若干条“命”。每当一击真的打中某个角色，就扣掉一条命。为了让这件事不像听起来那么可预测，我们把所有数值都放大十倍，并加入一些随机性。这样一来，虽然你的角色通常能扛住十次打击，但有时会撑得更久，有时却会提前认栽。我们做了一些调校，确保战斗既不会拖得太慢，也不会快得没了乐趣，就这样。其余的机制——法术、武器、宝物——也都照此跟进。

作为一种游戏机制，这套东西运转良好。作为对现实的再现，它却有些走偏。现实中使用手持兵器的战斗并不是慢慢地消耗——在你身上这里划一道、那里刮一下，直到某一方终于被磨死。恰恰相反，大多数攻击会被挡下、躲开或招架开；真有一击落在实处时，要么没什么效果，要么就足以让对方基本丧失战斗能力。在现实世界的中世纪战争里，一个人一旦受了重伤，就再也无法参与战斗，而且哪怕没人补刀，也基本死定了（当时的医学对付不了感染）。当然，设定在别的时代、或是有魔法的虚拟世界，不必拘泥于这些事实，但它们仍然需要一套自圆其说的虚构设定。

那么，还有哪些战斗系统既能保留玩法，又在道理上更说得通呢？


[^54]: 其实，许多设计者用的是另一个理由：“我从小玩的那个虚拟世界就是这么运作的。”
[^55]: 如今，stamina 通常指一个角色能从事多少消耗性活动；《MUD1》里的 stamina 叫 health（生命值）。
[^56]: 注意，点鼠标比打字容易得多，所以图形化虚拟世界可以不搞自动化的近身战斗。
[^57]: 一款用 BASIC 写的双人坦克对战游戏，如今已经失传（也不是说这个世界有理由为它操心！）。它采用指定目标位置的机制：每次命中都可能打掉一个系统或一名乘员，从而减少玩家后续下达指令时可用的选项。
