9utsss

172 个断言全过之后,才发现木桩血量写错了

日期:2026-10-23

标签:#动作roguelike #测试 #Godot

动作 roguelike 的机制 demo 完工时,自动化验证是这样的:机制断言 172/172 通过,冒烟测试 10 步全绿,战斗测试全成立。

然后实机一玩,抽到训练木桩场,卡在那里打不完。

原因很土:木桩血量写了 100000,而战斗只在敌人清空时结束。断言测的是「伤害算得对不对」,没测「这一局到底会不会结束」。

两个坑

坑一:状态机没有出口

任何「靠清空敌人结束」的场景,都要保证敌人的总血量在时间预算内。改法是血量降到 900(约 24 秒),并加了一条自检:按真实路线反推遭遇,总血量必须在 75 秒预算内。

坑二:预兆期间还能被击退

敌人攻击前有预兆,玩家在这段时间继续输出,能把它顶出攻击距离,于是攻击落空——玩家发现「贴脸打」可以无条件取消敌人攻击,整个战斗退化成削血。

改法:预兆期间击退归零,同时保证判定距离比起手距离更宽(+24px)。

顺带记一笔

还回滚过一个方案:让朝向跟随移动方向。想法是「想打人就得往人身上撞」,听着很帅,实际手感明确更差——走位本来是唯一的闪避手段,结果打人和躲人变成同一个动作。回滚成「鼠标决定朝向 + 左键出招」,并在冒烟测试里留了守卫断言,防止以后又跑偏。

结论

断言证明的是逻辑,不是可玩性。 木桩场那套自检(总血量预算)比 172 个伤害断言更能救命,因为它测的是「一局能不能结束」。