Files
gplan-2/design/gdd/c3-difficulty-curve.md
T
2026-09-14 18:18:49 +08:00

527 lines
54 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# C3 难度曲线与精英/Boss(Difficulty Curve & Elite/Boss)
> **状态**:In Design · lean 格式
> **版本**:v2 · 2026-09-14 · 作者:DK + design-system
> **承载支柱**:P4 地牢下探的探险氛围(主)· P1 推理的掌控感 / P3 风险与收益同源(难度即压力源)
> **一句话**:C3 定义"难度 = f(关卡序号, 节点深度, 精英/Boss 修饰)"中每一项随进度如何变化——敌人强度曲线、雷图压力曲线、奖励供给曲线与精英/Boss 修饰语义的唯一数值所有者。
> **复核注记**:v1 solo 出稿 → 经 /design-review(lean 单会话)NEEDS REVISION 8 blocking,同日修订核销(本 v2);专员/总监代理未咨询——生产前人工复核保留。
## 速览
| 关键问题 | 答案 |
|---|---|
| 定位 | 数值 owner 而非机制 owner:表结构归 D2、生成算法归 A1、结算规则归 B1、敌种机制归 B2——C3 以行值与参数驱动已定稿机制,形成"越下越险"的进度体感(P4);玩家不直接感知本系统(Indirect),它是体感背后的统一坐标系 |
| 拥有 | EnemyTable / BoardGenTable / RewardTable / RewardConfigTable / HeroTable 行值与参数 · DifficultyTable 修饰结构位(MVP 空表)· 难度期望表(按 (L,D) 的期望胜轮带 / 期望承伤占 max_hp 比 / 通关率目标带 / 通关余量带——调参的"正确行为"基准)· **生存链区间模型**(替代关级供给带:每战 S/K 区间三档判定 + 关级通关恒等式 + 输出占比带)· 七步调参流程 · P_perfect 乘数调参权 · m_w 调参通道(终值共裁 B4/B1)· B1 对账约束清单的承接与消解 |
| 不拥有 | 表结构(D2)· 生成算法(A1)· 结算规则与护甲克制矩阵机制(B1——C3 投值)· 敌种机制(B2)· 变异机制框架(A4——C3 只投内容行)· 精英节点完整语义(C1 联动)· 元进度天赋数值(C4——C3 是其世界侧对照物)· 呈现(B2/B5/D1)· encounter 掷骰执行(B1 编排)· 供给控制器机制本体(B4——C3 投参数) |
| 上游输入 | D2 表 schema 与 R1 解析 · B1 条款③⑤对账输出(B1 F4/F5 = 约束生成器)· B2 字段语义与校验域 · B4 联动重算义务与供给控制器机制 · A1 F4 批量红线 · 切片 v3 行集实测数据(含减伤墙批) |
| 下游输出 | 各基表行值(经 ConfigDB 单点读取)· 每战 S/K 区间与三档判定数据面(level_monte_carlo actuals 生产,B4/B1 对账消费)· 难度期望表(C2 难度排布 / C4 天赋标定基准——区间平移换算率:+10hp ≈ +1 轮、atk 翻倍 ≈ K 减半)· unlock_level 投放计划(A4)· "何时变难"数据面(B2/B5/D1 呈现消费) |
| 硬约束 | 运行时零新增公式(C3 侧数值直填基表行;机制本体——encounter 掷骰 / 护甲克制 / 供给控制器——归各 owner GDD,C3 只投行值与参数)· 可推理率 target ∈ [0.85, 1] 绝对锚不可下探 · 条款③⑤与预警⑥约束内调参或显式扩界 · 联动网络六组禁独立调参 · 每次修订强制走七步流程 · 全部值 provisional 起步随 playtest 修正 |
## 体验锚点
> Indirect 体验一句话:**玩家不操作本系统,但每一分钟都在感受它**——第二层的熊地精比第一层的地精更凶、关底 Boss 的压迫性血量、"这一层开始有雾了"的解锁节奏,本系统是这些体感背后的统一坐标系。
| 支柱 | 关键词 | 机制承诺 |
|---|---|---|
| P4 越下越险的压迫节奏 | "这一层开始有雾了" | 每层一个可感知难度台阶:新敌种登场 / 新行为环段 / 新变异解锁 + 基准数值跳升(L 轴)与温和加压(D 轴);台阶可感知但可解释——跃升可归因于可见变化而非纯数字膨胀(后者产生"被坑"感而非"变险"感);可量化形态 = S/K 区间随 (L,D) 的漂移轨迹(绿→黄→红空间分布) |
| P1 攻克的对照物 | "我变强了" | 首关基线明显吃紧但多数玩家能过(通关率目标带);后续关卡陡升使 C4 天赋提升产生可测量的通关期望改善——区间平移换算率(+10hp ≈ +1 轮、atk 翻倍 ≈ K 减半)使"我变强了"从体感变为可推导结论 |
| P3 压迫的顶点 | "Boss 房开门前" | 恢复点/囤刀决策压力顶点——供给稀缺性在此处兑现价值;Boss 血量压迫由 Boss 血量锚承载 |
| 锚点时刻 | "三拍 vs 单拍" | 第二层首遇熊地精——三拍行为环 vs 地精单拍攻击,难度跃升有具体面孔;击杀 Boss——"这层我算下来了"的完成感 |
- 参考感受合成:Peglin 的地图难度爬升 × 杀戮尖塔的 Act 结构(普通→精英→Boss 三段节奏)→ 本作 = 关间大台阶 × 关内小坡度 × Boss=Dmax 关底压轴。
## 全局流程
### 难度曲线生成(设计期直填 → 运行时直读)
```
设计期(本 GDD 唯一产出物 = 表行值)
│ ① L 轴台阶:每关 ≥1 项新内容投放(新敌种/新环段/新变异)+ base 跳升 k_L ∈ [1.3, 1.6]
│ ② D 轴坡度:同敌种 hp 平缓上移(坡度域)+ 板参数温和加压(target ≥ 0.85 绝对锚)
│ ③ Boss 行:Dmax 直填行(数值大台阶 + 专属行为环 + 本关最大板形)
│ ④ 七步调参流程走查 → 行值写入 enemy / board_gen / reward / reward_config / hero .tres
▼
运行时(C3 零公式;机制归各 owner)
│ ⑤ B1.begin_battle 实例化期:unit_count 区间均匀骰(encounter 封闭流)→ 本战实际数量
│ ⑥ B2.spawn(L, D):R1 floor 解析 → 行值快照 → DifficultyTable 修饰套乘(快照之前;MVP 空表无修饰)
│ ⑦ A1 读 BoardGenTable 行生成 → 挖掘期 → B1 结算(既有乘区:护甲克制 / 状态池 / 充能伤害)
▼
战斗/挖掘按既有系统运作(C3 运行时零公式)
```
### F7 调参流程(每次行值修订强制走完——七步)
```
① 改表值(C3 直辖 knob)
│ ② smoke_all 全绿(含 A1 生成质量闸——d0.28 回退先例的拦截点)
│ ③ level_monte_carlo 扫描(通关率带 + 三档判定 + 通关余量 + 输出占比)
│ ④ B4 登记常数与对账重制(AC-19 对账对漂移检测 / AC-6 分支 4 / AC-18 重跑——B4 义务 #10)
│ ⑤ 对账复算(条款③⑤ / 预警⑥)
│ ⑥ README 调参日志登记(含期望偏离)
▼
行值生效(任一步 FAIL → 回滚或登记 OQ——禁止带病前进)
```
### 出口分发
| 出口 | 触发 | 动作/去向 | 约束 |
|---|---|---|---|
| 调参通过 | 七步全 PASS | 行值生效 → 期望表复算 → 调参日志登记 | 期望偏离必须登记,禁止静默出带 |
| 调参失败 | 任一步 FAIL | 回滚行值或登记 OQ | 禁止带病前进 |
| 红档组合 | 任一战 S_max ≤ K_min | 扫描步拦截,行值禁止入表 | 配置事故——区间模型判定 |
| 期望表偏离 | 调参后越出通关率/余量带 | 回滚或 OQ 登记 | 禁止静默出带(状态表同名行) |
| 投放断档 | 某关无新敌种且无新环段 | 流程投放检查项拦截 | 内容生产缺口——C3 调参无法修补(数值不是内容) |
## 核心规则
| # | 规则 | 要点 | 依据 |
|---|---|---|---|
| 1 | 难度承载结构 = 直填行值主体 + DifficultyTable 修饰结构位 | 全部 (level_index, node_depth) 维度最终数值**直填**各基表行(EnemyTable / BoardGenTable / RewardTable——切片已验证的工作方式:R1 floor 解析直读、零新机制);**DifficultyTable 仅承载"按坐标施加的全局修饰"结构位**(键 (L,D)、乘数域;施加点 = B2.spawn 实例化时套乘于行值快照之前)——MVP 不产生任何修饰行(空表结构位;首个使用场景 = 精英节点;Boss 走 Dmax 直填行、不走修饰表) | D2 接口漂移规则;registry `difficulty_table`;B2 实例化条款"接口未定"预留由本条兑现 |
| 2 | 难度 = f(L, D) 双轴语义 | **L 维(关间)= 大台阶**——每关至少一项新内容投放(新敌种 或 新行为环段 或 新变异解锁)+ 基准数值跳升;**D 维(关内)= 小坡度**——同敌种数值平缓上移(坡度域见关内深度坡度公式)、板参数温和加压(尺寸/密度小步上调,推理率 target 不低于 0.85 绝对锚);**Boss = 各关 Dmax 行**(A1 登记约定兑现)——数值大台阶 + 专属行为环 + 专属板形,见 Boss 遭遇语义条 | B2 投放节奏规则(OQ8);Boss 血量锚公式(F3);A1 第三轴登记约定 |
| 3 | 敌种投放节奏 | 每关至少一个新敌种或既有敌种新环段投放;MVP 投放 = L1 三段(goblin→bugbear→ogre_chief,行值总表);**DND 更名批生效**:grub→goblin、ambusher→bugbear、boss_guardian→ogre_chief——registry/B2/D1/art-bible 键集随本修订批对齐;多敌种同深度选择规则:MVP 每行集恰一敌种(B2 锁定),C1 分支地图定稿时若需同深度多敌种选择,走预登记改键通道——本 GDD 预留不定义 | B2 投放节奏规则(OQ8);B2 多敌种共裁项(OQ7);D1 键集冲突② |
| 4 | 切片行集转正为 MVP 默认曲线 | 垂直切片调参登记的行集有实测依据,转正为 MVP 默认值——**权威枚举 = 「MVP 行值总表」(v3,出处 = 切片 .tres)**,旧登记表(grub 时代值)由本表替代;后续 L2+ 曲线数值随关卡内容扩展填充(结构本条已定,数值行随内容扩展) | MVP 行值总表;L2+ 数值开放问题(OQ1) |
| 5 | Boss 遭遇语义 | ① Boss = 关卡末节点 = Dmax 行(LevelTable 末节点必须 Boss——schema 校验);② Boss 数值台阶 = hp 取本关普通战斗 hp 期望总和的 0.5–1.1 倍 + **atk ≥ 本关普通战最高行 atk**(本次重定义——原"高于均值一档"无档位定义;现值 Boss 9 ≥ bugbear 9 ✓)+ 专属行为环(含 charge 拍——玩家可规划的安全挖掘拍);③ Boss 板 = 本关最大板形 + 密度上探(受可推理率 target 绝对锚约束);④ Boss 战胜利 = 关卡通关(C1/C2 域编排) | Boss 血量锚公式(F3,加难走廊 [1.1, 1.35] 预登记);LevelTable schema 校验;A1 第三轴登记约定 |
| 6 | 精英节点(MVP 不实现,语义预留) | `elite_` / `boss_` 前缀字段命名空间预留保留;精英修饰完整语义(独立节点类型/词缀系统/出现规则)**归 C1 关卡节点地图定稿后的联动设计**——分支地图中"同深度并存精英与普通节点"触发棋盘生成端强制重审(改键走 D2 接口漂移规则);本 GDD 承诺:DifficultyTable 结构位 + 命名空间预留足以承载,不预写语义 | A1 第三轴登记约定(命名空间预留 + 定稿强制重审) |
| 7 | A4 全局变异语义(scope=global 兑现) | `scope=global` 行 = 该变异**施加于整板全部合格格**(区别于 region 的区域布置);**全局变异仅 Boss/精英图可产生**(普通图禁用——加载期校验:global 变异的布置行须伴随 elite/boss 标记;MVP 无标记字段前 = MVP 不产生 global 行,A4 既有 warning 承载);MVP 不定义任何具体全局变异行(岩浆/冰冻无 MVP 容器——A4 锁定),本条只锁定语义框架与禁用面 | A4 scope=global 预留位条款;A4 例外表 warning 行 |
| 8 | 遭遇随机化(区间 unit_count) | EnemyTable 行 `unit_count` 升级为**区间语义** [unit_count, unit_count_max](域 [unit_count, 3],B2 上界锁定不变);掷骰经 RngService `encounter` 封闭流——**接口漂移登记完成**:registry 流集合含 encounter、B1 begin_battle 掷骰增补、B2 spawn override 参数与 unit_count_max 字段增补、D2 schema 两字段增补;细则见下表 | registry `rng_service`(encounter 增流登记);B1/B2/D2 增补条款(X-6~X-8);遭遇随机化细则表 |
| 9 | 调参约束内工作纪律(B1 对账输出承接) | C3 每次行值修订必须走满七步调参流程,且不得触碰已锁约束边界——四条边界见下表(B1 条款③⑤对账输出与预警⑥ = "禁止独立调参"纪律的量化边界,C3 调参必须在其内工作或显式扩界;registry 回执见依赖节对账登记表) | F7 七步流程;B1 条款③⑤对账输出;对账登记表 |
### MVP 行值总表(权威枚举,出处 = 切片 .tres v3)
| 关卡 | 深度 | enemy_id | display_name | hp | atk(区间) | unit_count(_max) | pattern | armor_type |
|---|---|---|---|---|---|---|---|---|
| L1 | D0 | goblin | 地精 | 24 | 7 [4,10] | 1 (2) | [attack] | none |
| L1 | D1 | goblin | 地精一伙 | 13 | 5 [2,8] | 2 (3) | [attack] | none |
| L1 | D2 | bugbear | 熊地精 | 40 | 9 [6,12] | 1 | [attack, charge, heavy] | a |
| L1 | D3 | bugbear | 熊地精双雄 | 18 | 6 [3,9] | 2 (3) | [attack, charge, heavy] | a |
| L1 | D4 | ogre_chief | 食人魔酋长 | 150 | 9 [6,12] | 1 | [attack, attack, charge, heavy] | b |
| L2 | D0 | bugbear | 熊地精 | 30 | 7 [4,10] | 1 | [attack, charge, heavy] | a |
| 表 | 转正行集(登记值) |
|---|---|
| BoardGenTable L1 深度轴 | D0/D1 10×10 · D2–D4 12×12 · d0.25/t0.88 · attempts 24 |
| HeroTable | atk = 6 · max_hp = 50 |
| RewardTable 要点 | 格子池四行即时类(attack_up 20 / defense_up 16 / spark_aoe 16 / heal_minor 15)· 注入池三行可选类(knife_t1 60 / knife_adv 30 / heal_pack 10——供给控制器注入)· clear_blast 40(clear_default 槽,instant_aoe 当场兑付,完美 ×2) |
| RewardConfigTable | t_fog_min=2 · k_dmg=0(保底语义由战斗首件保证取代)· n_draft=32 · p_min=8 · active_p0=0.4 · active_decay=0.5 |
| SettlementTable 增补字段 | damage_a_per_cell=1 · damage_a_cap=8 · damage_b_per_flag=2 · armor_effectiveness 克制矩阵(base/dmg_a/dmg_b × none/a/b——特化 ×150 / 无甲 ×100 / 对位 ×50)· p_perfect=200 · D_ref=12 |
- 实测依据:期望扫描 N=15–30 × 多种子 + 8 种子密度实验 + 试玩批次 1 + 减伤墙批。
- v3 数值批(试玩批次 1 裁决):atk 4/4/6/4/7 → 7/5/9/6/9(约 +50%,承伤侧主杠杆);D0 24 保持防秒杀(20hp 会被首轮盲挖粉尘秒杀——12+9);Boss 130→150(用户拍板可上调)。
- **区间批(现行)**:奖励五行 power 区间化(heal_minor [2,6] / knife_t1 [5,11] / heal_pack [6,18] / knife_adv [10,22] / clear_blast [25,55]——身份批内 roll,中点恒等原值)+ 敌方 atk 区间化(上表 [min,max],遭遇骰同流 spawn 期整战持久,±3 provisional)——宽度均 provisional 归本 GDD 测量迭代;A3 条款①当量锚以中点口径维持;验收口径 = 完美策略档 0 加成通关 ≤40%(OQ7)。
- **加难走廊(带锚定稿预登记)**:L1 基线通关率目标 [30%, 50%],现扫描 60% 越上界——杠杆候选 = r_boss 上探走廊(Boss 180–207,见 Boss 血量锚公式)+ 群战上探 + 供给 decay 0.5→0.6;**扫描验证待执行(OQ7——本会话无 godot 运行时),落带前 v3 值维持 provisional-pending-scan**。
### 遭遇随机化细则(Core Rule 8)
| 项 | 语义 |
|---|---|
| 区间语义 | unit_count 升级为 [unit_count, unit_count_max];unit_count_max 可省略——缺省 = 定值,旧行零迁移 |
| 域 | [unit_count, 3](B2 unit_count 上界锁定不变) |
| 掷骰时点 | B1.begin_battle 实例化期(扫雷开始前)按区间均匀骰定本战实际数量(B1 GDD 增补条款) |
| 敌种不变 | 同敌种掷骰——不触碰 B2"每行集恰一敌种"锁定 |
| 随机通道 | RngService `encounter` 封闭流(registry 流集合已登记);scope_event_binding = 每次战斗实例化恰一 scope;发生在挖掘决策域之外(P1 合规) |
| 消费方式 | B1 掷骰 → B2.spawn 以 override 参数接收实际数量(B2 零随机纪律保持——收到的即确定值;B2 GDD 增补条款) |
| 教学位豁免 | 新敌种首遇节点固定数量不加骰(D0 goblin ×1、D2 bugbear ×1 固定——行值总表) |
| 可回放性 | 同种子全程可回放(流取号确定性不变) |
| 设计原则 | 数量是比单体质变更优先的深度表达(关内深度坡度公式 Example 延伸);期望总量对齐关级恒等式检算 |
### 调参约束边界(Core Rule 9)
| # | 约束边界 | 内容 |
|---|---|---|
| ① | 条款③满配破线 | unit_count>1 的行须满足"降密度或降 m_amb"补偿——registry clause3_supply 已登记;切片群战行 hp/atk 下调为合规先例 |
| ② | 条款⑤清图支配性 | 约束包①需求对 clear_blast(instant_aoe,C = power = 40)重推:缺口 = 46.1−40 = 6.1(L1)/ 91.8−40 = 51.8(L2)——登记为非支配设计态 + OQ4 playtest 观测弃图率(原 clear_knife C=8/16 模型由现行登记替代) |
| ③ | 可推理率绝对锚 | target ∈ [0.85, 1] 不可下探(P1 生成端保证) |
| ④ | 期望表对照 | 调参后期望表必须复算并在 README 调参日志登记偏离 |
## 枚举
### DifficultyTable(新表,MVP 空表——结构位)
| 项 | 值 | 语义 |
|---|---|---|
| 键 | (level_index, node_depth) | 按坐标施加的全局修饰 |
| 乘数域 | [0.1, 10](registry 预登记) | 套乘施加点 = B2.spawn 实例化时、行值快照之前;越域 → clamp 至域界 + warning(registry 登记的显式例外——组合事故非配置事故,非 fail-fast 场景) |
| MVP 行集 | 空(零修饰行) | 首个使用场景 = 精英节点;Boss 走 Dmax 直填行、不走修饰表;建表走 D2 接口漂移规则 |
### EnemyTable.unit_count 区间语义(Core Rule 8)
| 字段 | 域 | 语义 |
|---|---|---|
| unit_count | int [1, 3] | 区间下界;旧行语义 = 固定数量 |
| unit_count_max | int [unit_count, 3],可省略 | 区间上界——缺省 = 定值,旧行零迁移;掷骰 = B1 实例化期区间均匀骰 |
### RngService 流集合(encounter——已登记)
| 流 | scope 绑定 | 消费点 | 语义 |
|---|---|---|---|
| encounter | 每次战斗实例化恰一 scope | B1.begin_battle 实例化期(扫雷开始前) | unit_count 区间均匀骰——同敌种数量随机;发生在挖掘决策域之外(P1 合规);同种子全程可回放 |
### A4 变异 unlock_level 门控序列(投放计划归 C3)
| 序 | 内容 | 门控 | 说明 |
|---|---|---|---|
| 1 | 普通图(无变异) | 基线 | — |
| 2 | 雾 | unlock_level = 2(A4 锁定) | 雾参数 f≤8d / ≤0.25(P1 度量绝对上限) |
| 3 | 岩浆/冰冻 | 随关卡扩展 | 无 MVP 容器(A4 锁定)——投放计划归 C3 |
## 数值结论与推导
> 定位声明:C3 是数据系统——运行时零新增公式(数值直填基表行,运行时仅经既有 B1 乘区 / B2 接口 / R1 直读运作)。本节全部公式为**设计期工具式**(曲线拟合基准、区间估算、对账复算),执行载体 = 调参期批量工具(level_monte_carlo.gd / reward_expectation.gd,见 F7),不进入游戏运行时。全部数值 provisional 起步,随 playtest 修正。
### F1 关内深度坡度(D 轴小坡度)
**结论**:hp_D = round(hp_0 × (1 + s_hp × D))——每档 +5%–20%,Dmax=4 处 1.2–1.8 × D0、Dmax=5 处 1.25–2.0 × D0(同敌种内);MVP 直填行近似此式、不运行时计算;敌种切换(新敌种登场)不受本式约束——台阶值直接定。
#### 推导
```
hp_D = round(hp_0 × (1 + s_hp × D))
```
**Variables:**
| Variable | Symbol | Type | Range | Description |
|---|---|---|---|---|
| 深度基准值 | hp_0 | int | [1,999] | 该敌种 D0 行 hp |
| 坡度系数 | s_hp | float | [0.05, 0.20] | 每深度档增幅 |
| 节点深度 | D | int | [0, Dmax] | 节点深度(Boss = Dmax) |
**验算与边界:**
| 项 | 内容 |
|---|---|
| Example | goblin 24hp:D1 理论 24×1.1 ≈ 26——切片实际以"群×2"(13hp ×2–3 只)表达深度压力:数量是比单体质变更优先的深度表达(保持单拍环低威胁读数、总量受控) |
### F2 关间台阶(L 轴大台阶)
**结论**:base(L+1) ≈ base(L).Dmax × k_L、k_L ∈ [1.3, 1.6]——k_L 作用于**同敌种基准**(敌种延续场景,如 L2 bugbear 延续至 L3);新敌种登场时基准按其环复杂度重定(三拍环单位 hp 低于单拍环同关值——切片先例:bugbear 40/18 < goblin 群总量但威胁更高)。
#### 推导
```
base(L+1) ≈ base(L).Dmax × k_L k_L ∈ [1.3, 1.6]
```
**Variables:**
| Variable | Symbol | Type | Range | Description |
|---|---|---|---|---|
| 关间系数 | k_L | float | [1.3, 1.6] | 下一关 D0 基准 = 本关 Dmax × k_L(数值跳升 + 新敌种/新变异共同构成台阶感) |
**验算与边界:**
| 项 | 内容 |
|---|---|
| Output Range | 相邻关数值倍率 1.3–1.6;叠加新敌种环复杂度,实际体感台阶更大 |
| 反例 | L1 Dmax 酋长 150hp → L2 D0 bugbear 基准 ≈ 210 的直推不成立——新敌种登场基准按环复杂度重定,k_L 仅适用于敌种延续场景(L2 锚行 30/7 为内容行非 k_L 直推) |
### F3 Boss 血量锚
**结论**:boss_hp ≈ round(Σ普通战斗hp期望 × r_boss)、r_boss ∈ [0.5, 1.1]——"Boss 是本关最大的单场消耗",量级上探至全关消耗;**加难走廊 [1.1, 1.35] 预登记**(带锚定稿——L1 通关率压带首选杠杆,扫描终裁后落带)。
#### 推导
```
boss_hp ≈ round(Σ普通战斗hp期望 × r_boss) r_boss ∈ [0.5, 1.1](走廊 [1.1, 1.35])
```
**Variables:**
| Variable | Symbol | Type | Range | Description |
|---|---|---|---|---|
| 本关普通战斗 hp 期望总和 | Σ普通战斗hp期望 | float | [1,999]×N | 本关全部非 Boss 节点的敌方 hp 期望合计(**含 unit_count 区间骰期望**——口径与击杀侧恒等式统一) |
| Boss 占比 | r_boss | float | [0.5, 1.1](走廊 [1.1, 1.35]) | Boss 相对全关消耗的血量锚 |
**验算与边界:**
| 验算 | 读数 | 判定 |
|---|---|---|
| L1 v3:Σ = 36(D0 [1,2]×24)+ 32.5(D1 [2,3]×13)+ 40(D2)+ 45(D3 [2,3]×18)= 153.5 → Boss 150/153.5 ≈ **0.98** | 带内 | ✓(口径更正:旧验算 Σ=142 为固定数量口径与旧 Boss 值混算,由本行替代;口径与击杀侧恒等式统一) |
| 走廊验算 | Boss 180/153.5 ≈ 1.17、200/153.5 ≈ 1.30 ∈ [1.1, 1.35] | 走廊内 ✓ |
| 败北分布 | 向 Boss 集中(4/6) | 符合压迫预期 ✓ |
### F4 生存侧:期望承伤与 S 区间
**结论**:E[承伤/场] ≈ Σ_rounds Σ_enemies E[beat_dmg] × (1 − E[减伤] − weaken覆盖);对照带 ≤20%/普通场、≤50%/Boss 场。派生**生存区间** S = [(HP进战 + 治疗下界) ÷ 入伤峰值, (HP进战 + 治疗上界) ÷ 入伤谷值]——区间模型三档判定的生存侧输入。
#### 推导
```
E[承伤/场] ≈ Σ_rounds Σ_enemies E[beat_dmg] × (1 − E[减伤] − E[weaken覆盖])
S = [ (HP进战 + 治疗min) ÷ 入伤峰值 , (HP进战 + 治疗max) ÷ 入伤谷值 ]
```
**Variables:**
| Variable | Symbol | Type | Range | Description |
|---|---|---|---|---|
| 每拍期望伤害 | E[beat_dmg] | float | [0,999] | 敌 atk × 拍别乘数(heavy=2)+ 伏击 flat(+3×层数,帽 4)——行为环确定性轮转 |
| 减伤期望 | E[减伤] | float | [0,0.6] | defense_up 授予率 × 当次减伤(−30×2 层帽 −60%——减伤墙批现行值) |
| weaken 覆盖 | E[weaken覆盖] | float | [0,0.65] | 标中旗 −65% 输出对战斗轮的覆盖期望——**生存侧最大单一杠杆**(P3 兑现点) |
| 入伤峰值/谷值 | d_max / d_min | float | [0,999] | 峰值 = heavy 齐射尖峰 + 伏击满层、零减伤;谷值 = charge 拍 + 全减伤 |
**验算与边界:**
| 验算 | 读数 | 判定 |
|---|---|---|
| D0 goblin ×1(7atk 单拍环)每结算恒 7 × (1−0.22 平均减伤) ≈ 5.5/轮 → 裸 R_survive ≈ 50/5.5 ≈ 9 轮 | — | L1 五战 S 区间手算见区间模型验算表 |
| 减伤墙批注 | defense_scan 实测墙轮 39%、真人 12/12 轮零承伤满血通关 → defense_up −50→−30、石肤权重 24→16 | 承伤带复验责任随批(B3 侧注记已挂) |
### F5 通关率目标带(期望表核心)
**结论**:通关率按 (L, 天赋档) 目标带验收——**L1 基线 30–50%**(带锚定稿,替换原 40–60%);区间机制解释:+100% atk → K 区间近似减半 → K_max ≈ S_min 转绿档 → ≥95%。**真人方向更正**:批次 1 实测真人显著强于模拟者(v2 真人 100% vs 模拟 80%)——原"真人预期低于模拟"方向声明由本结论更正;带按模拟口径定义,真人系数批次 2 标定(OQ3)。
#### 推导
**Variables(目标带):**
| 目标带 | 基线(无天赋) | 中天赋(+100% atk) | 高天赋(+200%) |
|---|---|---|---|
| L1(首关) | **30–50%** | ≥95% | 100% |
| L2 | 20–40%(provisional,随 OQ1 校准) | 60–80% | ≥90% |
| L3+ | 10–25%(provisional) | 40–60% | 60–80% |
**验算与边界:**
| 项 | 内容 |
|---|---|
| v3 扫描 | 基线 60%——**越 [30,50] 上界** → 加难杠杆批内即调(带锚定稿杠杆:r_boss 走廊 + 群战上探 + decay 0.6 候选);扫描落带前登记 provisional-pending-scan(OQ7) |
| 完美策略档扫描(OQ7;工具 = smoke/auto_player.gd 完美档求解器 + level_monte_carlo 策略轴) | **区间批后复测(2026-09-14,N=30)**:0 加成通关仍 **100%**、剩余 HP 均 47.4/50、承伤均 3.9(区间前 3.5)、踩雷 0.00/局——+50%~+200% 恒 100%;**承伤带与 F5 带对技能轴上界零分辨力**(calibration_gap 定量读数)。实测结论:**奖励侧 + 敌方侧数值区间已全部落地仍压不动完美档**——其结构性优势(零踩雷直伤 + 全标旗 weaken 顶格 + 快杀)使 47/50 血缓冲吞掉全部值域方差;≤40% 验收线需结构性杠杆(承伤硬地板 / weaken 饱和语义 / 完美度定价)或极端宽度(毁基线与可读性,建议否决)——**待用户裁决(OQ7 待拍板主项)** |
| 败北分布 | 向 Boss 集中(4/6)✓;+200% 天赋 100% ✓ |
| 机制钩子 | 天赋列由区间位移承载(K 减半 → 绿档),非独立拍脑袋带 |
### F6 生存链区间模型(替代关级供给带)
**结论**:原关级供给带(比值 ∈ [1.1, 2.0])由本模型替代——其验算 0.54"短缺态"与实测 60% 通关矛盾,方向指引反指(对偏易的游戏报"加供给")。现行 = **生存链区间模型**:每战 S/K 区间三档判定(绿=稳定通过 / 黄=期望通过 / 红=配置事故禁止入表)+ 关级通关恒等式 + 输出占比带。设计期工具式,运行时零公式。
#### 推导
```
S = [ (HP进战 + 治疗min) ÷ 入伤峰值 , (HP进战 + 治疗max) ÷ 入伤谷值 ] (生存区间——F4)
K = [ (Σ敌hp − 一次性伤害max) ÷ 输出峰值 , (Σ敌hp − 一次性伤害min) ÷ 输出谷值 ] (击杀区间)
绿档: S_min > K_max —— 最坏也能过,与运气无关(教学位必须绿档)
黄档: E[S] ≥ E[K] + 1 且非绿 —— 有失败分支,期望占优(margin ≥ 1 轮最低阈值)
红档: S_max ≤ K_min —— 最好也打不过,配置事故(F7 第③步拦截)
关级恒等式: atk × Σ R_survive(i) + Σ奖励输出 ≈ Σ敌hp期望 × (1 + 缓冲)
(actuals 逐项审计闭合——五项输出 × 三项输入全部入账)
```
**Variables:**
| Variable | 来源 | Description |
|---|---|---|
| 入伤 | 表值 + actuals | 敌 atk × 拍别乘数 + 伏击 flat − 减伤 − weaken(F4) |
| 输出 | 表值 + actuals | 基础攻击 6×(1+attack_up) + 伤害A(开格充能 1/格 帽 8,甲A ×1.5/甲B ×0.5)+ 伤害B(标雷充能 2/雷,甲B ×1.5/甲A ×0.5)+ 刀(8/16,不吃 percent) |
| 一次性伤害 | 表值 + actuals | clear_blast 40×清图数(完美 ×2)、囤刀倾泻 |
| 治疗 | 表值 + actuals | heal_pack 12 + heal_minor 4(注入/格子池期望) |
| 数量骰 | 表值 | unit_count 区间 [unit_count, unit_count_max] |
**验算与边界:**
| 项 | 内容 |
|---|---|
| L1 五战区间手算(≈ 估算,p10–p90 口径) | D0 goblin×1(教学位固定):S≈[7,12] vs K≈[2,4] → **绿** ✓ · D1 ×[2,3]:S≈[4,10] vs K≈[2,6] → 黄 · D2 bugbear(首遇固定):S≈[4,12] vs K≈[2,6] → 黄 · D3 ×[2,3]:S≈[2,6] vs K≈[2,7] → 黄偏红 · Boss 酋长:S≈[4,15](旗覆盖率主导)vs K≈[7,18](囤刀+甲B 对策)→ 黄红边缘 |
| L1 形态带 | ≥1 绿(教学位)+ 中段黄 + Boss 黄不红——手算形态符合 ✓ |
| 关级恒等式漏项审计 | 原供给 180 的漏项:clear_blast 只算一次(实际 ×清图数 3–4 = 120–160)、伤害A/B 充能、attack_up 增量、RAP 刷新新板追加供给——逐项入账后闭合,"0.54 短缺"消失 |
| 输出占比带 | 奖励侧输出(刀+clear_blast+A/B 充能)÷ 总输出 ∈ **[15%, 40%]**——<15% 奖励摆设、>40% 供给依赖(AC-14) |
| 口径注记 | 区间两口径:公式包络(必过/必死结论)与 actuals p10–p90(日常判定——B1 actuals p10 纪律同构);HP 持久化耦合各战区间,联合分布由 monte_carlo 裁决 |
| C4 平移换算率 | +10hp ≈ +1 轮(÷d̄≈8–10);atk 翻倍 ≈ K 减半——区间位移机制承载通关率天赋列,非独立拍带 |
### F7 调参流程(每次修订强制走完——七步)
**结论**:改表值 → smoke_all 全绿 → level_monte_carlo 扫描(通关率带 + 三档判定 + 通关余量 + 占比)→ B4 登记常数与对账重制 → 对账复算(条款③⑤/预警⑥)→ README 调参日志登记——任一步 FAIL → 回滚或登记 OQ,禁止带病前进。
#### 推导
**Variables:**
| Variable | Symbol | Type | Range | Description |
|---|---|---|---|---|
| 批量样本量 | N | int | ≥256(正式)/ 15–30(切片临时) | 正式批量工具 = level_monte_carlo 扩展(逐行聚合 + N 参数化 + 区间分位/降级统计)——**扫描执行本体归 A1 F4 工具交付(A1 OQ1),C3 的 level_monte_carlo 扩展为消费方**(所有权澄清:A1 工具产出 actuals → C3 扫描消费,非替代) |
**验算与边界:**
| 项 | 内容 |
|---|---|
| Output Range | 任一步 FAIL → 回滚或登记 OQ,禁止带病前进 |
| Example | 切片 d0.28 回退先例:d0.28/t0.87 → best≈0.81 降级告警 → 回退 0.25/0.88——第 2 步(A1 生成质量闸)拦截的成功案例 |
| 第④步依据 | B4 义务 #10:"C3 调参流程若无'登记常数与对账重制'步骤则相关 AC 假失败"(T_fog_min/K_dmg/N_draft/P_min/默认根行值调参 → B4 AC-19 对账对 (knife_adv, attack_up_basic) 漂移检测、AC-6 分支 4、AC-18 重跑) |
## 状态
| 状态 | 进入条件 | 行为/出口 |
|---|---|---|
| 未调参行 | 新增 (L,D) 行仅有结构占位 | 经七步流程 → 已调参 |
| 已调参行 | 行值经批量仿真 + 期望表对照 + 对账复算 | 任何修订 → 重走七步流程 |
| SLICE-TUNED 转正 | 切片临时值经本 GDD 背书(行值总表 v3) | → 已调参(切片行集转正条款) |
| provisional-pending-scan | 加难杠杆候选值已登记、扫描步未执行 | 扫描落带 → 已调参;越带 → 回滚候选 |
| 期望表偏离 | 调参后期望值越出目标带 | → 回滚或 OQ 登记(禁止静默出带) |
不变式:C3 无运行时状态机(数值系统);设计期任一行值恒处于上表五态之一;期望表偏离禁止静默出带。
## 边界情况
| 条件 | 行为 | 依据 |
|---|---|---|
| unit_count>1 行与高密度板组合 | 条款③满配语境破线(B1 F4 双轴约束)——该组合**禁止入表**;切片先例 = 群战行 hp/atk 下调补偿;对账复算在流程第 5 步强制执行 | Core Rule 9① / B1 F4 |
| 关卡深度轴缺行(如 D3 缺失、D4 存在) | **调参期冒烟断言拦截**(跨表存在性检查——C3 调参工具域载体;D2 R1 fail-fast 语义不动);R1 floor 解析静默兜底至低档(难度降而非崩)+ ConfigDB warning 四元组仅作运行时兜底——缺行根因是调参事故而非运行时事件 | AC-1 / D2 R1 |
| 请求越界关卡(level 999) | R1 floor 解析至表尾行(难度封顶 = 尾行值)+ warning——冒险结构(C2)应在其内容覆盖范围内生成关卡序列;越界 = 内容生产缺口,非玩家可达态 | D2 R1 |
| 玩家天赋拉满(atk+200%)打最低难度行 | 速杀退化(预警⑥——战斗 1–2 轮终局、奖励系统饿死自己的高光);处置 = 预警⑥仪表监控(战斗结束未开资格格占比 >70% 警)+ 接受——低难度行被高天赋速杀是 Roguelike 成长兑现的合法形态,无需修复(区间形态:K_min < 2 = 预警⑥观测位) | 区间模型 / 预警⑥ |
| 密度上探压垮推理率(d0.28 案例) | best inferability ≈0.81 < target 0.87 → 降级告警"接受最优出图";处置 = **回退**(切片先例:0.28/0.87 → 0.25/0.88)——密度与 target 是联动对(A1 求解器能力的天花板内联动调参),禁止为难度牺牲 P1 度量达标;流程第 2 步闸拦截 | F7 / A1 F4 |
| 条款⑤清图支配性反转(弃图率 >30%) | 玩家普遍发现"挖一半就弃图刷 RAP"优于"推到底清图"→ 清图奖励与清图体验被支配;处置 = OQ4 playtest 观测(自动模拟者不弃图,测不到真人策略);届时杠杆 = C 量级上调(B1 约束包①,现值 clear_blast 40)或弃图成本重定价(A3 域)——MVP 接受当前非支配设计态(缺口 6.1/51.8,实测后再裁) | B1 F5 / OQ4 |
| 投放节奏断档(某关无新敌种且无新环段) | OQ8 违例——敌信息总量见底,学习曲线枯竭;处置 = 流程投放检查项(每关至少一项新内容——敌种投放节奏条款);违规 = 内容生产缺口,C3 调参无法修补(数值不是内容) | B2 OQ8 / AC-6 |
| 全部行值调至域上限(hp 999 等) | 数值可行但可玩性崩塌;处置 = 通关率带对照拦截(期望表全面越带 = 配置事故)+ 域校验既有护栏;本场景属调参事故而非玩家可达态 | F5 / D2 域校验 |
| DifficultyTable 修饰行与直填行值叠加后越域(首个精英节点上线时) | B2.spawn 套乘后 hp >999 → **clamp 至域界 + warning**(fail-fast 不适用——修饰乘数是合法配置,越界是组合事故;域界 = 玩法硬顶);MVP 空表无此场景,规则预登记 | DifficultyTable 乘数域 |
| 通关余量越带 | p90 >13(赢得从容)→ 生存侧杠杆优先(治疗稀有度下调 / 敌 atk 上探),击杀侧杠杆次之;p10 <3(1–2 血惨胜成常态)→ 治疗供给上浮或 Boss 前恢复点增益——余量是形态指标,与通关率带联合判读 | AC-13 / 区间模型 |
## 依赖
**上游**:
| 系统 | 性质 | 接口要点 |
|---|---|---|
| D2 | 上游(硬) | 全部基表 schema、R1 解析、ConfigDB 单点读取归 D2;C3 产出 = 行值;DifficultyTable 新表走 D2 接口漂移规则(registry `difficulty_table` 已登记);禁绕过 ConfigDB 自建 load(D2 Rule 2);RngService `encounter` 封闭流(registry 已登记);**EnemyTable schema +2 字段(unit_count_max、armor_type)——接口漂移已回写 D2** |
| B2 | 上游(硬) | EnemyTable/HeroTable 行值由 C3 填(B2 拥有字段语义与校验域);修饰施加点 = B2.spawn(实例化时套乘、行值快照之前);**spawn override 参数 + unit_count_max 字段语义 + 物种集 {goblin, bugbear, ogre_chief}——接口漂移已回写 B2**;投放节奏 OQ8 共担;多敌种同深度选择规则共裁(OQ7——C1 联动) |
| B1 | 上游(soft,事实依赖) | 条款③⑤对账输出 = 调参约束输入(B1 F4/F5 = 约束生成器);P_perfect 乘数调参权归 C3(B1 登记);**begin_battle encounter 掷骰增补 + 护甲克制结算(armor_effectiveness/damage_a/damage_b 字段)——接口漂移已回写 B1**;期望口径双读数纪律(锚行读数不得用于 unit_count=2 放行);对账复算义务随每次修订 |
| B4 | 上游(soft) | RewardTable/RewardConfigTable 参数值归 C3;**供给控制器机制本体归 B4(转正登记——首件保证 + 指数递减注入,active_p0/active_decay 参数归 C3)**;clear_blast 换位 + K_dmg=0 转正(B4 保底语义迁移);敌 hp 曲线与奖励供给禁止独立调参(registry 联动重算义务——区间模型恒等式为联合检算工具);调参期批量仿真义务载体 |
| A1 | 上游(类型依赖) | BoardGenTable 行值归 C3(含 max_gen_attempts 策略);禁反向调用生成(仅经 D2/编排器传值);F4 批量红线(严格零降级)= 调参闸;**F4 全量批量工具 = A1 交付物(A1 OQ1),C3 level_monte_carlo 扩展为消费方**;d0.28 回退先例 = 密度×target 联动调参的实证;黄金向量/solver_rules 冻结不经 C3 |
| A4 | 上游(soft) | scope=global 语义由本 GDD 定稿(Core Rule 7);unlock_level 门控序列投放计划归 C3(随关卡扩展);**AC-11 未来腿 = elite/boss 标记字段落地时 A4 warning 升闸——已登记为 A4 接口漂移义务** |
| A3 | 上游(soft) | ActionEconomyTable 联动观测(ap_per_round 双重身份——节奏兼 RAP 转存规模)——**联动评估归 C3,调参所有权归 A3**(措辞更正:A3 GDD 无调参权授予回执);跨字段校验(动作成本 ≤ ap_per_round)约束内观测 |
| B3 | 上游(soft) | StatusEffectTable 四行强度(attack_up +50 / defense_up −30 / weaken −65 / ambush +3)provisional 归 C3 联动评估(B1 免伤轮合法性注记——强度评估归 C3 对账联动);减伤墙批(−50→−30)为 B3 侧行值批,C3 承伤带复验随批 |
**下游**:
| 系统 | 接口要点 |
|---|---|
| C1 | 节点深度语义消费;精英节点形态联动(精英节点预留条款 / A1 定稿强制重审);未设计——Boss=Dmax 约定即为其预留的接口 |
| C2 | 关卡序列的难度排布消费本 GDD 期望表;越界关卡 = 内容生产缺口(边界情况表);未设计 |
| C4 | 下游(远)——元进度天赋数值的"世界侧对照物":通关率目标带(F5)是 C4 天赋强度的标定基准;**区间平移换算率(+10hp ≈ +1 轮、atk 翻倍 ≈ K 减半)为 C4 设计输入**;未设计 |
| 呈现层(B5/D1) | Boss 登场仪式感 / 难度台阶可感知性——视觉义务归 B2/B5,C3 仅提供"何时变难"的数据(见呈现与 UI 契约) |
**双向一致性核对(registry / systems-index 回执):**
| 编号 | 内容 | 对侧 | 状态 |
|---|---|---|---|
| X-1 | systems-index 依赖表 C3 ← D2,B2;B1 块增补"C3 消费 B1 对账输出的事实依赖成立" | systems-index | ✅ |
| X-2 | "敌种 hp/atk/pattern 曲线数值、难度修饰 → C3" | B2 | ✅ |
| X-3 | "C3 = 条款③⑤约束输入方" | B1 | ✅ |
| X-4 | "权重/档位/威力曲线 + RewardConfigTable 参数归 C3" | B4 | ✅ |
| X-5 | "每行难度数值与曲线 → C3" | A1 | ✅ |
| X-6 | B1:begin_battle encounter 掷骰增补 + 扫描 scope 腿 + B1"零随机"边界扩界注记(encounter 流在结算步流之外) | B1 | ✅(本次修订批回写) |
| X-7 | B2:spawn override 参数、unit_count_max 字段语义与实例化记号调和、物种集 {goblin, bugbear, ogre_chief} | B2 | ✅(本次修订批回写) |
| X-8 | D2:EnemyTable schema +2 字段(unit_count_max、armor_type);SettlementTable +4 字段(damage_a_per_cell/damage_a_cap/damage_b_per_flag/armor_effectiveness) | D2 | ✅(本次修订批回写) |
| X-9 | B4:供给控制器机制承接 + clear_blast 换位 + K_dmg=0 禁区条款解除(保底语义迁移) | B4 | ✅(本次修订批回写) |
| X-10 | A4:elite/boss 标记字段落地时 warning 升闸(AC-11 未来腿) | A4 | ✅(义务登记) |
**对账与义务登记(B1 对账输出承接——审计资产):**
| 编号 | 内容 | 对侧 | 状态 |
|---|---|---|---|
| 条款③ | 满配破线两轴:unit_count>1 行须满足"降密度或降 m_amb"补偿(B1 F4 双轴约束)——registry clause3_supply 登记在案 | B1 / registry | 已登记——切片群战行 hp/atk 下调为合规先例 |
| 条款⑤ | 清图支配性:46.1/91.8 需求 vs **clear_blast C=40 现值(缺口 6.1/51.8,对 clear_blast 重推)**——登记为非支配设计态;预留杠杆 = C 量级上调(B1 约束包①)或弃图成本重定价(A3 域) | B1(B1 F5) | 已登记——OQ4 playtest 持续观测弃图率 |
| 预警⑥ | 快杀退化:战斗结束未开资格格占比 >70% 警——高天赋速杀低难度行 = 合法形态,仪表监控不修复;区间形态钩子 = K_min < 2 观测位 | B4 / B1 | 已登记 |
| unit_count 约束 | 区间 [unit_count, unit_count_max] ⊆ [1,3];>1 行联动条款③复算(流程第 5 步强制) | B1 / B2 | 已登记 |
| 期望口径双读数 | 锚行读数(2.0×/2.6× 类)不得作为 unit_count=2 的放行依据 | B1 | 已登记 |
## 呈现与 UI 契约
> C3 无自有视觉/音频/UI 资产(数值系统)——义务转注如下;无新增资产需求、无 D1 新增义务登记。
| # | 义务 | 归属 |
|---|---|---|
| 1 | Boss 登场呈现(仪式感锚点——体验锚点"压迫的顶点");设计输入 = Boss=Dmax 行的数据面(本 GDD 提供) | B5 战斗表现 / D1 |
| 2 | 难度台阶可感知性:新敌种 = 新图像线索 = 台阶的可视面孔(意图推测型——图像线索档位编码,"这只比上层的硬"可读) | B2(D1×4 义务) |
| 3 | 变异解锁的"这一层有雾了":图例与首遇提示(已登记义务) | A4 / D1 |
| 4 | 期望表 / 批量仿真输出 = 调参期开发工具(headless——非游戏内 UI) | 开发工具 |
| 5 | 恢复点/奖励点呈现:C1-lite 切片已实现的节点覆盖层;正式形态归 D1/C1 | D1 / C1 |
## Tuning Knobs
> C3 是全项目 knob 保有量最大的系统(数值 owner)。全部值 provisional 起步;域与校验归各表 schema(D2);本表只登记所有权、联动与危险方向。
| Knob | 表 | 域 | 联动 | 过高 | 过低 |
|---|---|---|---|---|---|
| EnemyTable.hp/atk(逐行) | enemy.tres | [1,999] / [0,999] | **与 B4 供给禁独立调参**(区间模型恒等式联合检算);cap×atk 禁独立(B2) | 打不死、战斗冗长 | 快杀退化预警⑥ |
| EnemyTable.unit_count / unit_count_max(逐行) | enemy.tres | [1,3] / [unit_count,3] | **>1 行须降密度或降 m_amb**(条款③);区间骰经 encounter 流 | 条款③破线 | 压力不足/遭遇零随机 |
| EnemyTable.pattern(逐行) | enemy.tres | MVP 三值组合 | OQ8 投放节奏(每关新环段) | 信息过载 | 学习曲线枯竭 |
| EnemyTable.armor_type(逐行) | enemy.tres | {none, a, b} | **克制矩阵联动**(settlement armor_effectiveness);伤害A/B 充能消费面(B1 域,C3 投值) | 克制失配 | 特化对策失效 |
| HeroTable.atk/max_hp | hero.tres | [1,999] | 全部输出式的分母锚(F4/F6) | 奖励价值稀释 | 挫败感 |
| BoardGenTable 尺寸/密度/attempts(逐行) | board_gen.tres | 域见 schema | **密度×target 联动**(d0.28 回退先例);unit_count>1 行联动 | 推理率不达标降级 | 板退化(低密度先布后删) |
| BoardGenTable.inferability_target(逐行) | board_gen.tres | **[0.85,1] 绝对锚** | 与密度成反耦 | 生成耗时/降级 | P1 空心化 |
| BoardGenTable 雾参数 | board_gen.tres | f≤8d / ≤0.25 | unlock_level=2 锁定 | P1 度量空心(绝对上限) | 雾内容缺位 |
| RewardTable.weight/power/tier(逐行) | reward.tres | 域见 schema | 区间模型恒等式;攻击面稀释;clear_blast 单行槽 | 即时类淹没明细/可选类贬值 | 窗口空转/重 roll 频发 |
| RewardConfigTable.{t_fog_min,k_dmg,n_draft,p_min} | reward_config.tres | 域见 schema | k_dmg=0 = 保底断言关闭(禁区条款已解除——保底语义由首件保证取代) | 保底永不触发 | 种子轮盘致命 |
| 供给控制器 active_p0/active_decay | reward_config.tres | [0,1] / (0,1] | E[战斗获取]≈1 目标(B4 机制本体承接);**与敌 hp 联动** | 速杀+囤积回归 | 可选类绝育 |
| SettlementTable.{damage_a_per_cell,damage_a_cap,damage_b_per_flag,armor_effectiveness} | settlement.tres | 域见 schema | Boss 甲B 对策 = B 充能;A 克制甲A;联动网络 #6 | Boss 裸打过慢 | 充能失效 |
| ActionEconomyTable.{ap_per_round,rap_refresh_cost,refresh_max_per_round} | action_economy.tres | 域见 schema | ap 兼 RAP 转存规模;**调参所有权归 A3,C3 联动评估** | 轮次冗长 | 决策密度坍缩 |
| SettlementTable.P_perfect(乘数) | settlement.tres | {100,200} | 完美排雷×清图支配性互 feed | 钓鱼线(护栏 B) | 高光缺位 |
| DifficultyTable 修饰乘数(MVP 空表) | difficulty.tres(待建) | [0.1,10](registry 预登记) | 精英节点上线时启用 | 越域 clamp+warning | 无修饰 |
### DifficultyTable schema(difficulty.tres 待建——D2 接口漂移建表)
| 字段 | 类型/域 | 默认 | knob |
|---|---|---|---|
| level_index + node_depth(复合键) | int × int | — | ✗(结构键) |
| 修饰乘数 | float [0.1, 10](registry 预登记域) | —(MVP 空表无行) | ✓(精英节点上线时启用;越域 clamp + warning——域界 = 玩法硬顶) |
| elite_ / boss_ 前缀预留字段位 | 命名空间预留(D2 schema 断言期望暴露) | 无 | ✗(预留,随精英节点语义定稿) |
### 联动网络(禁止独立调参清单)
| # | 联动 | 纪律 |
|---|---|---|
| 1 | 敌 hp ↔ 奖励供给(registry 已锁) | 单边移动必走区间模型恒等式联合检算 |
| 2 | unit_count ↔ 密度/m_amb(条款③) | 群战行上线前的强制复算 |
| 3 | 密度 ↔ target ↔ attempts(A1) | d0.28 回退先例的三元组 |
| 4 | ap_per_round ↔ RAP 体系 ↔ refresh 上限(A3 + 轮内刷新批) | 跨字段校验闸承载 |
| 5 | m_w(weaken −65)↔ 锚对照表(B1 F0) | 终值共裁 B4/B1,调参走 C3 提案通道 |
| 6 | armor_type ↔ 伤害A/B 充能 ↔ 克制矩阵(B1 域) | 敌种甲型变更须复算 Boss/普通战 K 区间 |
## 验收标准
| AC | Given | When | Then |
|---|---|---|---|
| AC-1 | LevelTable 任一 battle/boss 节点 (L,D);ConfigDB 加载全部表 | 调参期冒烟断言逐节点查两表 | board_gen 与 enemy 两表存在该 (L,D) 精确行(跨表护栏⑧转正——载体 = C3 调参期冒烟断言;运行时 floor 兜底属 D2 R1 既有语义) |
| AC-2 | MVP 全部 (L,D) 行 | 逐行扫描 inferability(批量 N=256/行——A1 F4 工具交付后的正式红线) | 全部行 inferability ≥ target ≥ 0.85(P1 绝对锚)且 A1 断言族(退化板/R₀≠S)零违例 |
| AC-3 | EnemyTable 全部 unit_count>1 行 | 条款③复算(密度 × m_amb 组合) | 无破线组合存在(Core Rule 9①) |
| AC-4 | MVP 全部行集(区间模型) | level_monte_carlo 逐战 S/K 区间扫描 | **零红档组合**(S_max ≤ K_min 禁止入表);教学位绿档;L1 形态带 = D0 绿 + 中段黄 + Boss 黄不红(F6 三档判定) |
| AC-5 | 期望表目标带(F5) | level_monte_carlo 全带扫描(基线/+100%/+200%) | L1 基线通关率 ∈ [30, 50](现值 60% 越上界——加难杠杆批内执行,扫描落带前 provisional-pending-scan);越带须 OQ 登记——禁止静默出带 |
| AC-6 | L1 全部行集 | 枚举敌种与环段 | 每关至少一项新投放(新敌种或新环段——OQ8;L1 = goblin→bugbear→ogre_chief 三段 ✓) |
| AC-7 | Boss 行(Dmax) | F3 检算(期望口径 Σ=153.5) | r_boss 记录在案(现值 0.98 带内 ✓;越带须 OQ 登记——加难走廊 [1.1,1.35] 走 OQ2/扫描) |
| AC-8 | 每轮刷新 | 计数达 refresh_max_per_round | 第 N+1 次拒绝(表值驱动——A3 域行为,C3 侧验收 = 联动评估记录存在) |
| AC-9 | 任何 C3 直辖 knob 修订 | 检查其联动网络(Tuning Knobs 六组) | 对应联合检算记录存在于调参日志(禁止独立调参纪律的流程面) |
| AC-10 | DifficultyTable MVP 空表 | B2.spawn 任一 (L,D) | 无修饰行被消费(结构位不产生行为)且未来首行上线时套乘点 = 行值快照前 |
| AC-11 | scope=global 变异行 | MVP 腿:扫描 VariationTable 全行 | MVP 无 global 行存在(表级约束)且 A4 warning 通道在位;未来腿:elite/boss 标记字段落地时加载/生成期拒绝(A4 接口漂移义务——X-10) |
| AC-12 | 每次调参批 | 检查 README 调参日志 | 七步流程的执行记录齐备(流程纪律的可审计面) |
| AC-13 | 通关余量(新指标) | level_monte_carlo 通关轨迹采集 | E[HP_end \| 通关] 的 p90 ≤ 13 且 p10 ≥ 3("只剩一点血"量化带——越带按边界情况表杠杆处置) |
| AC-14 | 关级恒等式闭合 | actuals 逐项审计(流程第③步输出) | 输出侧五项(基础攻击/刀/clear_blast/A+B 充能/attack_up)与输入侧(承伤/治疗/减伤)合计闭合 Σ敌hp期望×(1+缓冲),残差 <5%(provisional 阈值)且奖励输出占比 ∈ [15%, 40%] |
## 开放问题
| # | 悬案 | 进展 | owner | 时机 |
|---|---|---|---|---|
| OQ1 | L2+ 曲线数值——本 GDD 定结构/流程/目标带;具体数值行随关卡内容扩展填充(内容与数值同批——C2 关卡序列定稿后) | 结构已定 | C3 随批 | L2 内容扩展时 |
| OQ2 | Boss 血量占比——v3 记录值更正 0.98(153.5 期望口径,带内 ✓);加难走廊 [1.1, 1.35] 预登记(Boss 180–207 候选);真人实测 Boss 战时长后终裁 | 走廊预登记 | C3 | F7 扫描 + playtest 批次 2 |
| OQ3 | 真人修正系数——批次 1 方向确认:真人显著强于模拟者(v2 真人 100% vs 模拟 80%);F5 方向声明已更正落地;真人系数待 v3 试玩采集定量 | 方向已定 | C3 + playtest | playtest 批次 2 |
| OQ4 | 条款⑤支配性真人观测——批次 1 初步裁决:真人零弃图倾向 → 非支配设计态成立、C 量级不上调 ✓(B1 约束包②采信);**P1 对冲弱化同步声明(B1 ② 条件):本裁决弱化 A3 条款⑤对 P1 失败模式的经济对冲,弃图率观测加权监控随之**;维持登记:单一样本 | 初步裁决 | C3 + B4 | 持续 |
| OQ5 | 精英节点形态——完整语义(独立节点/词缀/出现规则)= C1 分支地图定稿后的联动设计(A1 定稿强制重审随之触发) | 未设计 | C3 + C1 | C1 GDD 定稿 |
| OQ6 | 轮内刷新对难度模型的冲击——批次 1 初步读数:刷新零使用,根因是盲猜墙不足(inferability 0.88);杠杆预登记:密度联动上探(d0.28/t0.85——A1 回退先例风险);保持开放 | 初步读数 | C3 | playtest 批次 2 |
| OQ7 | **加难杠杆扫描执行 + 完美策略档测量**——杠杆候选(r_boss 走廊 180–207 / 群战上探 / decay 0.6)已预登记;执行 = 七步流程第③步 level_monte_carlo 扫描(三档判定 + 通关率带 + 通关余量 + 占比四表对照)。**2026-09-14 完美策略档落地(用户拍板)**:零盲挖/全标旗/卡死刷新技能轴上界测量仪(godot 本机可用已验证)。**区间批已落地并复测(同日拍板②——奖励五行 power 区间 + 敌方 atk 区间 ±3)**:完美档 0 加成仍 100%(承伤 3.5→3.9)——**数值区间杠杆族对 ≤40% 验收线无效已实测坐实;主项待裁决 = 结构性杠杆三选**(承伤硬地板〔不可减免平伤,B1/B2 域〕/ weaken 饱和语义〔全标旗收益递减,B3/B1 域〕/ 极端区间宽度〔建议否决——毁基线与数字可读性锚〕);落带前 v3 值 provisional-pending-scan | 完美档已测;区间批无效性已证;结构杠杆待裁决 | C3 | 用户裁决后 |
### 试玩批次记录
| 批次 | 日期 | 数值基线 | 读数 | 裁决产出 |
|---|---|---|---|---|
| 批次 1(用户本人) | 2026-09-12 | v2 | 全部满血通关(清图为主/优先标雷/不用道具三策略均通)——基线难度不足定量坐实;Boss 血量 OK 或可上调;刷新零使用;零弃图倾向;治疗包零使用(不掉血伴生);伤害道具无特色(暂保留) | v3 数值批(atk 4/4/6/4/7 → 7/5/9/6/9;D0 24 保持防秒杀、Boss 130→150)+ DND 命名批(goblin/bugbear/ogre_chief——用户指令)+ 护甲克制批(armor_type none/a/b + 克制矩阵,数值 provisional)+ F3 带修订 + OQ2/3/4/6 读数;v3 扫描:基线 60%、败北向 Boss 集中 4/6、+200% 100%;下一批 = v3 真人试玩(OQ3 定量 + OQ2 终裁) |
| 减伤墙批(defense_scan 触发) | 2026-09-13 | v3 + 减伤墙批 | defense_scan 实测墙轮 39%、真人局 12/12 轮零承伤满血通关——减伤墙过强定量坐实 | defense_up magnitude −50→−30(叠满两层 = −60 帽)+ 石肤权重 24→16(attack_up 升池内最高行)——B3 侧行值批,C3 承伤带(F4)复验责任随批 |
## 版本历史
| 版本 | 日期 | 改动 |
|---|---|---|
| v2 | 2026-09-14 | /design-review 修订批(8 blocking 核销 + 4 项用户拍板):**F6 供给带退役 → 生存链区间模型**(S/K 区间三档判定 + 关级恒等式 + 输出占比带 + C4 平移换算率——用户设计)· **带锚定稿**(通关率 [30,50] / 通关余量 p90≤13 & p10≥3 / L1 形态带)· F3 口径统一 Σ=153.5 / r_boss 0.98(旧验算 142 替代)+ 加难走廊预登记 · F4 升级生存侧(S 区间)· F5 带 [30,50] + 真人方向更正 · **MVP 行值总表 v3 转正**(切片 .tres 权威源,旧 SLICE-TUNED 表替代)· DND 更名生效(goblin/bugbear/ogre_chief)· **四批转正登记**(armor_type / K_dmg=0 / clear_blast 换位 / 供给控制器归 B4——用户拍板)· B1/B2/D2/registry 接口漂移回写(X-6~X-10)· F7 六步→七步(B4 对账重制步)· AC-4/5 重写 + AC-13/14 新增 · 条款⑤重推(C=40,缺口 6.1/51.8)· Boss atk 台阶重定义 · 减伤墙批补录 · OQ7 新增(扫描执行) |
| v1-lean | 2026-09-13 | 格式迁移:legacy 原稿按 lean 样例重排——修订注记出正文收敛至本表;规则/枚举/边界情况/对账登记/AC 转表格;曲线生成与调参流程转字符画;公式、Variables 与验算数据全保留;F3 带按现行 [0.5, 1.1] 成文;语义零变更 |
| 试玩批次 1 / v3 数值批 | 2026-09-12 | 遭遇随机化引入(unit_count 区间语义 + RngService encounter 封闭流——Roguelike 局感引入批,Peglin 对比报告结论 2 的本切片落地项);F3 带修订 [0.35, 0.55] → [0.5, 1.1];v3 数值批(atk 7/5/9/6/9、Boss 130→150、D0 24 保持防秒杀)+ DND 命名批 + 护甲克制批;OQ2/3/4/6 读数登记(条款⑤非支配设计态采信) |
| 初稿 | 2026-09-12 | solo 模式出稿:九核心规则 + F1–F7 + 12 AC + 六 OQ;SLICE-TUNED 转正声明;Boss=Dmax 约定、DifficultyTable 结构位与 scope=global 语义定稿 |