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

6.4 KiB
Raw Blame History

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 全绿
  • 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