- design 件只装结论:v2 骨架(设计目的/系统范围/核心循环/领域章节/依赖与输出/P0 闭环/P1·P2 后置/调参表/GWT 验收/版本历史),AC/EC/OQ/义务台账编号全部保留 - 新建 design/gdd/analysis/ 13 份推演件:候选取舍/公式推导/数值锚定论证/已裁决争议按问题节组织,文末附去向映射表(零丢失审计) - v1 原文备份于 design/gdd/legacy-2026-09-14-v1/(13 份) - systems-index 文档树补 analysis 目录导航行 - gdd_lint 全量 PASS(14 文件 0 不通过);迁移零裁决——19+1 项待拍板已登记各 analysis 开放问题区
21 KiB
A4 地形变异 设计推演
状态:concluded · 本文只装"为什么"——design 件只收本文的结论。 修订时新增问题节,不删旧节(历史即依据)。 来源注记:本文由 a4-terrain-variation.md v1.0-lean(2026-09-13 定稿)按两件套 v2 标准迁移生成——原文的公式推导论证、数值锚定论证、候选方案取舍、体验锚点论证与已裁决争议集中于此;规则(Rule)/边界(EC)/验收(AC)/义务/开放问题(OQ)编号与原文一致,零规则变更。
问题 1:变异为什么是"配置表一行声明 + 零专属代码",而不是每种变异一套专属逻辑?
广度分析
- 候选 A:每种变异一个硬编码类/分支——实现直观;但每加一个变异都要改连锁/清图/结算代码,行为组合指数膨胀,"如果是雾格就……"分支必然渗入 A2 热路径。
- 候选 B:数据驱动框架——变异是 VariationTable 一行四声明(身份/信息规则/布置约束/作用域),行为改变发生在"信息规则 × 既有系统行为"交集里,框架自身零运行时逻辑;加变异 = 加数据行。
- 候选 C:变异做成地形类型 / 地形成本修饰——与 A3 价目钩子耦合,启用须回 A3 重议 per-cell 成本接口;MVP 明确搁置(A3"地形成本修饰"钩子挂起)。
深度分析
零特判(Rule 4)能成立的先决条件是构造性的:布置约束(Rule 3)保证雾里没雷、没 0 格,于是连锁不传播、数字恒真、旗恒不中——既有系统的"无视"不需要任何补丁,雾格能被"无视"靠的正是这条布置约束。框架的自洽性还要防未来行击穿:跨字段校验 hide_numbers⇒safe_nonzero 的存在理由是"级联止于雾格"是 safe_nonzero 的寄生结论而非 hide_numbers 的本性——若无此校验,未来 hide_numbers + any 行会静默击穿 EC4(连锁不再止于雾格)。
综合判断
采纳候选 B(Rule 1/8)。扩展纪律两条:需要新规则字段时走 D2 接口漂移规则同步回写本 GDD 与 D2,禁止表外私加字段(Rule 9);scope=global 只保证枚举位存在、不预写语义(归 C3)——语义未定稿前 global 行只触发 warning 不致命(枚举域内合法数据、运行期无消费者故无行为),C3 定稿语义并落地前不得移除该 warning。
问题 2:迷雾的切面为什么是"信息剥夺 + 结构补偿 + 零特判"?清图判定为什么必须含雾格?
广度分析
- 候选 A:清图判定豁免雾格(雾当可绕过的支线)——经裁决否决(rev1 blocking ②):违反零特判承重规则,且会把"绕开走"变成虚假自由。
- 候选 B:雾 = 清图必经段 + 剥夺数字 + 无补偿——纯负体验税(纯 AP 税),触发反向护栏(被骗感)。
- 候选 C:雾 = 清图必经段 + 剥夺数字 + 结构补偿(雾形携带雷簇位置)+ "绕开走"的真实形态 = A3 停手/弃图风险退出——现行。
深度分析
藏的账目只有一样:未开雾格的数字(Rule 5)。补偿不是发放的奖励而是结构送的:每个雾格必邻区外雷、k 格雾区外环必含 ≥⌈k/8⌉ 雷、雾边雷候选域收缩——"雾边 = 推理锚"。rev1 blocking ① 曾发现可推理率对账公理自相矛盾 + Rule 5 被单向建模(只算寂静减项),改判双向净效应、禁单向补偿,义务形式为 BoardGenTable 域内可判定谓词、落 A1 生成端。玩家幻想同步改诚实版(原"三选项"失实):雾是清图必经段、绕开 = A3 风险退出、买情报标注 A5 期;P3 从"雷险载体"降格为"信息切面"——雷险维度由岩浆/冰冻承接(垂直切片起)。
综合判断
采纳候选 C。"跨雾推理"措辞降调为"常规推理在雾边的延伸、非独立机制"(rev1 顺带修订)——防止被读成第二套推理系统,其体验内核是"隔着雾也算出来了":被雾边已知约束放大的常规推理;进雾每一步是承诺而非计算,与情绪锚点(问题 6)一致。信息剥夺边界(藏数字 / 不藏边界 / 不藏已开格信息 / 不藏奖励入库)是玩家信任的账面:多藏一样就违反 P1 诚实边界,少藏一样就失去变异意义。
问题 3:承重数学怎么推导?厚度度量为什么钉死"3×3 窗口谓词"?F1 为什么是集合谓词?
广度分析
- 厚度度量候选:"直线连续行程 ≤2"(直觉读法)vs"任意 3×3 窗口非全雾"(可判定谓词)——反例:宽 3 对角雾带无任何全雾 3×3 窗、完全合法,按行程读法会误拒合法构型,故钉死窗口谓词。
- 面积上界候选:全局拍一个占比上限 vs 从布置约束推导必要上界 f ≤ 8×雷密度——后者给出与雷密度联动、可判定的参数域硬边界。
- 外环雷候选:不论证(雾只是盲区)vs 证明 ⌈k/8⌉ 下界——后者是"雾边 = 推理锚"与"禁单向建模"的数学根据。
深度分析
推导三步(公式本体保留于 design 承重数学节):非 0 安全格 ⇔ 8 邻域含 ≥1 雷且雷不可能为雾格 ⇒ 每个雾格 x 存在非雾雷邻居 m ∈ N₈(x)。由此:① 3×3 全雾窗口的中心格 8 邻全雾 ⇒ 8 邻无雷 ⇒ 中心为 0 格,与约束矛盾 ⇒ 任意 3×3 窗口非全雾 ⟺ 厚度 ≤2(雾区恒为雷集切比雪夫 1-膨胀出的边界带);② 每雾格 ≥1 雷邻居、每雷至多作 8 个雾邻格的见证 ⇒ f ≤ 8×|M|;③ k 格雾区外环承载全部见证、外环每格至多邻 8 个雾格 ⇒ |外环雷| ≥ ⌈k/8⌉。F1 取集合谓词形式:unlock_level 直接整数比较——它是定义表列、非进度表行键,无 D2 R1 floor 解析;biome_tag 空集 = 通配;空池合法是设计态(level 1 静默普通图),不是错误态。
综合判断
窗口谓词为唯一判定口径(登记 A1 验收⑫);f ≤ 8d 为参数域必要上界、EC10 参数域拒绝与之联动;⌈k/8⌉ 支撑 Rule 5 增益侧与验收④"禁单向建模"。预算侧同理只做可判定谓词:雾占比上限 × 可推理率下限联动不等式(EC10)。
问题 4:雾格成本为什么是两态?预算为什么是"增量构成"?条款 5 对账为什么是三腿入账而非"消解"?
广度分析
- 成本候选 A:雾格全部全价——半假(rev1 blocking ③):链可达雾格经邻接 0 格连锁免费开出(EC4),全价口径系统性高估雾成本;但高估方向是预算安全侧(level-designer 评审发现),故作为玩家侧保守启发式保留教学价值(见问题 6)。
- 成本候选 B:两态口径(链可达免费 / 链不可达全价 dig_ap_cost)——现行。
- 预算候选:早期版本用"≤ 轮数上限 × ap_per_round"不等式——"轮数上限"在 A3 契约无定义、恒真空转,废弃;改增量构成:雾致预算增量 = 链不可达雾格数 × dig_ap_cost(量纲闭合:格 × AP/格),设计期聚合核算、违例动作 = 修正参数(非逐板运行期强制)。
深度分析
A3 F1 条款 5(清图 vs 弃图支配性)对账:雷险腿消解(雾区无雷、不产生 50/50 赌雷——"消解"声称仅对此腿成立);信息腿双向(雾边寂静减少推理原料推高弃图 × 雾边推理锚增益方向相反——净效应实测、非定理:"50/50 减少可能反向利好清图"成立,"必然推高弃图"不采纳);AP 腿推高弃图(链不可达全价无连锁折扣,敌方结算时间税随之上行)。三腿入账 = 构成变化而非消解。护栏构造:若雾板下界抬升不设防,逐板奖励差分 × 最低雾出现率 × 8 RAP 刷新恰好构造 A3 OQ6 明令防的"弃图刷雾板"刷新钓鱼环——故 B1 闭合须雾板/无雾板两态分别验算支配性不等式(A3 provisional 验算只做过无雾图形况)+ 雾板净当量优势带上界 + 防钓鱼两条方向性护栏,playtest 弃图率/完成度指标雾板分层(回执 A3 OQ3——聚合指标会被雾板污染或反向掩盖)。
综合判断
两态 + 增量构成为唯一口径(registry fog_ap_note 同步登记);该增量对条款 5 仅是可行性输入、不提供雾成本显著性保证——局限如实登记。B4 三条定价硬约束是"里面有价值"契约的兜底(两条防税下界 + 一条防福利上界):level 2 首发关小图低密、链免开占比结构性最高,"链免开 + 锚上浮"双白拿的福利板化与"雾 = 免费奖励"先验(后者会在后期雾变厚、全价残段出现时恰触发被骗感护栏)必须同时防;①是反淹没下界、不保证 per-AP 平价(per-AP 检查归 B1/B4 对账);②上浮口径 = 链不可达雾格数 × dig_ap_cost、与定价成本同分母(防原"雾面积"分母脱钩),上浮形态须为关卡层常量或受防钓鱼不等式约束。
问题 5:出生区排除为什么取保守上界?雾区邻接出生区为什么合法?
广度分析
- 候选 A:按 A2 运行期展开定义精确排除——原稿曾预设 A2 未定义的 flood-fill 传播行为(rev1 blocking ⑤),越权定义他系统行为,被否。
- 候选 B:生成期确定性计算保守上界:出生 3×3 经 0 格连锁 flood 闭包再外扩 1 格——任意 A2 展开定义的超集,只大不小——现行。
- 候选 C:只排出生 3×3 本体——"开局预开雾格"与"开局即瞎"风险残留。
深度分析
保守上界把 Rule 7 与 A2 的展开定义解耦:初始展开是否 flood-fill 传播归 A2 定稿、A4 不预设——无论 A2 最终如何定义展开,开局都不可能预开雾格(EC3 邻接合法的"无害化"论证:约束谓词 = 出生 3×3 格集及其生成期可计算的初始展开可达域内无变异格,邻接本身不构成违反)。代价是至多多排除一圈格,布置侧可忽略。A2 侧保留回验义务:挖掘侧实际展开域 ⊆ 生成侧排除域——"构造上不可能"仅在超集关系下成立。叠加"初始展开无奖励"(定稿口径,优先于连锁入库语义)构成双保险。
综合判断
采纳候选 B。防御目标两个(开局即瞎 / 开局预开雾格),用超集排除 + 无奖励双保险一次覆盖,且不欠 A2 任何行为定义债——正确性收益是构造性的,灵活性成本为零。
问题 6:情绪锚点为什么是"权衡感"?呈现与教学为什么这样分工?
广度分析
- 情绪候选:惊喜/惊吓(开雾出怪、随机惩罚)vs 权衡感(看得见边界的承诺)——后者唯一同时满足 P1 诚实(不骗)与 P2 规划(可预期)。
- 教学落点候选:D5 教学系统承 ALL vs D1 界面承 MVP 静态传达——D5 里程碑在 Alpha,雾在 MVP level 2 即首遇;对比 A1×15/A2×4,"雾区无雷"知识此前零验收落点 → D1 是 MVP 唯一活载体(D1 MVP 验收两条 + 必含要点枚举由此而来)。
- 视觉候选:仅色相区分(原型紫)vs 形状+颜色双通道 + biome 调色板交换——前者色弱不可辨、新 biome 要新增雾资产。
深度分析
情绪目标:站在洞口前的权衡感——迷雾不制造惊喜或惊吓,它制造一个看得见边界的承诺:"里面有价值,进去的代价是 AP 溢价与放弃雾格数字这份推理原料"(玩家每轮都在看见并应对变异——直接感知)。参考感受:Into the Breach 的信息诚实(游戏从不用隐藏信息骗你——本作反其道而行,把"信息缺失本身"诚实标注);杀戮尖塔地图的路径承诺(看得见的未知,选定的风险)。
教学反直觉点:雾格成本两态不照实教——链可达性取决于未开 0 格的隐藏拓扑,玩家决策时点不可求值,明教两态反生免费期待、恰触发反向护栏的被骗感;故教玩家侧保守启发式:"雾格按全价做预算,连锁白开当惊喜"(与问题 4 全价假设的安全侧高估同源)。首遇提示触发谓词取"首个实际含雾格的板进入可操作状态(挖掘阶段开始)"——生成期一次查询即判定,免疫 EC2 降级板误触发与 EC3 贴脸雾 t=0 歧义(rev2 blocking ⑥:原谓词"雾格首次与已开区相邻"有缺陷——贴脸雾 t=0 即真、远雾图滞后);"一次性"作用域 = 每 run 一次(MVP 无持久化设施,存档级"一生一次"归 Alpha D3/C4 后重议)。
已开雾格 tint 与视觉锚 3"不留雾残留遮蔽"的冲突口径:遮蔽禁的是遮挡数字/实体的雾残留,tint 是底色层标记不犯此条;tint 与完成信号转正与否归 OQ8(完成信号粒度 = 视觉合并域、禁实例级双响——EC11 合并呈现约束;0 格携带"八邻无雷"推理信息,与已开雾格的视觉混淆会污染推理,tint 为当前唯一区分手段)。AC-9 操作化三口径(防形容词验收):①形状通道 = 色板无关线稿资产 + 对全部底色的明度对比数值下限(阈值 art-bible 定、须存在);②新 biome 色板强制重跑样张清单;③样张须含最坏用例——宽度 1 雾带(每格即全边界,Rule 3 结构推论下的正常形态)、"旗 × 雾纹理 × 边界"三重叠加格、宽度 1 雾带两侧毗邻数字格(视觉锚"纹理不干扰数字辨识"的真实威胁面在邻格——雾格自身无数字)。
综合判断
视觉三硬锚(形状+颜色双通道 / 绘制优先级 数字>小人>旗>变异纹理>底色 / 调色板交换优先——新 biome 不新增雾资产只换色板)+ 边界可读硬指标("明处的选择"幻想的视觉前提,与"数字可读性 × 暗色氛围"样张测试同批验证;原型 v3 紫色迷雾格已验证基线可读性,art-bible 缺位期作临时明度基线、就位后强制复测)。结算与 HUD 取负空间:结算界面无 A4 附加项(雾格奖励 = 普通安全格奖励,无独立归因类别——P2 标注归 B1)、无 HUD 常显字段(变异是棋盘属性非资源,与 A3 的 AP/RAP 不同)。动效音频后置("雾散"过渡归 B5/D1 可选、雾开出音效归 D4 Alpha)。
开放问题(原编号保留)
| # | 问题 | owner | 时机 |
|---|---|---|---|
| 1 | 雾面积/数量参数回填与 P1 验证:BoardGenTable 雾区域数/尺寸/占比默认值——须在厚度 ≤2(≡ 任意 3×3 窗口非全雾)/ f ≤ 8d 硬边界内定义,含最低雾出现率与降级率埋点口径;可推理率参数按雾边双向净效应建模;雾占比与可推理率的联动曲线(A1 的 P1 生成端保障核心 + 本 GDD 15 项验收的数值侧);占比参数双重身份:难度旋钮 × 情报旋钮——雾形携带雷簇位置信息(Rule 5 推理锚),占比/数量调参同时改变"雾 = 雷簇探测器"强度与首遇显著度(总占比/最大区域尺寸下限口径随 BoardGenTable 一并定,防首关雾低于注意阈值致 P4 解锁拍哑火) | A1 | 第 5 位 |
| 2 | 探测显影的时效与定价:EC6 留白——临时/永久显影、道具成本、counter_item_ids 首个回填 + 悬空引用校验补全(D2 条件性夹具义务兑现) | A5 | 第 11 位 |
| 3 | 创意风险 #1 的 B4 侧兑现:奖励预知的呈现方案(A4 侧切面已定——雾不额外隐藏内容);雾区奖励在效果当量对照表的落位——受三条定价硬约束(B4-①②③),成本口径按链不可达雾格计;①的 per-AP 平价与②③的定量谓词归 B4/B1 对账闭合 | B4 | 第 8 位 |
| 4 | scope=global 语义:精英/Boss 图全局变异的构成、施加时机、与零特判原则及 cell_constraint 覆盖的相容性重审(C3-1) | C3 | 第 12 位 |
| 5 | 岩浆/冰冻规则设计:变异框架的下一批居民、P3 雷险维度的承接者;需新字段时走接口漂移规则回写本 GDD 与 D2 | 垂直切片期 | 随关卡解锁建行 |
| 6 | 变异解锁曲线复核:"每关至少引入一个新元素"的推进节奏随 C3 难度曲线定稿复核;D5 教学动态适配表值(EC9),不写死解锁关号 | C3 + D5 | 低优先 |
| 7 | 标错惩罚与雾内旗:若惩罚上线,雾内旗恒受罚的一致性推论纳入实测观察项(EC5);EC5 推论在 A2 原型会话前置确认(防 D5 教学返工) | A2 前原型小补丁 | 联动 A3 OQ2 |
| 8 | 已开雾格 tint / 雾区全开完成信号的裁决:现处"验收候选"悬空态(本 OQ 登记终结悬空);裁决须同时覆盖——与 0 格的可判定区分(0 格 = "八邻无雷"推理信息,视觉混淆污染推理——tint 为当前唯一区分手段)与 EC11 合并呈现下的完成信号粒度(视觉合并域 = 信号单元,禁实例级双响) | D1 + CD | D1 GDD 前 |
迁移对账注记(外部状态观察——registry / systems-index 所载,非本文裁决)
- counter_item_ids:design 件行集表保留原值 [](A5 期回填预留);registry
variation_table.mvp_content已登记 [probe_dust](A5 GDD 定稿回填,D2 表值与悬空校验激活随 D2/A5 修订批同批落地、回填前为 ∅)——design 件是否随该批同步,待 owner 拍板。 - OQ2:registry
a5_aux_items.closures与 systems-index 记录其已随 A5 GDD(2026-09-14)收口——fog_reveal = 恢复推理原料非排雷、时效 = 本图持续、首引回填与悬空校验闭环;本文按原文保留开放状态,待 A4 下次修订批核销。 - OQ8:systems-index 记录其已于 design/ux/battle.md 裁决(2026-09-12 采纳 tint + 视觉合并域信号单元,D1 义务③"验收候选"转正)——本文按原文保留悬空状态,待 A4 下次修订批核销。
- OQ1 数值侧补充:registry A1 条目另载雾占比绝对上限(fog_target_ratio ≤ min(8d, 0.25))与两项达标判据(inferability / inferability_core)——A1 侧后续修订,BoardGenTable 雾参数回填时须一并满足。
附录:历史审计元数据(迁移自原文头部注记)
- 复核注记:art-director 未经咨询(Lean 模式)——生产前人工复核视觉规格与 art-bible 一致性(creative-director 已在两轮独立评审中终裁幻想节处置)。
- lean 门禁(v1 定稿时):systems-designer 审查 Formulas · qa-lead 审查 Acceptance Criteria;作者 = user + agents。
- 评审日志:
design/gdd/reviews/a4-terrain-variation-review-log.md(rev1 八项 + rev2 六项 blocking→修复对照表;明细均见该日志)。 - registry 条目:
variation_table/variant_pool_gate(owner = 本系统 GDD;已锁数值以 registry 为准,正文只引用不复述)。
去向映射(零丢失对账)
| 原文(v1.0-lean)章节/表 | 落点 |
|---|---|
| 头部(状态/版本/承载支柱/层级/一句话/作者与门禁) | design 头部 + 附录·历史审计元数据(本文件) |
| 头部·复核注记(art-director 未经咨询) | 本文件附录·历史审计元数据 |
| 速览表(定位/拥有/不拥有/上游输入/下游输出/硬约束) | design 系统范围 + 依赖与输出 + 领域章节规则(硬约束逐条入变异定义框架/布置约束/承重数学) |
| 速览两段散文(定义层定位与玩家遭遇 / 没有A4失去什么) | design 设计目的(定位段 + 承诺 1–5 + 设计意图行) |
| 体验锚点(情绪目标 / 支柱表 4 行 / 反向护栏 / 参考感受) | design 设计目的(承诺 1–4)+ design 迷雾·反向护栏规则;论证 → 本文件问题 2/6;B4 兜底 → design 义务清单 B4-①②③ |
| 全局流程·地形布置流程 / 雾揭示流程 / 出口分发 | design 核心循环(字符画 ×2 + 出口分发表) |
| 核心规则 1–9(人话 + 举证) | design 变异定义框架(Rule 1/8/9)/ 迷雾(Rule 2/4/5)/ 布置约束与生成期门控(Rule 3/6/7)编号规则;举证指向承重数学节与本文件 |
| 规则 3 的实现参照表(生成期布置约束 7 行) | design 布置约束·生成期布置约束(几何硬边界) |
| 规则 4 的实现参照——零特判六面 | design 迷雾·零特判六面 |
| 规则 3/5 的实现参照——雾元知识信息源(6 行) | design 迷雾·雾元知识信息源 |
| 枚举·VariationTable 行集 / schema 校验类别 | design 变异定义框架(两表原样) |
| 枚举·板形参数(7 行) | design 布置约束·板形参数 |
| 数值结论与推导·口径总纲 / F1 / 结构推论 / 雾致预算增量 | design 承重数学(结论 + 表达式 + Variables + 验算表全保留);推导与论证 → 本文件问题 3/4 |
| 数值结论与推导·对 A3 F1 条款 5 的对账 | design 承重数学·三腿表 + 对账契约要点 1–4;论证 → 本文件问题 4 |
| 状态(4 阶段表 + 不变式) | design 布置约束·状态(定义→布置→生效→消亡) |
| 边界情况 EC1–EC11 | design 边界情况(条件 |
| 依赖(上游 D2/A3 + 下游 7 行 + 双向一致性核对) | design 依赖与输出(双向一张表 + 核对行) |
| 跨 GDD 义务清单(A1×15 / A2×4 / B4×3 / B1×1 / D1×4 / C3×1 / A5×1 / D5×1) | design 依赖与输出·跨 GDD 义务清单(活契约全保留,编号不变) |
| 呈现与 UI 契约(8 行) | design 呈现与 UI 契约(表原样);论证 → 本文件问题 6 |
| Tuning Knobs(schema 定稿 / knob 效应 / 非 knob 冻结 / 真 owner / 跨 GDD 引用) | design 调参表 |
| 验收标准(测试口径 8 行 / 夹具清单 5 行 / AC-1…AC-10) | design 验收标准(三表原样,AC 编号不变) |
| 开放问题 OQ1–8 | 本文件·开放问题(原编号保留 + 迁移对账注记) |
| 版本历史(v1 / rev1 / rev2 / v1.0-lean 共 4 行) | design 版本历史(全保留 + v2 迁移行) |