Axıs
技能目录

溯源索引:每条纪律追问回哪一次事故

溯源索引:每条纪律追问回哪一次事故

本篇不教任何新东西,只做一件事:把 SKILL.md 与 8 篇 reference 里的每一条纪律,钉回它被写下来的那一次具体事故。

怎么用:拿到一条抽象(「压光要给硬上限」「断言跟着设计走」),在本篇里找到它的行,读「事故形态」一列——那是你应该预期在成品里看到的坏现象。如果一行事故都举不出来,这条抽象就还没被验证过,只是听起来合理。

四档标注:

  • 亲历——可指认到具体事故或某次反馈原文(HANDOVER.md 坑清单 / FEEDBACK.md 各轮结论 / BIBLE.md 成文规则 / 三份会话导出的用户输入段)。
  • 公开来源——有一手引文,出处见对应篇的来源小节;此处只写来源名称。
  • 自建框架——无一手材料,推导自建。这类在正文已显式标注(主要是 mechanics-and-rules.md 第 10 章规则怪谈可玩化)。
  • 单例——不是第四档来源,是强度标记:只出现过一次的事故。作为通则的证据强度弱,使用时优先参考同篇邻近条目,不要硬套成通则。单例不删:删掉会让覆盖出现空洞,读者看不出这里本来就没有证据。

「反复次数」的记法:指该模式在三个会话导出与项目文档里被反馈或发生的次数。能确证的写精确数(如「崩过 5 次」),不能确证的写 ≥N。宁可粗略也不要假精确。

索引本身也可能滞后于正文。 若两者冲突——编号错位、条目名对不上、正文多了一条没进索引——以正文为准,并顺手回来修这张表。

  • SKILL.md 六章原则 + GOTCHAS + 术语表 → §1
  • 恐惧设计 → §2
  • 文本与道具 → §3
  • 机制与规则 → §4
  • 威胁体 AI → §5
  • 空间与关卡 → §6
  • 验收与取证 → §7
  • 无障碍与健康 → §8
  • three.js 引擎附录 → §9
  • 高强度清单与覆盖审计 → §10

1 SKILL.md

