你觉得甩枪手感正常吗?

日前有CSer分析了游戏中为何甩枪手感如此怪异的文章,内容非常不错,值得一读。以下为文章内容翻译:

在这个社区里,我看到很多职业选手和普通玩家都在抱怨甩枪(flicking)的感觉很怪异且违背直觉,我自己也有同感。对于那些经常在社区里看到我的人来说,我一直强调CS新版本里的甩枪相较于其他第一人称射击游戏类型,感觉不自然且违背直觉。

然而我决定全面深入了解这个问题,花了几天时间试图量化究竟是什么让甩枪感觉怪异,这个问题主要影响了CS里使用AWP的玩家。答案可能会让你惊讶,问题并不在于sub-tick。

帧率时间变化(Frametime Variance)和网络代码(Netcode)才是罪魁祸首。

不信?让我来解释。去年,MrMaxim和qkNorris分别制作了视频,前者讨论了sub-tick射击,后者探讨了所谓的“鼠标输入延迟”。在MrMaxim的视频中,他解释了现在点击鼠标后,开火动画会在下一帧显示,而射击命中判定则在下一个tick显示。随着最近客户端侧伤害预测的更新,射击命中判定现在响应更灵敏,因为它们“似乎”将开火动画与下一帧的射击命中判定同步了(前提是服务器根据你的视角确认你击中了敌人)。

与此同时,qkNorris解释了射击命中判定是如何在点击鼠标时基于上一帧打上时间戳(time-stamped),而不是之后(这在与CS:GO里是不同的)。与点击之后才判定相比,在点击之前就进行射击命中判定有什么好处呢?这样一来,游戏无需等待下一帧渲染来确定你射击的位置,而是抓取你点击之前的那一帧(这一帧已经生成),让服务器能快速获取已生成的帧,从而减少客户端和服务器之间的信息延迟。所以,理论上它应该更好,因为响应更灵敏且更准确。

现在考虑到这些,帧率时间变化和网络代码是如何导致甩枪感觉糟糕的呢?还记得qkNorris解释的点击鼠标时射击命中判定仅基于上一帧,以及MrMaxim解释的开火动画仅在下一帧显示这部分内容吗?

这种基于帧来处理射击命中判定和开火动画的特定方式存在问题,帧率下降(FPS drops)和帧率时间(frametime)变化会导致你的甩枪表现不稳定。

让我给你举个典型的例子:

假设你在Mirage地图的VIP处拿着AWP架点,预计敌方阵营玩家在回合早期会peek。现在当敌方的人物模型出现在你的屏幕上时,由于CS糟糕的FPS优化,当敌人的模型在你屏幕上移动时,可能会导致你的FPS下降、帧率时间飙升。就在你试图甩枪瞄准敌人的那一刻,由于渲染的帧不稳定,sub-tick更有可能检测到你点击鼠标错误的那一帧。

我再说一次,sub-tick在检测你点击鼠标这件事上是准确的。问题出在敌人向你探头以及你在屏幕上甩枪的整个过程中,你的帧率下降和帧率时间飙升。这就是为什么你觉得甩枪感觉怪异。

这并不是因为它违背直觉,我承认我之前错误地这么认为了。而是游戏没有生成稳定的帧,使得sub-tick无法通过准确记录你点击敌人时的那一帧来让玩家获得优势。

现在,再加上CS开发者因动画带宽大而正在努力修复的未优化网络代码,这就造成了一种感觉,即与CS:GO相比,现在的peek优势要大得多,因为你没有足够的机会去应对敌方随意的peek。

在CS:GO里,当敌人随意地向你peek时,架枪位是可行的,因为你仍有不错的机会击杀他,因为射击是在稳定且离散的tick(64或128tick)中判定的。

有了sub-tick后,射击基于你的帧来判定,理论上这更准确,因为你无需等待tick。

但这是一把双刃剑,虽然理论上更准确了,但CS新版本严重依赖你的硬件,除非你有一套旗舰级配置,能在相当的帧率下保持1%或0.1% Low FPS稳定,否则你会因为上述原因感觉甩枪打不中。

解决办法呢?

向Valve开发者呼吁,让他们修复CS新版本的帧率时间变化(以及整体的FPS优化)和网络代码问题。

**免责声明**

随着更多更新到来,帧率自然会有所下降。这是正常的,不正常的是1%和/或0.1%的低帧率给你带来不稳定的游戏内表现,从而影响你的游戏体验。

这才是主要问题。

总结:甩枪依赖稳定的帧率时间和良好的网络代码。不幸的是,CS新版本优化太差,导致很多人因此在甩枪方面遇到问题。