Files
gplan-2/production/qa/bugs/BUG-0003.md
T
2026-09-14 18:18:49 +08:00

64 lines
6.4 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.
# Bug Report
## Summary
**Title**: Boss 攻击拍零兑现(ogre_chief pattern 轮转正常但英雄血量纹丝不动——攻击链对该敌未生效)
**ID**: BUG-0003
**Severity**: S2-Major(复核降级——原报 High;非代码缺陷,零承伤根因为已拆除的减伤墙设计语义)
**Priority**: P2-Next Sprint(无代码遗留;难度带复验归 Q1 调参批数据,见 Notes)
**Status**: Closed
**Reported**: 2026-09-12(playtest-2026-09-12-designer 报告 Bugs 表 #2)
**Reporter**: 用户(设计师本人,试玩遥测);本档由 2026-09-13 会话按报告 Action Routing 建档并复核
## Classification
- **Category**: Gameplay(战斗结算)/ 数值设计
- **System**: B1 战斗段 F2 乘区(hero_defense 池)× B3 defense_up(stack×max_stack)× B2 行为环
- **Frequency**: 原报两局 Boss 战全部攻击拍零兑现;当前构建(defense_up=-30 批)0 复现
- **Regression**: No——攻击链代码路径无缺陷;行为由表值组合完全解释
## Environment
- **Build**: 原报 = 垂直切片 · 2026-09-12 五区改造批(status_effects.tres defense_up=-50 旧值);复核 = 2026-09-13 当前工作区(defense_up=-30)
- **Platform**: PC · Win10 · Godot 4.7.2 · seed 42 固定
- **Scene/Level**: 第一关 Boss 节点(ogre_chief,pattern [attack, attack, charge, heavy],atk 9)
- **Game State**: 12 结算轮 hero hp 恒 50/50;快照 buffs[] 恒空
## Reproduction Steps
**Preconditions**: 原报基于 playtest_42_20260912T201317.jsonl(主分析局)+ 20:41 辅助局。
1. 正常推进至 Boss 节点(此时库存/状态由前序战斗积累)
2. Boss 战 6 轮:beat 轮转 attack→attack→charge→heavy→attack→attack 正常推进(advance 在跑)
3. 英雄承伤恒 0(含 fresh 池轮)——原报判「攻击链对该敌未生效」
**Expected Result**: 非 charge 拍应按 atk.total × 池乘区兑现伤害。
**Actual Result(复核)**: **攻击链健康——零兑现由 defense_up 叠满墙(设计语义)全额解释**。快照 buffs[] 恒空是观测盲区:快照取在衰减段之后,时效 1 的 defense_up 当轮授予当轮衰减,快照永远看不见——「buffs 空」不构成「无墙」证据。旧数据 defense_up magnitude=-50 × max_stack 2 = 池 -100 = pool_clamp_lo 触底 → F2 乘区 ×0,任何 atk 曲线乘在 ×0 上(原报根因分析「v3 主杠杆是乘在 ×0 上的调参」由此坐实)。
## Technical Context
- **Likely affected files**: `core/battle_orchestrator.gd`(_combat_segment / _clamped_pool / _resolve_damage)、`core/status_container.gd`(stack 授予)、`core/damage_math.gd`(pool_damage)
- **Related systems**: settlement.tres(effect_pool_map / pool_clamp)、status_effects.tres(defense_up 行)、reward.tres(defense_up 权重)
- **Possible root cause**: 设计语义——「stack 策略 × magnitude × max_stack 触池 clamp 下限 = 100% 免伤」授予段生效、先于战斗段,当轮挖到的减伤当轮全额兑现。非 Boss 特异:普通敌在同一墙轮同样零兑现(20:13 局 12/12 轮零承伤)。
## Evidence
- **探针(fresh 池裸验,当前构建)**:`smoke/damage_probe.gd -- boss 42` Run A(零挖掘停手轮,零授予零墙)——Boss 攻击拍 d_tick = atk.total 全额兑现:attack 9/9 ×2、charge 0(设计)、heavy 18/18,6 轮内击倒英雄(defeat)——**H2(Boss/敌攻击链缺陷)否证**;拍名轮转与真人局逐拍一致
- **探针(墙行为,当前数据重证)**:Run B(自动挖掘)——减伤授予可见(池 -30 → d_tick 21→14;池 -60 → 残余 ×0.40),墙轮承伤恒 > 0:**09-13 调参批(-50→-30)后墙最深 -60 > clamp_lo -100,归零不可达**
- **遥测取证**:20:13 局 Boss 6 轮 raw 应承伤 9/9/0/18/9/9 = 54 点 vs 实测 0;d2/d3 首轮攻击拍同样零兑现(非 Boss 特异)——与「全轮墙」假说唯一相容
- **回归断言**:smoke_all 新增 `_smoke_attack_chain_fresh_pool`——停手轮(零授予→池恒空)断言非蓄力拍 d_tick == atk.total 全额兑现且 > 0;若未来出现 fresh 池零兑现(真攻击链缺陷)在此被抓
- **修复后验证**:冒烟 148/148 全绿
## Related Issues
- playtest-2026-09-12-designer 报告 Bugs 表 #2 / 根因分析「问题②难度:v3 调参为何无效」/ Top 3 Priorities #1
- BUG-0002(同份遥测的姊妹观察——同一探针分割)
- 09-13 减伤墙调参批(status_effects.tres -50→-30 + reward.tres 权重 24→16——本缺陷的设计侧处置,先于本档落地)
- Action Routing 原定「/propagate-design-change b3-status-effect.md(候选:clamp 收紧/乘法衰减/重击拍穿防)」——**未执行**:结构冻结域拦截(settlement.tres 池 clamp [-100,+100] 冻结)+ 数值拍板权归 C3,候选改法列入待设计批清单,见 Notes
## Notes
- **待设计批清单(超出本会话授权,列出不执行)**:① 墙语义候选改法(clamp 收紧至 -60/-70 / stack 乘法衰减 / heavy 拍穿防)归 C3 + /propagate-design-change;② B3 GDD "-50" 文字与 status_effects.tres 批注同步(09-13 批已登记随下次 B3 修订批);③ 当前墙残余 -40%/轮仍显著——是否越 F4 带(普通场 ≤20%、Boss 场 ≤50%)由本会话 Q1 复扫数据(production/session-state/active.md 41 条)供 C3 裁决,本会话未做任何数值拍板。
- 原报 Action Routing 将本项路由至 /bug-report 与 /propagate-design-change 双通道:bug 通道结论 = 代码无缺陷(本档);设计变更通道 = 候选改法待 C3 拍板(上表)。
## Closure Record
**Closed**: 2026-09-13
**Resolution**: Rejected as coded——攻击链无缺陷(fresh 池全额兑现 + 击倒可达);零承伤根因 = defense_up 叠满墙(设计语义,旧数据 -50×2 = clamp 触底 ×0),09-13 调参批已拆除归零能力。沉淀 = fresh 池攻击链回归断言(无游戏数值变更)。
**Fix commit / PR**: 不适用(变更 = smoke/smoke_all.gd `_smoke_attack_chain_fresh_pool` + smoke/damage_probe.gd 探针)
**Verified by**: 2026-09-13 会话(damage_probe boss 模式 7/7 PASS + smoke_all 148/148)
**Closed by**: 用户授权任务(playtest-2026-09-12 报告 Top3 执行会话)
**Regression test**: `smoke/smoke_all.gd` `_smoke_attack_chain_fresh_pool`;`smoke/damage_probe.gd -- boss`(Run A fresh 池裸验 / Run B 墙行为实测)
**Status**: Closed