条目 判据要点 事故形态(看到就要停) 源自 反复次数
一.1 机制被推出不是被发明 每条机制在「机制 ↔ 角色身世」表里有一行来处,写不出就不做 看到策划案里出现一条「加个 XX 机制」,问不出它对应谁的哪段经历 亲历 1(单例·降权)
一.2 规则可玩化且双向 每条规则文本对应一个可触发可观察的机制;玩家无法发现的机制不许留在规则框架内 看到守则 8/8 覆盖率不是 100%,或者覆盖了却有一条机制压根不进流程 亲历 ≥3(第九轮四条要求 + 第八轮覆盖度更正 + 第六轮守则挂钩)
一.3 呈现优于说明 能用画面或声音表达的不写字;删掉这句玩家损失的是判断还是信息 看到旁白在复述眼前陈设、复述音效、进门报房名 亲历 + 公开来源 ≥2(13 轮留白成文 + 20 轮末 122→66)
一.4 一条反馈 = 一个类 收尾必须报「同类排查已完成,覆盖 N 处」加一句「本次探针查不到 Y」 看到修完一处 bug 的回答里没有覆盖范围,也没有盲区声明 亲历 ≥3(第九轮·补、第九轮·补·同根因、第二十轮「举一反三收尾」)
二.1 先确认交付哪种商品 验收口径换成氛围 / 主题 / 脆弱感三项各有承载物,不用「好玩吗」 看到有人用「好玩吗」验收恐怖内容,或一段内容三项都指不出承载物 公开来源 1(单例·降权,项目内无对应事故)
二.2 剥夺赋能是引擎 玩家动词清单里不出现「击败」「造成伤害」「压制」 看到玩家手里有能赢的武器,或设计上给了一条纯收益的输出手段 公开来源 + 亲历 ≥2(第四轮删装睡、手电翻成「她找你的天线」)
二.3 甜区在可解决的误差上 留一个玩家能靠观察解决、尚未解决的缺口;游戏内不许有反证 看到假线索被玩家当场证伪,或缺口的解决路径被写进提示里 公开来源 1(单例·降权)
二.4 惊吓是标点不是散文 每个惊吓同时是一条永久性世界规则;散布开、砍掉大部分 看到一段惊吓播完就失效,撤掉它之后世界没有任何变化 公开来源 1(单例·降权,项目内惊吓预算本身未被反馈挑战)
二.5 首遇三纪律 可逃、先听觉后视觉、位置永远可读;首触点只有两个动词的可判定选择 看到玩家第一次见威胁体就被追着跑,或靠 HUD 箭头指路 亲历 + 公开来源 ≥2(第九轮「我都没看见敌人在哪就要被提示引导」+ 宿舍门缝那道光)
二.6 留白是节奏机制 有回落通道、硬上限、强制静默窗口;超阈值后强制让威胁退场 看到一段高压内容之后直接接下一段,没有降档通道 公开来源 1(单例·降权)
二.7 不要把线性当恐怖通则 张力靠尺度(更窄的走廊、更低的天花、更少的视线),不靠拓扑 看到用「非线性能更恐怖」当默认设计结论,且说不出机制解释 公开来源 1(单例·降权,反直觉结论来自工作室自述)
三.1 宣称与呈现不符是「出戏」的底层 物件上出现不该有的东西 / 锁着却报钥匙在哪 / 文档与实际楼层矛盾 / 镜子能看穿 看到玩家截图里镜面另一侧透明,或值班表写的楼层与玩家脚下不是一层 亲历 ≥4(RC 值班表楼层、镜面、画外黑框、接待台朝向)
三.2 细节失败比粗糙更致命 宁可藏起来,不要半露 看到一张画里有一半积灰一半没有,或一个柜子半开着露出发黑的板 亲历 + 公开来源 ≥3(衣柜黑面片、棉袄嵌进柜板、画背面套着纸)
三.3 数字口径只留一个数据源 一个视觉区域只承载一种性质;同一事实只留一处来源 看到 HUD 12/19、菜单 16/19、暂停页另一组数同时在屏幕上 亲历 ≥3(12/19 vs 16/19、14/19 vs 15/份、蜡笔画 4/4 与列表 5 张)
三.4 「按 F 没反应」是三个 bug 的合称 分开查几何不可达 / 可见性为零 / 入口生命周期只挂在一瞬间 看到报障写「按 F 没反应」就去查按键绑定 亲历 ≥3(布鞋 flag 翻了画面零变化、琴面差 1.5mm、衣柜腔体不可达)
四.1 旁白只在画面给不出信息时说话 删除检验:损失判断的删,损失信息的留 看到旁白里出现「×1.8」「半径 13m」或守则编号 亲历 + 公开来源 ≥3(12 条去系统味、13 轮重写、20 轮 122→66)
四.2 零括号 可见文本源里括号数为 0 看到 (……别抬头。)、(记住了这个房间。) 这类括号 亲历 ≥2(第十六轮全库去括号 + 第二十轮文字终查清舞台指令)
四.3 一句一句 每句只许一个句号;清掉推论式补刀 看到「她停下了。她听见了我。」这种第二句补刀 亲历 ≥2(第十七轮一句话化 + 第二十轮「有人在数数」)
四.4 可见文字不出现人名 只用我 / 妹妹 / 她 + 床位号、职务、日期;被抹掉的名字用划痕画出来 看到「林小满(女,5岁)」出现在机构文件或粉笔字里 亲历 ≥2(第十六轮 + 第十九轮全文字去姓名含机构文件)
四.5 不数数 可见文字不出现连续数字;拍子交给声音与画面 看到「一,二,三……」或滚动到 21、22 的计数器在屏幕上 亲历 1(单例·降权,第十六轮一次性落地)
四.6 提示即按键且不许说谎 每条提示能指出触发它的世界条件;守卫为假时不出现 看到门还锁着、文案却说「钥匙挂在门后面 得先摸到挂钩」 亲历 ≥2(弹琴提示改为仅 mother.active + 锁着的宿舍门谎报挂钩)
四.7 锁只报锁 锁相关文案不出现方位词或藏匿描述 看到「钥匙在宿舍门后面」这类指路文案 亲历 1(单例·降权,2026-10-07 用户裁定,三处一次性删净)
四.8 物体上只许有它物理上真有的东西 手写件无抬头无红线无章;机构章白名单同步 看到私信和日记上盖着机构红章,或每张纸都是居中抬头 + 分隔线 + 红章 亲历 ≥3(第六轮模板化被推翻、第七轮六字段模型、第二十一轮整页图)
四.9 文字唯一出处与权威顺序 文档冲突的权威顺序写死,并顺手把它改对 看到同一句话在 BIBLE / DESIGN / HANDOVER 里三个版本 亲历 ≥2(code > HANDOVER > DESIGN 写入附录 B + sync.html 四份文档对账)
五.1 连续轴上的刻度不是开关 存在一个连续量 + 一个可夹逼的身体修正项 看到三个状态各自写一套规则,切换像模式切换而不像眼睑在动 亲历 ≥2(第六轮三态定稿 + 第九轮键位反转)
五.2 独占收益 + 独占代价挂同一个变量 收益与代价来自同一双眼睛;优先找零新素材的代价实现 看到某个机制有收益通道却没有对应代价通道,或代价要新素材才能实现 亲历 ≥2(失焦 + 余光剪影配对 + 第十一轮「她不是被光吓到的」)
五.3 默认值与阈值是可玩性问题 玩家实测能全程不按某个键 → 改价值轴不改实现 看到玩家实测全程不按 Q/E,于是该键的收益只剩减损型 亲历 1(单例·降权,第二十二轮单次重构)
五.4 每个优化都要想它会被怎么刷 把自查写成通则:每个收益旁边写「它会被怎么刷」 看到「中间姿态回充是缓慢下降还是上升」这种问题没人问过 亲历 1(单例·降权,开发者自述的具体堵法被抽象成通则)
五.5 惩罚从等待改成风险 任何强制盲 / 强制静止超过 1 秒都要伴随一个位移压力 看到罚站三秒期间她不会过来,玩家站着等就行 亲历 ≥2(第十一轮「数三十没有牙齿」+ 第二十二轮光压)
五.6 碰撞不等于即死 给 1–1.5 秒惊觉窗口,把接触转成一次信息事件 看到撞到她立刻死亡,逃跑窗口不存在 亲历 1(单例·降权,第十三轮追逃重做)
五.7 关门的意义是争取时间 关门买时间,不是脱战 看到玩家关门后威胁体判定为「离场」直接消失 公开来源 + 亲历 1(单例·降权)
五.8 演出事件默认非致命 致命后果只留给规则违规 看到一次演出事件把玩家直接判死 亲历 1(单例·降权,走镜半程被抓改掉死亡黑场)
五.9 扩内容不是加规则是二次使用 每件新内容回答「它让哪条已有规则变得可玩」 看到一件只会被看一眼的道具被加进关卡 亲历 ≥2(第六轮守则挂钩 + 第七轮线索串行)
六.1 静默失效是头等缺陷 任何「功能存在」的断言必须用一次真实触发支撑;「没报错」= 不合格 看到一条断言只检查函数被调用,没有检查它真的产生了可观察结果 亲历 ≥5(十六张纸静默回落、墙面全是走廊灰、眼睑声没响过、线索条不刷新)
六.2 测量先于调参 「某处很黑 / 不响 / 看着不对」先写成一个可测量的量再改 看到同一处「照不亮」被调了三轮参数都无效 亲历 ≥3(手电衰减悬崖、区域割裂、emissive 抖出青色点阵)
六.3 先怀疑探针,再怀疑游戏——只怀疑一次 探针标定通过后必须立刻回头查游戏 看到量到「机制失效」就改游戏阈值,而没先验证探针坐标系 亲历 ≥7(FEEDBACK 明确记录多次:俯仰符号、门限标定、rAF 虚拟时间、延时旁白守卫)
六.4 卡死的统一形状 状态把输入或画面接过去,释放只写在顺利那条路上 看到 onCaught 清了 G.cut 却留着 cutLock,死亡期间键盘锁死 亲历 ≥4(第九轮、第九轮·补、第十二轮、RC 结局链定时器)
六.5 四道网 + 黑屏保险丝 锁预算 / 停摆看门狗 / 自救键 / 逐帧熔断;全黑超阈值交还接管项 看到持续异常只让画面冻结,没有降级路径 亲历 ≥3(第十二轮熔断器 + 渲染层末路重载 + 诊断页点名)
六.6 循环外必须有安全网 四道网全在主循环内部,主循环挂死时一起陪葬 看到四道安全网没有任何一个跑在独立线程上 亲历 1(单例·降权,第十二轮推导结论)
六.7 诊断页要自己说话 暂停页印「锁未交还 N 次 · 停摆自愈 M 次 · 最坏一帧在哪个房间」 看到玩家报障只有一句「卡死了」,没有任何计数 亲历 1(单例·降权,第九轮·补落地)
六.8 钳制防不住 NaN 有限性单独设闸;max(0, NaN) 仍是 NaN 看到代码里有 clamp() 就认为 NaN 已经防住 亲历 ≥3(lampMult 未初始化终局黑屏、A.setPad 每帧 non-finite、m.activate 数组当对象读)
六.9 数值插值字段初值必须是数 未赋值 + 目标是数 = 全链路 NaN = 永久黑屏 看到 level.lampMult 没有初值就参与 undefined + (0.13 - undefined) 亲历 ≥4(lampMult、wakeT、lidSndCd、G.dzT)
六.10 跨形状传值要念字段名 数组当对象读 = 激活即 NaN 看到 best = c 之后按 best.x 读 亲历 ≥3(m.activate、tex.js 挂错对象、cutscene 相机写入路径)
六.11 时间纪律与派生物 单任务墙钟上限写进脚本;派生物必须与当前代码同源 看到后台任务被孤儿 shell 复活,继续逐页拉 chrome 亲历 ≥2(第二十轮·下时限纪律 + 派生物对账页)
七.1 Demo 是概念验证不是内容切片 证明核心机制可被发现,不是被讲解 看到 Demo 主线是调数值,而玩家反馈里全是误解 公开来源 + 亲历 ≥2(第七轮线索全给用户 + 14 轮 reachprobe)
七.2 内容量不足让机制无处发挥 一间房两分钟翻完 → 机制没有执行机会;缺时长先加长回环 看到房间数量在涨,而每间房的探索密度在掉 亲历 ≥2(第九轮宿舍 3→12 件 + HANDOVER §4.2 探索密度)
八.1 反复反馈是优先级信号 同一件事被反馈第 4 次说明前几轮修在了错误层次 看到同一个「照不亮」反馈第三次而改动还只是参数 亲历 ≥3(手电致黑两轮、第九轮四张截图、第二十六轮地面割裂)
八.2 修类不修点 用户明说「它们应该都有一个根因」 看到只修了被报的那一处,没查同族 亲历 ≥3(第九轮·补、第十二轮、第 20 轮·下)
八.3 找不到根因就如实说 「我能证伪所有猜测但没复现你那一帧」比假装修好有价值 看到 Agent 宣称修好了但拿不出一次真实触发记录 亲历 ≥2(第九轮·补交付四道网 + 第十二轮写间谍抓栈)
八.4 「散」比「大」更致命 状态写入点收敛,而不是控制代码量 看到同一状态在几百个地方各写各的初始化 亲历 ≥2(api.checkpoints 整字面量 + 每帧状态初始化铁律)
八.5 断言要断言玩家可见结果 只读逻辑状态的端到端断言会漏掉「界面盖住了演出」 看到 e2e 全绿,而暂停菜单正盖在数台阶演出上 亲历 ≥2(第九轮看门狗回归 + 第十一轮 stairs.html)
八.6 断言跟着设计走 设计改了旧断言就是过期文档,必须同一次提交改 看到 lid 挡光曲线搬到亮处后还在用旧的非光压前提断言 亲历 ≥3(lid 曲线、quests.html 硬编码旧文案、endcard 达成结局徽章)
八.7 拍脑袋式调参会掩盖根因 「某处 X」类反馈先变成可测量量 看到「手电照不亮」被归为参数不够亮 亲历 ≥3(手电、区域割裂、发光体)
八.8 不可破的例外和真 bug 长得一样 记录哪些「看似出错的地方」是设计好的破例 看到疑似 bug 清单里没有一条判定结论 自建框架(机制 §10.5 反向筛选) 1(单例·降权)
八.9 穷举类验收放在最坏输入上 含非有限值、含全部音名;常驻至少一个真跑该子系统的页面 看到全部 harness 跑完 A.ok 恒为 false,音频层 bug 全隐身 亲历 ≥2(SHOT 模式藏 12 轮 + 音频穷举页只此两页真开音频)
八.10 早期玩家版本体量无统计分布 只有个体开发者的自述数值,别当行业基准 看到某处时长数字被当成行业参考 公开来源 + 亲历 1(单例·降权)
术语.dread/shock 交付的是可持续数分钟、由玩家生产的那一种 看到验收表里只有「吓人吗」一栏 公开来源 1(单例·降权)
术语.剥夺赋能 持续制造玩家感到自己有能力的状态 看到玩家全程握着能反击的手段且设计认为这是好事 公开来源 ≥2
术语.宣称与呈现不符 玩家判「出戏」的底层原因 看到玩家说「这里很出戏」而没人往下追问哪一处宣称与呈现不符 亲历 ≥4
术语.静默失效 没报错 = 不合格 看到一条只有「不抛异常」的验证 亲历 ≥5
术语.正面证据 一次真实可观察的触发记录替代「没报错」 看到交付说明里写「已修复,未复现错误」 亲历 ≥2
术语.一条反馈一个类 落成可复检的判据与断言 看到修完 bug 没往项目文档里加判据 亲历 ≥3
术语.惊觉窗口 接触不立即结束,先产生信息,给 1–1.5 秒 看到撞到她直接判死 亲历 1(单例·降权)
术语.压力导演 / 威胁计量表 合成紧张度调度,超阈值强制退场 看到「什么时候吓人」由事件表随机触发 公开来源 + 亲历 ≥2(§3.8 压力导演 + 观察间久留压力)
术语.半落地 改动只存在于工作树或计划文本 看到计划文档写了但断言页里没有对应检查 亲历 ≥2(第十五轮接手另一 agent 的半成品)
术语.给默认不给菜单 写清推荐路径与例外条件 看到待办里写着「不要用 mock 掉要测的东西」但没有给替代路径 亲历 1(单例·降权)

