负责Dota 2的Valve开发人员Jeff Hill在Reddit上解释了为什么在战争迷雾中能看到粒子效果的问题。
现在的情况是,几乎所有的粒子效果都有一个数值,大家可以在战争迷雾中查看粒子效果的可见性。如果你在控制台中输入dota_particle_fow_debug 1,你就会看到这个。
每个数值都必须在粒子效果出现的那一刻在代码中被定义,否则它只能根据实际情况的的边界进行推测。即使在战争迷雾中,我们也需要对粒子效果进行更新,这样在从战争迷雾显示时它们才能处于正确的状态,否则它们会在那一刻 “重启”。有时,你可能会在肉山和野怪死亡时看到这种情况。
最后,粒子效果要么是可见的,要么是隐藏。不存在“只在非战争迷雾状态中展示”。
如果你能从战争迷雾外“瞥到”粒子特效,要么是这个数值对游戏特效来说太高了,要么是代码中根本没有对此定义。有一个基本规则是 “如果你处在可能受到伤害的位置,那你也能看到技能效果”。这些结合在一起就造成了一种情况,这会导致你在肉山坑或其他地方只看到沙王的一部分埋沙效果,但是因为你看到了全部的特效,即使你只有特效的一个角落的战争迷雾视野,这看起来很奇怪。
我要说的是,我们可以修复这些bug,并且可以用一种不造成影响的方式修复它(如果我们在代码中进行定义,粒子特效的值不会根据表面上的特效而改变),但这要根据实际情况修复,以便正确地与整体游戏代码吻合。一个出现问题的比赛编号和时间戳对此真的很有帮助,因为它可以用短视频和截图所不具备的方式来准确展示发生的问题。我已经花了很长时间来追踪这些错误,但这些天,我查看到的粒子特效和战争迷雾交互的错误报告实际上都很正常,只是看起来可能有点奇怪。
抽象地来说,只发布你所拥有的持续的粒子特效可能更好,但这对粒子特效代码来说是一个实质性的改动,一直会上升到网络级别……当你从服务器上收到指令时,他可能对性能产生非常负面的影响——“添加这个沙暴,顺便说一下,他已经持续了4秒,所以现在抓到了这一帧”。这还需要在服务器上模拟粒子来检查战争迷雾的正确边界,但这不是先做要做的事。
我希望这些技术细节对当下的系统工作有所帮助,即使这不是我们更想看到的“下个补丁就会修复”。