因为Hydra的团队在术士法师牧师的带领下赢得了Asmongold的TBC JJC的比赛,显然从这个错误中受益匪浅。



Blizzard LogoBlizzard

蓝帖:

暴雪已经找到了导致冰霜新星(俗称冰环)和其他效果受到太大伤害而被破坏的TBC测试版中bug背后的元凶,并将在TBC竞技场第一个赛季开始前应用一个热修复补丁!


暴雪冰环修复程序(源代码)


我们已经得到了很多关于需要多少伤害才能打破一个被困在根效果中的敌人的反馈,比如冰霜新星。Beta测试玩家报告说,破坏根效应需要太多的伤害,事实证明,他们是正确的。我们花了不少时间去调查这个问题,但最终我们发现了一个bug,它解释了我们在Beta中看到的奇怪行为,我们应该能够在第一个竞技场赛季之前修复它。


这个故事


首先,这是一个挑战,原因之一是这种行为是故意随机的。破坏树根所需要的伤害并不是固定的;有一系列的伤害可能是必要的,这让它成为玩家的风险/奖励计算。不能保证重现问题,测试它看起来就像正常的运气使然。


当这一消息首次被报道时,我们查看了法术的运行,并验证了它们与原始数据相符,这让我们最初得出结论,这只是随机的运气。然而,我们在之前的例子中已经看到了像这样的问题存在更深层次的问题,所以当bug报告继续出现时,我们知道有必要进行进一步的调查。


我们所关注的是数据中的运行脚本,因此我们可以确信它们100%匹配。与此同时,我们使用的代码与2007年使用的代码并不完全相同,所以有时我们会看到由于我们采取措施使原始数据和当前代码相互兼容而导致的问题。我们的下一步是检查法术脚本的输入,并验证我们确实发送了所有相同的信息供脚本评估。在完成对这些数据的审计后,我们再次得出结论,这似乎只是随机的机会。我们的代码发送脚本的数据值是匹配的,它对脚本结果所做的事情是匹配的,脚本本身也是匹配的。


我们所看到的一切似乎都是正确的,所以在第二次调查后,我们再次得出结论,随机计算正确地符合我们的意图。


但感觉还是不对。


这是发现bug真正具有挑战性的地方,有时我们希望运气好。结果是,在继续查看bug并在调试器中测试之后,我们看到了一个奇怪的行为:当水箭在一个霜冻新星中的目标上使用时,它被评估为近战攻击,这是不正确的。那就是指引我们找到真相的线索。在根断点计算中没有错误,错误本身是随机的。


有时会给公式发送不正确的伤害源的bug。因为它不是每次都不正确,所以我们在代码计算中漏掉了它。事实证明,近战攻击比远程攻击更不可能破坏根源,而漏洞在于远程攻击可以在某些难以复制的条件下被随机视为近战攻击。


结论


这一发现之所以具有挑战性是因为它是系统中随机出现的漏洞,而系统在正常运行时便会出现随机行为,这两种随机性的来源结合在一起让我们感到困惑。


感谢所有帮助我们找到这个人的人!


一个热修复补丁正在路上


一个有趣的方面是:有了这个修复,破坏的几率实际上会比2007年原版燃烧远征的第一季略高。这是因为我们使用的是2.4.3数据,这增加了在60级以上的目标上破坏根系的几率。


但是不要扔掉那些法师的天赋!他们还有冰块。