2 fear-design.md

条目 判据要点 事故形态(看到就要停) 源自 反复次数
§0 先确认交付的是哪种商品 验收口径换成氛围 / 主题 / 脆弱感三项各有承载物 看到一段恐怖内容被「好玩吗」判过 公开来源 1(单例·降权)
§1 剥夺赋能是引擎 玩家的动词清单里不出现输出类动词 看到设计里有一条「玩家可以打退她」 公开来源 + 亲历 ≥2(第四轮删装睡、手电翻面)
§2 工具决定玩家对自己的想象 给一件工具 = 告诉玩家你是哪种人 看到手电被写成纯照明道具,而它的收益与代价没有配对 亲历 + 公开来源 ≥2(「她不是被光吓到的」+ 余光剪影零新素材配对)
§3 题材是最怕失去什么 每个恐怖来源能指回角色最怕失去的那件事 看到威胁设计来自通用怪物库,与人物无关 亲历 1(单例·降权,BIBLE §一 林晚档案)
§4 停在不确定性的甜区 留一个玩家能靠观察解决、尚未解决的缺口 看到假线索被游戏内证据当场推翻 公开来源 1(单例·降权)
§5 jump scare 是标点不是散文 每个惊吓同时是一条永久性世界规则 看到一段惊吓撤掉后世界毫无变化 公开来源 1(单例·降权)
§6 不要线性 张力靠尺度不靠拓扑;非线性的结论要附机制解释 看到有人把「非线性更恐怖」当默认结论 公开来源 1(单例·降权)
§7 留白是节奏机制 有回落通道、硬上限、强制静默窗口 看到高压段后面直接接下一段高压 公开来源 + 亲历 ≥2(13 轮留白成文 + 压力导演退场机制)
§8 威胁计量表 合成紧张度调度器,超阈值强制让威胁退场 看到惊吓投放由事件表随机决定 公开来源 + 亲历 ≥2(§3.8 压力导演 + 观察间 >14s / >26s 两档)
§9 信息的灰色地带 允许系统有意不给全貌,但不许给假信息 看到提示描述了世界不存在的东西 亲历 ≥2(弹琴提示仅 mother.active + 锁门谎报)
§10 保持系统部分不可知 内部状态模糊化,且恢复手段要付代价 看到所有系统数值都在 HUD 上明码标着 公开来源 1(单例·降权,Amnesia 理智条是公开案例)
§11 救命道具会杀死氛围 每一个纯收益的保命手段都要过这条 看到玩家背包里有一个「无敌/脱身」道具 公开来源 + 亲历 ≥2(钥匙被设计成信息锁而非万能钥匙)
§12 资源紧缺余量优先于加敌人 缺紧张时先调余量,不是先加敌人数量 看到关卡变难的方式是「再放一只」 公开来源 1(单例·降权)
§13 首次遭遇的纪律 可逃、先听觉后视觉、位置永远可读;首触点只有两个动词 看到玩家第一次见威胁体就被必死 亲历 + 公开来源 ≥2(第九轮四条要求 + 宿舍门那课)
§14 没被看到的事件等于不存在 播报类事件需要视线条件,否则等于凭空出现 看到一段只为玩家看不见处设计的演出 亲历 1(单例·降权)
§15 给玩家甩掉威胁的地方 地图上存在可以真正脱离追击的位置 看到追击一旦开始就只能跑到底 亲历 1(单例·降权,追击丢失视线改走向最后目击点)
§16 反面:强制凑近 走廊转角强制逼近玩家视野的做法是反教材 看到设计里有「必须走过去才能触发」的门 公开来源(P.T. 案例) 1(单例·降权,项目内未犯)
§17 可复用的走廊循环三要件 走廊要有结构化信息源、壁龛分配、可重复变奏 看到一段走廊每次走内容完全一样 亲历 + 公开来源 1(单例·降权)
§18 Demo 的正确定义 Demo 是概念验证,证明机制可被发现 看到 Demo 迭代主线是「哪个数值不对」 公开来源 + 亲历 ≥2
§判据速查 每段恐怖内容指出三项承载物中的至少一项 看到一段内容三项都指不出 公开来源 + 亲历 ≥2

3 text-and-props.md

