威胁体的感知与行为设计
威胁体的感知与行为设计
让威胁体显得聪明,但永远公平。这篇只解决一件事:玩家能不能解释它为什么能发现我、以及为什么没有发现我。
什么时候读这篇
读它,当你处在这些处境里:
- 在设计或调一个威胁体的感知模型:视锥多大、噪音怎么分级、警觉怎么累积。
- 在排查「它为什么能找到我」「它为什么放过我」「我躲得好好的还是被抓了」。
- 在给威胁体写 AI 分支,或者在给它的行为补一条规则/习惯。
- 在判断某个躲藏方案是不是已经变成无脑最优解。
- 在给威胁体划安全区、划禁区、布置它的巡逻路线。
- 在做公平性检查:出生点、检查点、追击状态的速度回落、时间常量。
不读这篇,当你处理的是这些:
- 机制数值、连续量与速率函数、规则文本的可玩化、门禁与信息锁、高潮触发、线索投放。感知是威胁体自己那一侧的输入通道设计,不是一般机制的可玩性设计。
- 房间、家具、镜面、贴图重复、朝向这类空间摆放与可信度。
- 「没报错但不对」「卡死」「全黑」「怎么写自动化验收」这类通用工程取证。
边界判断很简单:问题的主体是威胁体,就是这篇;问题的主体是玩家或世界,就是别的篇。
1 章程即地基
做法:把威胁体的全部行为写成一份它自己遵守的成文规则(章程)。每条章程对应一个 AI 分支,并且对应一个玩家能利用的漏洞。
推导:玩家能解释威胁体的行为,恐怖就成立;玩家只能观察,恐怖就退化成随机数。章程是把「可解释性」落到实现层的唯一形式。行为分支没有出处时,它迟早会变成一条玩家无法预测的规则,而无法预测的规则和作弊在玩家的体感里是同一件事。
可直接套用的章程骨架:
| 章程条目 | AI 分支 | 玩家可利用的漏洞 |
|---|---|---|
| 熄灯后按路线巡视 | 定时巡逻路径 | 卡在它视野夹角外 |
| 不碰睡着的人 | 跳过静立目标 | 站着不动是安全的 |
| 违规要处理 | 触发即追击 | 知道它会来,可以先跑 |
| 听到响动去查看 | 噪音触发调查点 | 远处的声音可以拉走它 |
| 查不到就翻找 | 调查点周围的搜刮分支 | 诱开它的物品/区域代价可控 |
| 被强光晃眼会挡脸(因为它也是人) | 致盲 / 动作中断 | 用光打断它的动作 |
| 它不进某类地方 | 寻路禁区 | 禁区是绝对安全区 |
骨架里「被强光晃眼」这一条要单独说一句理由:致盲必须是它作为生物的共有属性,不是它的职业缺陷。 一旦它被写成「这个怪物怕光」,玩家推出的是「换一种怪物就不怕」,世界的规律感就散了;写成「它也是人,所以强光让它挡脸」,玩家推出的是「这里的一切都有同一套物理」,恐怖反而加深。这一条同时是它唯一可能被光照反制的理由,而代价见第 9 节。
判据:
- 玩家能用「我违反了第几条」解释自己为什么被追,也能用「我满足了第几条」预测自己为什么安全。这两条都要在测试里写成具体用例:给定一段行为 → 期望的解释文本。
- 每条章程条目都能指出对应的行为分支与对应的漏洞,缺一条就不算登记完成。
2 它「不去的地方」是可玩的安全区
主动划定禁区,并把它变成玩家资源:禁区里必须有只属于玩家能拿的东西,因此玩家有理由主动进去,而不是被赶进去。
推导:一个纯粹用来躲的禁区只会被绕着走,它就成了地图上一块没人用的死面积。让禁区承载只有玩家能拿的收益,禁区就从「免死区」变成「取舍点」——玩家每次靠近它都在做一次成本计算,而那次计算本身就在生产紧张。
判据:
- 禁区由寻路不可达断言证明:从威胁体当前点到禁区任意采样点,批量寻路全部返回不可达。口头描述或设计文档不算。
- 禁区里的每一件可拿物都有一句理由说明为什么威胁体拿不到。
3 感知输入要少而可解释
三条输入,别更多:视觉(视锥)、听觉(带强度分级的噪音)、触觉(被撞到)。击杀需要多个传感器协同,单一传感器无法完成击杀。
每条输入要有明确的现实理由——为什么它能听见这个、为什么它看得到那个。现实理由是玩家归因的抓手;没有理由的输入会被玩家读成作者的任意安排。
推导:输入多到玩家无法归因时,玩家放弃推理、改成试错;输入少到只有一条时,威胁体退化成单条件解谜。少而可解释是唯一能同时保住推理空间与压迫感的密度。
判据:
- 每条感知输入有书面记录的现实验收。
- 击杀路径要求 ≥2 个传感器的读数同时满足(可断言:只满足一条时不进入击杀分支)。
4 它看得见「你这个人」,但眼睛也有份
核心约束:它看不见玩家的面部细节。远处看不清睫毛,看不见眼睑开合的细微差别。它的视觉只到「有个轮廓 / 那个人形在那儿」为止。
推导:由这条直接推出一条硬禁令——「检测你姿态像不像睡着」的机制一律不做。 检测姿态就是检测意图,做出来威胁体就成了读心者。更实际的后果在另一层:一旦「低头」是一个按钮,玩家就会把它当技能用。任何能改善生存的姿势动作都会被玩家识别为按钮并纳入最优解,而它本该是身体状态,不是输入。姿态一旦可操作,它就从身体表达变成了技能键,而技能键必然被优化,姿态的表演价值当场清零。
判据:感知计算里不存在任何读取精细姿态参数的分支(眼部开度、头部俯仰细分都不被采样)。
5 现实的「不被注意到」条件
条件集:不发光 + 不出声 + 不在动 + 被遮挡。
推导:这套条件自然可学、可复述、可反用——四条都是玩家能自我检查的显性状态,不需要记表。可检查性比精确性重要:一个玩家能在心里数得清的规则集,才是他愿意反复尝试的规则集。
必须有反制项,否则玩家找到无脑最优解:
- 开着自己的光源无效。
- 站在对方的光束里无效。
- 贴太近无效——近到某个距离后必然被发现,与遮挡无关。
推导:反制项的作用不是难度,是保持解法是权衡而不是答案。一个能永远执行的最优条件等于关掉了这个系统:玩家算出四条之后就再也不需要看屏幕,而恐怖只在玩家还在看的时候存在。
判据:存在「最优条件组合」的压力测试——同时满足四条条件的玩家,在战斗时长内仍可被抓到(至少有一定比例被抓)。
6 每个传感器读数都有衰减率
它最终会忘记。每条感知通道配一条衰减曲线,不许是常数保持到清零。
允许故意让部分知识是错的——某些声音对它完全无效。这种错误设定本身产生焦虑:玩家在拿它当线索的所有时候都不确定。
前提条件(不可省):游戏内没有反证。如果玩家后来发现「原来那种声音有效」,之前所有的焦虑都变成恼火。所以错的设定必须是永久错的,没有一局、一个房间、一个时段里藏着「这里它听得见」。
判据:
- 每条感知通道有衰减曲线,有采样断言(相邻采样的差值单调不增)。
- 任何标记为「无效输入」的通道,在游戏内不存在能证明其有效的情境(遍历事件表与场景条件可核对)。
7 不确定度用概率累加表达
做法:不确定度 = Σ(各传感器概率贡献 × 距离衰减)。不做布尔判定。
推导:布尔判定让玩家的任何微小操作都毫无意义——只要不触发条件,察觉就是 0。概率累加让「减光、屏息、慢慢退」变成有效策略,玩家因此开始精细操作,而精细操作正是它恐惧的生产方式。
判据:
- 警觉值是连续量。
- 存在「多次小幅抑制可以把总值压回阈值下」的可达路径(可断言、可截图)。
8 封堵最优解是合法的,但必须付明确代价
做法:让它「看不见某个角度」——这是它真实的生理短板。但两条纪律:
- 那个角度一旦被玩家反复利用,就提高它的警觉。复用即代价。
- 绝不因为玩家死亡而解锁任何感知能力。
推导:复用即代价让玩家在反复使用同一个解法时自动遇到阻力,而这个阻力来自威胁体自己的适应,不需要新的机制。死亡解锁则完全不同:玩家无法诊断它——只知道「这次和上次不一样」,只能理解成「游戏在针对我」。威胁体因此获得玩家永远无法诊断的不公平优势,恐慌就变成了愤怒。
判据:
- 重复利用同一死角后警觉上升(可断言:同一死角命中次数超过阈值后警觉基线上移)。
- 死亡次数不影响任何感知参数。断言形式:死亡计数不作为任何感知计算函数的输入(可做静态引用检查)。
9 它没有「反应迟钝的无脑最优解」
做法:每一个反制手段都带副作用。典型例:光照会让它的察觉速度变快。所以「用光反制」是一个有副作用的交换,不是纯收益。
推导:无副作用的反制手段是设计漏洞——玩家会把它当唯一的行动方式。有副作用的反制才是玩法:玩家在每次使用前做一次成本计算,那次计算就是紧张感的来源。这也回答了「它为什么怕光」这个问题的另一半:怕光是它的弱点,同时照光是它的加速器,同一个动作同时是削弱与催逼。
判据:每条反制手段旁边写着一句「它的副作用是什么」。写不出副作用的反制手段从可用清单里撤掉。
10 位置永远可读是设计手段
威胁体的位置可读,用来替掉文字引导。玩家看见它的光,就知道往哪跑;不需要 HUD 箭头、不需要「它往你这边来了」的提示。
做法与判据:
- 它的光在玩家视野内可判定:任何角度看到它的光都能定位它。
- 灯的光束目标必须跟随它的位置与朝向,不是固定时间表或固定角度。
- 侧向摆动必须沿「朝向的垂直向量」计算,不能沿固定的全局方向。 这是一个历史回归位:写成全局方向之后,光束的摆动与它面朝哪儿无关,玩家观察到的规律立刻失效,整套「读光推断行为」的可读性归零。
- 它未上线(未激活)时,相关提示必须不出现。提示出现等于提前告诉玩家「这里有个东西」,恐怖归零。
判据:随机取若干位置与朝向截图,能从画面判定它大致在哪、朝哪;未上线状态下抓帧,画面里不存在任何指向它的提示。
11 状态结束后速度必须回落
做法:追击结束时速度回落到巡逻基准,而不是把高速永久留在巡逻上。
推导:残留速度是全局难度漂移。玩家在一次成功逃脱之后拿到的是一个永久变难的关卡,而他不知道自己拿到了什么。
边界情况(时间也要守):距离驱动的计时必须由时钟驱动,不能逐帧累加。逐帧累加会让所有时间常量随帧率漂移——在一种帧率下测出的窗口,换到另一种帧率下成比例变长,低配机器上的玩家体验与验收机器上完全不同,而你永远不会看见这个 bug。
判据:
- 追击 → 巡逻切换后,速度在规定时间内回到基准区间(有断言)。
- 时间常量在两个不同帧率下测得的差异在容差内。
12 公平性
- 终局出生点取离玩家当前距离最远的巡逻节点,而不是固定贴脸的位置。
- 死亡检查点固定在离入口有一段固定距离的位置。太近会让玩家刚复活就被追,太远会让死亡惩罚变重。
推导:这两条是同一件事的两面——玩家被终止或被重新投放的那一刻,他需要能预期接下来会发生什么。可预期的代价是玩法,不可预期的代价是麻烦。
判据:终局出生点的距离取所有巡逻节点距离的最大值;检查点位置对所有入口一致。
反例速查表
每一条都是实现里最容易做错的地方。
| # | 反例 | 为什么错 | 正确做法 |
|---|---|---|---|
| 1 | 行为分支写不出章程出处 | 玩家无法归因,恐怖退化成随机数 | 每条章程 = 一个分支 + 一个漏洞 |
| 2 | 「怕光」写成怪物特性 | 玩家的规律感崩塌(换只怪物就不怕) | 写成它作为生物的共有属性 |
| 3 | 「检测姿态像不像睡着」 | 检测姿态 = 检测意图 = 读心者;姿态还会被识别成技能键 | 感知不采样精细姿态参数 |
| 4 | 「低头」被做成一个可用动作 | 任何能改善生存的姿势都会被玩家当成技能纳入最优解 | 姿态是身体状态,不是输入 |
| 5 | 感知输入堆到四五条 | 玩家放弃推理改试错 | 三条输入,且每条有现实理由 |
| 6 | 击杀只需单一传感器 | 退化成单条件解谜 | 击杀要求 ≥2 个传感器同时满足 |
| 7 | 最优躲藏条件无反制 | 无脑最优解,玩家不用再看屏幕 | 自发光 / 光束 / 过近距离三项反制 |
| 8 | 衰减曲线是常数保持到清零 | 威胁体永不过载,「它会忘记」不可信 | 每条通道有衰减曲线并采样断言 |
| 9 | 错的设定后来被证伪 | 焦虑变成不公平感 / 恼火 | 错的设定永久错,游戏内无反证 |
| 10 | 察觉是布尔判定 | 玩家的任何微小操作都无意义 | 概率累加 + 距离衰减 |
| 11 | 死角被利用后毫无代价 | 死角变成永久最优解 | 复用即代价,警觉基线上移 |
| 12 | 玩家死亡解锁敌方感知 | 玩家无法诊断的不公平优势 | 死亡计数不进任何感知输入 |
| 13 | 反制手段无副作用 | 它变成唯一行动方式 | 每条反制都写一句它的副作用 |
| 14 | 光的摆动沿固定全局方向 | 光束规律与它朝哪无关,可读性归零 | 沿朝向的垂直向量计算 |
| 15 | 它未上线时提示已出现 | 提前告诉玩家「这里有个东西」 | 未激活时提示必须不出现 |
| 16 | 禁区只由设计文档声明 | 挪一张家具就失效 | 寻路不可达断言 + 可达性探针 |
| 17 | 禁区里没有玩家专属物 | 禁区变成没人用的死面积 | 禁区内必须有只属于玩家能拿的东西 |
| 18 | 追击速度残留到巡逻 | 全局难度永久漂移且玩家不知情 | 状态结束速度回落到基准 |
| 19 | 计时逐帧累加 | 时间常量随帧率漂移,低配机器体验不同 | 计时由时钟驱动,两档帧率下测差异在容差内 |
| 20 | 终局出生点固定贴脸 | 玩家无法预期代价 | 取离玩家最远的巡逻节点 |
| 21 | 检查点贴着入口 | 刚复活就被追,死亡惩罚变形 | 检查点离入口有固定距离 |
自查闸门清单
提交前逐条回答,答案必须包含具体数值或具体测试名。
章程层
- 每条行为分支都能指出对应的章程条目与对应的玩家可利用的漏洞吗?
- 玩家能用章程条目解释被追的原因吗?也能预测自己安全的原因吗?(各有测试用例)
- 每条章程条目的「理由」是它作为生物的共有属性,而不是它的职业设定吗?
感知层 4. 感知输入不超过三条,每条都有书面记录的现实验收吗? 5. 击杀路径要求 ≥2 个传感器同时满足吗? 6. 感知计算里不存在读取精细姿态参数的分支吗? 7. 每条感知通道的衰减曲线是衰减的,不是常数保持到清零吗? 8. 任何标记为「无效输入」的通道,游戏内不存在能证明其有效的情境吗? 9. 警觉是概率累加而非布尔?「多次小幅抑制能把总值压回阈值下」可达吗?
解法层 10. 同时满足「不发光 + 不出声 + 不在动 + 被遮挡」的玩家,在战斗时长内仍可被抓到吗? 11. 三项反制(自发光 / 站在对方光束里 / 过近距离)都在生效吗? 12. 重复利用同一死角后警觉上升吗?死亡计数不进任何感知输入吗?(两者都要断言) 13. 每条反制手段旁边都写得出它的副作用吗?
公平层 14. 它的位置在任意角度都可读吗?光的摆动沿朝向的垂直向量而不是固定全局方向吗? 15. 它未上线时提示确实不出现吗? 16. 追击结束后速度回到巡逻基准区间吗?时间常量在两档帧率下差异在容差内吗? 17. 终局出生点取的是离玩家最远的巡逻节点吗?检查点对所有入口一致吗?
禁区层 18. 禁区由寻路不可达断言证明吗(可达性探针,而不是文档声明)? 19. 禁区里有只属于玩家能拿的东西吗?
来源
公开资料:
- 威胁体的感知应建立在有限、可解释的输入上,以及次优巡逻路线带来的不确定性——Game Developer: The Perfect Organism — the AI of Alien: Isolation、Game Developer: Revisiting the AI of Alien: Isolation
- 利用恐惧制造恐怖:不可预测性作为品牌、手电作为位置可读手段、玩家在 AI 上的赌博心理——Game Developer: Exploiting Fear to Create Good Horror Games
- 生物 AI 的设计取舍与「它也是一个生物」的可解释性收益——MCVUK: A Tiger in the Office — How Alien: Isolation's Xenomorph Took Shape
- 恐惧等级、留白与节奏、威胁的存在感优于威胁的强度——Hendriksen, Principles of Horror Level Design
亲历项目(原型实践中提炼,未经公开):章程骨架与「可解释即恐怖」(1)、禁区作为玩家资源(2)、感知输入的少而可解释密度(3)、姿态检测禁令与「姿势变技能键」(4)、四项现实条件与三项反制(5)、故意错误的知识与其不可证伪前提(6)、概率累加(7)、复用即代价与死亡不解锁(8)、反制必须带副作用(9)、光束目标跟随朝向与侧向摆动取垂直向量(10)、速度回落与时钟驱动计时(11)、出生点与检查点公平性(12)。反例速查表与自查清单中的「压力测试」「衰减曲线采样断言」「可达性探针」等验收形态同样来自亲历项目。