条目 判据要点 事故形态(看到就要停) 源自 反复次数
§0 元规则:文字唯一出处与权威顺序 项目里有一份「全部可见文字的唯一出处」;冲突时改字不改设定 看到一句台词在三个文件里三个版本 亲历 ≥2(BIBLE 写成唯一出处 + sync.html 四文档对账)
§1 旁白只在画面给不出信息时说话 删除检验:损失判断的删 看到旁白复述眼前陈设或复述音效 亲历 + 公开来源 ≥3(12 条去系统味、13 轮重写、20 轮 122→66)
§2 零括号 可见文本源里括号数为 0 看到 (……别抬头。) 亲历 ≥2(第十六轮 + 第二十轮终查)
§3 零标点,一句一句 每句只许一个句号 看到「我闭上眼。一,二,三……」 亲历 ≥2(第十七轮 + 第十九轮)
§4 可见文字不出现人名 名字被抹掉要用划痕、水渍画出来 看到床位卡上写着「(名字被划掉)」 亲历 ≥2(第十六轮 + 第十九轮含机构文件)
§5 不数数 计数器只留状态短语 + 音效 看到屏幕上滚动 21、22 亲历 1(单例·降权,第十六轮一次性落地)
§6 提示即按键且不许与事实不符 每条提示能指出触发它的世界条件 看到守卫为假时提示仍然出现 亲历 ≥2
§7 锁只报锁 锁相关文案不出现方位词 看到「钥匙挂在门后面」 亲历 1(单例·降权)
§8 物体上只许有它物理上真有的东西 手写件无抬头无红线无章;机构章白名单同步 看到私信上盖着红星院红章 亲历 ≥3(第六轮被推翻、第七轮重构、第二十一轮整页图)
§8.1 一旦定成原则就要普查同族 新增机构纸同步红章白名单;同类一并清掉 看到画上面还叠着一张纸、墙上字又被誊抄成一张纸 亲历 ≥2(第七轮墙就是墙、画就是画)
§9 说谎禁令 文本不许描述已经不存在的东西 看到门文案还在报一个早已拆掉的挂钩 亲历 1(单例·降权,RC 终轮同步改文案)
§10 非信息类物品必须有交互上限或条件 新加可反复触发的功能物先回答「玩家第 N 次按 F 会发生什么」 看到琴可以无限弹,且每次都给收益 亲历 ≥2(琴两回 / 八音盒一回)
§11 数字即伏笔,出处铁律 每个出现在可见文字里的数字要有出处 看到值班表楼层与玩家脚下矛盾 亲历 1(单例·降权)
§12 道具即世界:出处四问 每件道具回答它为什么在这里 看到一件道具只是「填空用的」 亲历 + 公开来源 ≥2(第七轮道具原则 + 第 21 轮整页图)
§13 纸面即画面 关键纸整页画出来;描述性红字清零 看到「站在床上睡」「湿脚印一直延伸」这类平铺的不可能事实 亲历 ≥2(第 21 轮八张关键纸 + RC 残页重写)
§14 留白总纲 台词之外的一切文字都不解释 看到旁白出现「原来 / 所以 / 这就是 / 代价是」 亲历 ≥2(13 轮留白成文 + 20 轮 122→66)

4 mechanics-and-rules.md

条目 判据要点 事故形态(看到就要停) 源自 反复次数
§0 地基:玩家说不可信 玩家吐槽机制时说的是可信度不是不好玩 看到「不好玩」被当成手感问题处理 亲历 ≥2
§1 准入闸:机制是推出来的 每个机制在映射表里找到来处 看到一条机制答不出「它对应谁的哪段经历」 亲历 1(单例·降权)
§2 连续状态:一根轴上的三个刻度 按键决定你想去哪儿,身体决定你实际在哪儿 看到三个状态各写一套规则,切换像模式切换 亲历 ≥2(第六轮 + 第九轮反转)
§3 连续量,不要二极管 底层连续,UI 只露 1–3 档,硬阈值只留给真突变 看到二极管阈值让某个键的收益全程为负 亲历 ≥2(第十五轮 C 期曲线 + 第二十二轮重构)
§4 独占收益与独占代价挂同一个变量 代价优先找零新素材的实现 看到收益通道和代价通道来自两个不相干的变量 亲历 ≥2
§5 惩罚从等待改成风险 强制静止超 1 秒要伴随位移压力 看到罚站期间威胁体不会过来 亲历 ≥2(第十一轮数三十 + 第二十二轮)
§6 碰撞不等于即死:惊觉窗口 1–1.5 秒内先产生信息 看到撞到即判死 亲历 1(单例·降权)
§7 门的双重角色 关门买时间,不是脱战 看到关门即离场 亲历 + 公开来源 1(单例·降权)
§8 演出事件默认非致命 致命后果只留给规则违规 看到一次演出直接判死 亲历 1(单例·降权,走镜半程被抓)
§9 压力导演 超阈值强制退场 看到「什么时候吓人」是随机的 公开来源 + 亲历 ≥2
§10 规则怪谈的可玩化 该章已在正文标注为自建框架 看到有人引用这一章当成有公开方法论支撑 自建框架 —
§10.1 守则 ↔ 机制 100% 覆盖且双向 覆盖率不到 100% 时覆盖率本身成了信息 看到守则 8/8 里有一条机制玩家无法自行发现 亲历 ≥3(第八轮更正 + 第九轮 + 第六轮挂钩)
§10.2 规则可破除但不可僵死 规则必须留破口,僵死的规则玩家会放弃推理 看到一条规则无论怎么做结果都一样 自建框架 —
§10.3 误导必须是有意设计的 遗留的误导要被识别出来并改掉 看到一处误导没人认领来源 自建框架 —
§10.4 谜题要有清晰边界 玩家能回答规则从哪开始、在哪结束 看到谜题的合法操作集合没有书面记录 自建框架 —
§10.5 用规则反向筛选关卡 疑似 bug 清单每条都有判定结论与理由 看到可疑现象清单里有条目没结论 自建框架 1(单例·降权)
§10.6 反向设计:先有答案 每个谜题有一行答案 + 一行排除理由 看到关卡先搭好再找解法 自建框架 —
§10.7 恐怖向谜题检查表 可在合理时间内解开——这是清单里最贵的一条 看到玩家在某个谜题前卡死 自建框架 —
§10.8 新内容让同一条规则第二次生效 新增内容额外满足「按键数不变、状态机分支数不变」 看到一件只会被看一眼的道具进了关卡 亲历 ≥2(第六轮 + 第七轮)
§10.9 规则的信息投递用倒金字塔 最重要的一条最先给,且让玩家亲身经历 看到先解释规则再让玩家体验 自建框架 —
§11 信息锁优于钥匙锁 解法要求玩家推出结论并做出身体动作 看到门禁压缩成「拿 A 开 B」 亲历 1(单例·降权,隐藏结局前置只卡剧情理解)
§11.1 隐藏层是隐藏理解 「没有门」必须是寻路断言出来的,不是注释 看到「此处无门」只写在注释里 亲历 1(单例·降权,nursery 页寻路全返 null)
§12 高潮必须由玩家动作触发 凝视不动作不触发;全程无一行提示教玩家 看到结局由纯计时凝视触发 亲历 ≥2(凝视 3.4s 自动触发删除 + 闭眼数三十动作化)
§13 线索串行、只报过去 未来的节点一条都不许出现在屏幕上 看到暂停页直接给出全部线索 亲历 1(单例·降权,第七轮用户原话「你的线索怎么能直接全给用户的」)

5 threat-ai.md

条目 判据要点 事故形态(看到就要停) 源自 反复次数
§1 章程即地基 每条章程对应一个 AI 分支 + 一个玩家可利用的漏洞 看到一个 AI 分支说不出它属于哪条章程 公开来源 + 亲历 ≥2
§1.1 致盲必须是共有属性不是职业缺陷 写成「它也是人所以怕光」,不写成「这只怪物怕光」 看到「怕光」被写成该怪物的专属设定 公开来源 1(单例·降权)
§2 不去的地方是可玩安全区 禁区由寻路不可达断言证明;里面有只属于玩家的收益 看到禁区的安全性只写在设计文档里 公开来源 + 亲历 ≥2(第十轮 nursery 寻路断言 + 观察间没有门)
§3 感知输入要少而可解释 三条输入,击杀需 ≥2 个传感器同时满足 看到威胁体靠第五条输入找玩家 公开来源 + 亲历 ≥2(第四轮删装睡 + 删 player.hidden 死引用)
§4 它看得见「你这个人」 视觉只到轮廓为止,看不见面部细节 看到她的视觉输入里塞了眼睑开合 亲历 + 公开来源 1(单例·降权,第四轮一次定案)
§5 现实的「不被注意到」条件 每个隐蔽条件都能说出现实理由 看到「站暗处就不被发现」而没有任何物理理由 亲历 1(单例·降权,第四轮把装睡换成四个现实条件)
§6 每个传感器读数都有衰减率 读数不永久累积,警觉有回落 看到玩家躲过一次之后警觉永久留在高位 公开来源 1(单例·降权)
§7 不确定度用概率累加表达 多个弱证据累加而不是单一强判定 看到「只要在同一直线上就 100% 发现」 公开来源 1(单例·降权)
§8 封堵最优解合法但要付代价 复用即代价;绝不因玩家死亡解锁感知能力 看到玩家反复用同一个死角且没有阻力 公开来源 1(单例·降权)
§9 没有反应迟钝的无脑最优解 每条反制手段旁边写着副作用 看到一条反制手段没有副作用 公开来源 + 亲历 ≥2(光照加速察觉 + 手电既逼退又暴露)
§10 位置永远可读 侧向摆动沿朝向垂直向量,不沿固定全局方向 看到她在 x=45 巡逻,光束却瞄着地图西端 亲历 ≥2(第四轮回归 + 第十一轮抓到 + round2.html 几何断言)
§11 状态结束后速度必须回落 追击结束回落到巡逻基准 看到玩家逃脱一次之后关卡永久变难 公开来源 + 亲历 1(单例·降权)
§11.1 时间常量由时钟驱动 不能逐帧累加,否则随帧率漂移 看到同一时间窗口在两种帧率下测得不同 公开来源 + 亲历 1(单例·降权)
§12 公平性 终局出生点取离玩家最远的巡逻节点 看到固定贴脸重生点 公开来源 1(单例·降权)

6 level-and-space.md

条目 判据要点 事故形态(看到就要停) 源自 反复次数
§0 地基:玩家判的是骗我 不要在「摆物件」层优化,要在收口处建立约束 看到逐件手工调悬空/灰度的清单 亲历 ≥4(13 轮悬空扫尾 + 17 轮 + 14 轮 + 20 轮)
§1 可信度五件套挂进收口 约束挂在必经函数里,不挂在逐件清单上 看到新家具需要额外操作才有接触阴影 亲历 ≥3
§1.1 接触阴影 = 防悬空的设计模式 挂在家具注册的唯一入口函数上 看到钢琴无腿、灯笼无托架浮在墙外 亲历 ≥3(第十四轮扫尾 + 第十三轮 + 悬空截图批次)
§1.2 会打开的家具必须有真腔体 五块板围出真实空腔,禁止实心箱 + 黑面片 看到拉开柜门里面是一块黑板 亲历 ≥3(RC 终轮衣柜 + 第十三轮货架 + 实体不穿透)
§1.3 一类表面一张画布 + 按世界位置取偏移 两条缺一不可;repeat 不许写死常数 看到地面在每一个门口都跳一次格线 亲历 ≥3(第二十六轮地面割裂 + 第二十一轮墙面并 + 天花 repeat 旧账)
§1.4 命中挡板一律不可见 挡板设 visible=false;要淡入淡出的保持可见 看到水池沿那幅画外面糊出一圈黑框 亲历 1(单例·降权,第二十六轮)
§1.5 装饰件一律不参与射线 纯装饰 mesh 标 noRay 看到灯罩挡住桌面交互 亲历 ≥2(第十四轮 + 第十轮 mirrorSil)
§2.1 proxy 件 尺寸与轴心与最终件完全一致 看到美术 pass 变成了重建而不是换 mesh 公开来源 + 亲历 1(单例·降权)
§2.2 建模前定死三件事 模数 / 轴心约定 / 贴图密度 看到每件模型中心轴心,拼起来角落有缝 公开来源 1(单例·降权)
§2.3 模数从玩法反推 最小门洞 / 走廊 / 层高都能从玩法数值推导 看到走廊宽度先按好看定下再和玩法谈判 公开来源 1(单例·降权)
§2.4 先画连接矩阵 每一格都有结论 看到建了 20 个件才发现 kit 转不了弯 公开来源 1(单例·降权)
§2.5 先做基础件不要先做变体 基础件要压力测试:卡人 / 多层 / 间隙 看到变体先做完才回头验基础件 公开来源 1(单例·降权)
§2.6 误差累积 所有模块同一套导入设置 + 尺寸回归断言 看到二十件接起来走廊对不齐 公开来源 1(单例·降权)
§2.7 trim sheet 是小团队的关键杠杆 材质实例数压到很低;模块做双向 看到贴图集按件各画一张 公开来源 1(单例·降权)
§2.8 信任块的注意力预算 先投建筑,把注意力从少的小道具上引开 看到全部精度都花在小道具上,没有一处值得相信 公开来源 1(单例·降权)
§3 道具可信度先答因果 逐条答「怎么塌的 / 有没有水流过」再摆物体 看到道具被撒上去而不是被推导出来 公开来源 + 亲历 ≥2(第七轮道具原则 + 第 21 轮整页图)
§3.1 互证:讲一个故事不叠层 进入一个空间讲一个故事,并给玩家休息 看到商店被堆满商品而目标是展示匮乏 公开来源 1(单例·降权)
§3.2 灯光当注意力遮罩 在热点上压阴影把注意力引回该看的地方 看到最抢眼的东西恰好不是叙事焦点 公开来源 1(单例·降权)
§3.3 引导用「看上去就不通」的物理阻挡 不存在靠 HUD 箭头承担的引导 看到玩家需要箭头才知道往哪走 公开来源 + 亲历 ≥2(第九轮门缝光 + 会扫的灯替掉箭头)
§4 门的工艺清单 六条:贯通墙厚带碰撞 / 贴扫掠侧 / 填满洞口 / 碰撞跟门板 / 转置正确 / 显式声明扫进哪侧 看到玩家在离门板一米处撞隐形墙,或门开进墙里 亲历 ≥5(初版门方向错 + 第十九轮贴合 + 第二十轮重建 + 洗浴间隔间 + 洗手台堵门洞)
§5 朝向与朝向缺失 板子必须给朝向,不许靠默认值 看到接待台上的登记簿侧着放,谁也不面向 亲历 ≥3(board 无 ry + desk 转 90° 碰撞失真 + 货架转 π)
§6 反射面 反射面里的东西必须放在反射面之前一侧 看到剪影在自己的镜子背后,逻辑却全对 亲历 1(单例·降权,第十轮)
§7 尺度与比例只能靠截图 靠推理看不出来,靠截图 看到「感觉比例不对」但没人出图 亲历 + 公开来源 ≥3(像素级亮度实测、截图目检批次)
§8 只在近处成立的东西要在真实触发点目检 shot rig 必须有一个机位站在真实触发点上 看到 3.3m 外的截图里读不出剪影,而真实触发点是 1.4m 亲历 1(单例·降权,第十轮)
§9 风格化低多边形是一组耦合约束 面数 / 贴图 / 光照是一组一起动的参数 看到减面数之后阴影一起坏掉 公开来源 + 亲历 1(单例·降权)
§10 反 backtracking 回到旧区域必须有新变化,否则玩家不会回去 看到玩家回旧房间只是为了确认没漏东西 公开来源 + 亲历 ≥2(宿舍重做 + 线索串行)

7 verification-and-forensics.md

条目 判据要点 事故形态(看到就要停) 源自 反复次数
§0.1 把玩家的话翻译成缺陷类别 反馈读成类不读成条目 看到把「这里很出戏」直接当成一处修补 亲历 ≥3
§0.2 「按 F 没反应」拆成三个 bug 几何不可达 / 可见性为零 / 入口生命周期只挂一瞬间 看到第一案就去查输入绑定 亲历 ≥3
§0.3 承认「全绿」不等于「能玩」 只读逻辑状态的断言会漏掉界面盖住演出 看到 e2e 全绿而画面不对 亲历 ≥3
§0.4 先怀疑探针,只怀疑一次 量到「机制失效」之前先验坐标系与状态假设 看到直接改游戏阈值 亲历 ≥7
§1.1 反馈形态 → 真实问题类型 → 第一动作 每一类反馈有固定的第一动作 看到每次反馈都从「读一遍全部代码」开始 亲历 ≥2
§1.2 一轮试玩该采集什么 采集清单要固定,问题要问开放式的 看到试玩只问了「好玩吗」 亲历 + 公开来源 ≥2
§1.3 反馈进场的形式 反馈可能是一张截图而不是一句话 看到用户只发图而没人先拉图看 亲历 ≥3(第九轮四张截图 + 第二十轮四图 + RC 逐条实机回报)
§1.4 收尾纪律 报覆盖范围 + 声明盲区 看到收尾只写「已修复」 亲历 ≥3
§1.6 反面做法 不做一次性修复 看到 bug 只改了代码没加判据 亲历 ≥3
§1.7 一轮收尾的固定模板 模板化收尾,避免漏项 看到收尾结构每次都不一样 亲历 1(单例·降权)
§2 静默失效五形态 读而未写 / 哨兵未初始化 / 默认回落覆盖断裂 / 接线认错对象 / 依赖实现碰巧正确 看到一条「已实现」的机制实际从未触发过 亲历 ≥5
§2.6 正面证据原则 任何「功能存在」的断言必须由一次真实触发支撑 看到「没报错」被当成合格判据 亲历 ≥5
§3.1 把现象写成可测量的量 写不出这个量说明还没理解问题 看到「照不亮」被直接改成参数 亲历 ≥3
§3.2 亲历:手电「照不亮」 写成八个方向的照度表才现形(衰减在设定距离直接归零) 看到 10m 外必然死黑而没人量过 亲历 ≥3(连续三轮反馈)
§4.1 判决实验 构造只差一个变量的 A/B/C,不猜因果 看到改一个参数看现象变没变就下结论 亲历 ≥2(torch.html 加第三格)
§4.2 同机位 A/B 两侧同机位,避免构图差异干扰 看到两张不同机位的图被拿来对比 亲历 ≥3
§4.3 像素级断言优于存在性断言 比底色梯度、钉孔暗点,而不是比「没报错」 看到断言只检查对象存在 亲历 ≥2(quests.html 三种纸 + walls.html 底色聚类)
§4.4 枚举与聚类 枚举全部实例并按可观察量聚类 看到抽样三件就下结论 亲历 ≥2
§4.5 写入间谍抓栈 对可疑字段装 Object.defineProperty 抓写入栈 看到 NaN 出现后只能从头猜 亲历 1(单例·降权,第十二轮 nanspy)
§4.6 先热身再测泄漏 renderer.info 首次登记会跳 看到「八音盒 +154 几何体」被判成泄漏 亲历 1(单例·降权)
§4.7 量到机制失效之前先怀疑探针 与 §0.4 同一纪律的取证侧表述 看到阈值被按探针读数反调 亲历 ≥7
§5 探针假象清单 假干净 / 假回归 / 假全绿等 17 条 看到验收环境是 SHOT 模式却拿它判音频 亲历 ≥2(音频层藏 12 轮 + 暂停菜单盖演出)
§6.1 每页写机器可读结果 结果写进 DOM 再抓,不靠看图 看到验收结果靠人眼看截图 亲历 ≥3
§6.2 把「通过」当提交门 不通过不提交 看到带着 FAIL 提交 亲历 ≥2
§6.3 未证实的改动不提交 先跑测试再提交 看到接手半成品直接提交 亲历 1(单例·降权,第十五轮)
§6.5 临时探针 → 实证 → 修 → 转正常驻回归页 探针的归宿是变成常驻页 看到取证脚本用完就丢 亲历 ≥2(stairs.html / walls.html / dorm.html)
§6.6 断言跟着设计走 旧断言 = 过期文档 看到设计改了旧断言还在门里 亲历 ≥3
§6.7 文档与实现里的硬编码数字对账 逐条对,不抽查 看到新增结局忘了改文档里的「达成结局 N / 4」 亲历 ≥2(sync.html / endcard.html)
§6.8 派生产物与源码逐条对账 打包产物必须与当前代码同源 看到发布用的包比源码旧 亲历 ≥2
§6.10 时间纪律 逐页虚拟预算 + 真实超时随预算放大 看到单页跑满 480s 还被当成正常 亲历 ≥2
§6.12 不要在验收里 mock 掉要测的东西 桩掉 Post.render 会让 DOM 断言永远读到旧值 看到验收桩掉了要测的那一层 亲历 1(单例·降权,RC 终轮)
§7.1 卡死的统一形状 状态接过去,释放只写在顺利路径 看到 cutLock 只在顺利路径上清 亲历 ≥4
§7.2 四道网 锁预算 / 停摆看门狗 / 自救键 / 逐帧熔断 看到熔断器让画面冻结而不是降级 亲历 ≥3
§7.5 循环外必须有安全网 独立线程做心跳监测 看到四道网全在主循环内 亲历 1(单例·降权)
§7.6 时序回调必须可取消 带代 Token 看到回检查点后旧结局链把上一张卡漏进新卡 亲历 ≥2(RC 第 24 轮 + 结局链代币)
§7.7 诊断页要自己说话 打印锁未交还次数 / 自愈次数 / 最坏一帧房间 看到报障只有一句「卡死了」 亲历 1(单例·降权)
§8 数值工程纪律 NaN 闸 / 初值 / 跨形状念字段 / 单一初始化出口 看到 Math.max(0, NaN) 当成防护 亲历 ≥4
§9 真人才能给的东西 划清边界,不自己代答 看到用自动断言替代真人试玩结论 亲历 ≥2
§10 交接文档该长什么样 首句定调 / 权威性分层 / 阅读顺序 / 数字带来源 / 决策史当资产 / 坑清单按类分组 看到坑清单没有判别条件 亲历 ≥2

8 accessibility-and-care.md

条目 判据要点 事故形态(看到就要停) 源自 反复次数
§0.1 无障碍是连续滑杆不是开关 任何选项若只有关/开两态且不能中途改变,先判不合格 看到「无障碍模式」是一个总开关 公开来源(XAG 108) 1(单例·降权,项目内未犯)
§0.2 不做「无障碍版恐怖游戏」 评审把「关掉惊吓」当默认解法即判不合格 看到低闪烁模式直接删掉频闪与巨响 公开来源(EA / Dead Space) + 亲历 ≥2(低闪烁模式降级而非移除)
§0.3 警示画面不能替代闪烁管理 XAG 118:多数玩家首次发作前不知道自己光敏 看到只有开场 splash 警示就结案 公开来源(XAG 118 / GMAG) 1(单例·降权)
§1.1 闪烁的定义与阈值 写清出处与适用边界 看到自定义阈值不说出处 公开来源(GMAG / WCAG) 1(单例·降权)
§1.3 命名禁令 禁止「epilepsy safe mode」类命名 看到设置项叫「无癫痫模式」 公开来源(GMAG 原文) 1(单例·降权;项目内作「低闪烁模式」未犯)
§2 GMAG 分类骨架 四类障碍 × 三层实施级 看到无障碍工作没有按受益人数 × 差异 × 成本排序 公开来源(GMAG Why and how) 1(单例·降权)
§2 平台披露机制 Steam 有 Accessibility Feature Wizard,但它是自愿披露 看到把标签缺失说成「游戏没有该功能」 公开来源(Steamworks 文档 / itch 平台现状) 1(单例·降权)
§3 听觉信息与视觉替代 每个关键物件/事件的声音彼此可区分 看到两个关键事件共用同一段提示音 公开来源(GMAG Basic) 1(单例·降权)
§4 字幕与音频线索的文字化 字幕按目标年龄语速裁剪 看到字幕语速按成人读速设定 公开来源(GMAG Advanced) 1(单例·降权)
§5.1 难度 = 玩家能力 提供多档难度且中途可改不丢进度 看到难度只在开头选一次 公开来源(XAG 108) 1(单例·降权)
§5.3 关掉某系统后口径要一致 关掉/调低系统后挂钩的成就与统计不能前后不一致 看到关掉某系统后成就文案还在说它 亲历 + 公开来源 ≥2(收集三处口径同源 + 断点续存落盘)
§6 镜头运动与感官负荷 避免突然未预期的移动;提供关闭背景运动 看到镜头强制晃动且不可关 公开来源(GMAG Advanced) 1(单例·降权)
§7 健康与合规提示的呈现层级 提示下沉到设置页与商店页,不堆在主菜单 看到主菜单页脚堆着耳机 / 闪烁 / 键鼠两行 亲历 1(单例·降权,第二十六轮改成一行免责声明)
§8 恐怖游戏无障碍的特殊矛盾 用替代通道保留恐怖感,不是移除 看到为了合规把核心手法直接删掉 公开来源 ≥2
§8.3 健康保护而非只有无障碍 提供保护而非只提供便利 看到只在设置深处提到风险 公开来源 + 亲历 ≥2(opt-note + itch 玩家须知)
§附 未找到高质量材料的清单 未找到即标注,不编造 看到引用了查不到的 itch 官方规范 公开来源(itch 平台现状观察) 1(单例·降权)

9 appendix-threejs-web.md

条目 判据要点 事故形态(看到就要停) 源自 反复次数
A.1 暂时性死区(TDZ) 关卡构建前半段调用的东西必须是函数声明 看到启动即黑屏,被提交门当场拦下 亲历 ≥5(paperMat、renderSaveLine、hidden、PAPER_KIND、办公桌灯)
A.2 拾取射线不检查 visible 隐藏的装饰 mesh 会挡掉后面真正的交互物 看到盥洗镜常年点不中 亲历 ≥2(第十轮 mirrorSil + 灯罩挡桌面)
A.3 隐形挡板必须 visible=false 不能只靠 opacity:0;要淡入淡出的保持可见 看到画外面糊出一圈黑框 亲历 1(单例·降权,第二十六轮)
A.4 灯不要挂在会被 visible 切的组里 用 intensity=0 表达「不在场」 看到灯进出场景导致全材质重编译、肉眼卡顿 亲历 ≥2(第九轮 + 第十二轮排查)
A.5 着色器字面量必须递增、mix() 参数顺序要对 字面量倒置是未定义行为,恰好在某个驱动下看着对 看到屏幕中线那条线——smoothstep 倒置 + mix() 反了叠出来 亲历 ≥3(本作已三次栽在这)
A.6 emissive 太亮掉进后期抖动带 一块规则的青色圆点阵,一眼假 看到落地镜在截图里变成 LED 板 亲历 1(单例·降权)
A.7 程序化贴图一类表面一张画布 每片按世界位置取 offset;repeat 不许写死 看到地面在门口割裂 亲历 ≥3(第二十一轮墙面 + 第二十六轮地面 + 天花旧账)
A.8 drawImage(canvas) 读回永远是黑的 亮度/像素只能靠截图或 readPixels 看到用 canvas 读回判亮度,全是 0 公开来源 + 亲历 1(单例·降权)
A.9 改着色器前先证明它编译成功 programs.length + getError()===0 看到 GLSL 语法错让整个后期静默失效 亲历 ≥2
B.1 每帧状态必须初始化 新加每帧判定字段一律写进状态字面量并给初值 看到 wakeT 没初始化,开局到第一次死亡之前 Q/E 永远睁不开眼 亲历 ≥4
B.2 同一状态多个初始化点会各写各的 同一个状态只留一个初始化出口 看到 api.checkpoints.x = ... 被后面的字面量覆盖 亲历 ≥2
B.3 接管状态要有持有预算 不能只在顺利路径释放;看门狗从不触发才是通过条件 看到 onCaught 只清 G.cut 留着 cutLock,死亡期间键盘锁死 亲历 ≥2
B.4 「看门狗全绿」不等于「没有停摆」 UI 层可见性状态也要有断言 看到 e2e 全绿,而暂停菜单盖在数台阶演出上 亲历 ≥2(第九轮回归 + 第十一轮 stairs.html)
B.5 共享 DOM 的状态机逐字段重置 重入时所有字段都要清 看到「清空」只删了 localStorage,本局计数还记着 亲历 ≥2(清空四样 + 结局播放器四层重置)
B.6 结局链的定时器必须带代币 每次触发掐断上一条链 看到回检查点后旧链把上一张卡的营销层漏进新卡 亲历 ≥2(第 24 轮 + RC rc6)
C.1 记住 yaw 符号约定 朝西=π/2、朝东=-π/2、朝南=π、朝北=0 看到探针按直觉写 π,摆出反向姿势 亲历 ≥2
C.2 「她在看我吗」一律用点积 指向目标的向量与 forward 直接点积,别随手取负 看到背对镜子才累计凝视,人眼盯着看时剪影一动不动 亲历 1(单例·降权,第十轮)
C.3 反射面里的东西放在反射面之前一侧 落点按「镜头在哪一侧」算 看到剪影在 NX2-0.05 而镜面在 NX2,永远看不见 亲历 1(单例·降权)
C.4 「藏在柜子里」必须真的留出腔体 同 A / level §1.2 看到拉开柜门只有一块黑面片 亲历 ≥3(第十三轮货架 + RC 终轮衣柜)
C.5 把灯挂到场景根后旧行语义全翻转 修复后语义必须重推一遍 看到她在 x=45 巡逻,光束瞄着地图西端 x≈0 亲历 ≥2(第四轮 + 第十一轮)
C.6 搜索循环的哨兵初值以空值起步 let ch='v' + !ch 恒假短路 看到十间房的墙全是走廊灰,逻辑「看起来全对」 亲历 1(单例·降权,第十一轮)
C.7 加房间要改三处 RAW_MAP / isFloorCh / 两处遍历字符集 看到房间存在但没有地板、走不进去 亲历 1(单例·降权)
C.8 网格旋转 π 不换轴 判转向用 sin 值的绝对值与 0.5 比较 看到五排货架碰撞全部转置,能从两头穿进去 亲历 1(单例·降权,第二十轮)
C.9 门的 alongX 语义与几何相反 「通道沿某轴穿过这扇门」意味着门板横跨该轴 看到一扇门开进墙里、一扇开进房间 亲历 ≥2(初版 + 第二十轮洗浴间隔间)
C.10 墙体合并必须在门洞格不砌墙的前提下做 合并逻辑要考虑门洞 看到门洞被墙填死 亲历 1(单例·降权,初版「门格砌墙」致命缺陷)
C.11 纸片要有独立命中体 与它穿过的表面相交会糊出暗边 看到水池沿半埋的挡板把画框出黑边 亲历 ≥2
D.1 逐帧断言先打渲染帧回调 shim 并确认它真在出帧 看到 uniform / 眼睑这类每帧量停在初始值 亲历 ≥3(FEEDBACK 记了三处同源误判)
D.2 单帧计数与绘制计数分开测 drawN 跟不上 frameN = 有帧抛异常把渲染吃掉 看到帧数在涨而绘制数不涨 亲历 ≥2
D.3 改完代码要换缓存旁路参数 file:// 与 iframe 会被缓存骗 看到截图是改之前的 亲历 ≥2(doorshot.html MODE 与 cb 参数)
D.4 headless Chrome 路径与预算 要 Windows 形路径;别把路径塞进变量再 "$CH" 展开 看到整批 NORESULT 或「截图没生成」而不报错 亲历 ≥2
E.1 zip 条目必须用正斜杠 — 看到 itch 上路径全 404 亲历 1(单例·降权)
E.2 改完代码必须重跑打包脚本 — 看到发布用的包比源码旧 亲历 ≥2
E.3 HTML5 iframe 里没有平台级退出/重开 结局必须自带三层出口 看到结局卡没有出口,玩家只能刷新 亲历 ≥2
E.4 剧情与营销不许同屏 营销层在结局之后分层出现 看到「达成结局 N / 4」和剧情句挤在一起 亲历 ≥2(第 24 轮删宣发行 + 第 20 轮分层)
E.5 视口 960×540 进验收页当硬约束 实测内容高度进预算 看到首行在屏上方外、按钮在屏下方外 亲历 1(单例·降权,结局卡 691px)
E.6 结局按钮三层出口 出口 position:absolute 钉死,多次采样位置完全相同 看到逐行淡入的字把出口按钮顶走 亲历 1(单例·降权,RC 终轮)
E.7 合规文案下沉 剧情页不放免责声明 看到结局卡底部挂着空的宣发行壳 亲历 ≥2
E.8 清空类操作要列全字段清单 存储 + 运行态 + 展示态一起清 看到「清空」之后 HUD 计数还记着 亲历 ≥2
E.9 跨局持久化按「永久资产」设计 读到即落盘;同一事实只留一个动词 看到菜单 14/19、暂停页 15 份、「还缺 4」与「还缺 5」同时成立 亲历 ≥3

10 高强度条目与覆盖审计

高强度条目(亲历且反复 ≥3)

按反复次数降序。这十几条是这个领域最高频的真实问题,优先按它们做检查;其余条目的存在不意味着它不重要,只意味着它在这个项目里没有同等多的样本。

# 条目 反复
1 先怀疑探针,再怀疑游戏——只怀疑一次(SKILL 六.3 / 验证 §0.4、§4.7) ≥7
2 朝向与几何语义:门 / 货架 / 桌 / 板 / 挡板(空间 §4、§5 / 附录 C.9、C.8、C.1、A.3) ≥5
3 TDZ:前半段调用的东西必须是函数声明(附录 A.1) ≥5
4 静默失效与正面证据(SKILL 六.1 / 验证 §2、§2.6) ≥5
5 卡死统一形状:释放只写在顺利路径(SKILL 六.4 / 验证 §7.1) ≥4
6 数值字段初值必须是数(SKILL 六.9 / 附录 B.1) ≥4
7 NaN 不受钳制保护(SKILL 六.8 / 验证 §8) ≥3
8 「按 F 没反应」拆成三个不同 bug(SKILL 三.4 / 验证 §0.2) ≥3
9 真腔体:实心箱 + 黑面片假装内部(空间 §1.2 / 附录 C.4) ≥3
10 悬空 / 接触阴影挂进收口(空间 §1.1 / 空间 §0) ≥3
11 规则 ↔ 机制双向覆盖(SKILL 一.2 / 机制 §10.1) ≥3
12 一类表面一张画布 + 按世界位置取偏移(空间 §1.3 / 附录 A.7) ≥3
13 断言跟着设计走(SKILL 八.6 / 验证 §6.6) ≥3
14 测量先于调参(SKILL 六.2 / 验证 §3) ≥3
15 物体上只许有它物理上真有的东西(SKILL 四.8 / 文本 §8) ≥3
16 数字口径只留一个数据源(SKILL 三.3 / 附录 E.9) ≥3
17 逐帧断言先打渲染帧回调 shim(附录 D.1) ≥3
18 旁白只在画面给不出信息时说话(SKILL 四.1 / 文本 §1) ≥3
19 关门买时间不是脱战 / 门的朝向与碰撞(空间 §4) ≥3

覆盖审计

计数规则:一行只归一档,按「源自」列的首要标注计(「亲历 + 公开来源」这类双标注计入亲历,因为它的论证基础是本项目的事故)。

篇 条目数 亲历 公开来源 自建框架 其中单例·降权
SKILL.md(六章 + GOTCHAS + 术语) 66 53 12 1 20
fear-design.md 20 7 13 0 11
text-and-props.md 16 16 0 0 4
mechanics-and-rules.md 24 15 1 8 8
threat-ai.md 14 3 11 0 9
level-and-space.md 26 12 14 0 14
verification-and-forensics.md 39 39 0 0 7
accessibility-and-care.md 16 2 14 0 12
appendix-threejs-web.md 39 38 1 0 11
合计 260 185 66 9 96

说明:

  • 公开来源集中在两篇。accessibility-and-care.md 几乎整篇是标准与平台文档(GMAG / XAG / Steamworks / itch),项目内只有低闪烁模式、健康提示下沉、收集口径一致三条亲历。fear-design.md 反过来,绝大部分结论来自工作室复盘与论文,项目内只提供了首遇纪律与走廊循环两种实现形态。这两篇的证据强度性质完全不同:前者是「照标准执行」,后者是「照他人结论推断」。
  • 自建框架全部集中在 mechanics-and-rules.md 第 10 章,共 9 条已标「自建框架」,另有该章首条 §10 本身即框架声明;已在正文显式标注「自建框架」并在 SKILL.md 附:来源与可信度 里写明「规则怪谈的可玩化没有高质量公开方法论」。使用这一章时按推导读,不要按「行业共识」引用。
  • 单例率 37%(96/260)。主要集中在 level-and-space.md 第 2 章灰盒纪律(7 条全部单例——项目用的是逐件建模,没有灰盒 kit 实践)与 accessibility-and-care.md(该篇的纪律是标准驱动的,不需要事故来证明)。这两处的单例不代表纪律弱,只代表它们是「照标准做」而不是「踩过坑才写」。

孤儿条目检查(存在但找不到对应事故):

  • mechanics-and-rules.md §10.2、§10.3、§10.4、§10.6、§10.7、§10.9 共 6 条属自建框架,无一手事故可指认——已在正文标注,不是隐藏的孤儿。
  • SKILL.md 二.1、二.3、二.4、二.6、二.7 共 5 条亲历档但项目内无对应事故,它们实际支撑来自公开来源;标为「单例·降权」是因为在本项目里只发生过一次或零次。其中二.4(惊吓是标点)与二.7(不要线性)在项目内零次——本作走的是 26 轮里惊吓密度不高、空间线性推进的路线。
  • 其余条目全部可指认到 HANDOVER.md 坑清单、FEEDBACK.md 各轮结论、BIBLE.md 成文规则,或三份会话导出的用户输入段。无未标注的孤儿条目。

反过来说,一处覆盖不足值得记下来:项目内没有任何一次「情节叙事本身出戏」的反馈——三次记录了「玩家像水一样流向阻力最小的路径」,但那是 Demo 定位问题,不是叙事问题。所以 SKILL.md 里关于叙事与线索投放的纪律(机制 §13、fear-design §17)证据最薄,属于从别处借来的结论,不是这个项目教出来的。