subtick简谈
博客好久没更新文章了,先搬运一下自己以前的文章🥰 写于24/3/31
因为这几天玩cs2手感不佳,便想着了解下cs2中被广为吐槽的射击手感是咋回事,于是就查到了subtick机制。因此这篇文章目的在于简单的了解一下,而非深入研究。
什么是tickrate?
"tickrate"也就是服务器刷新频率,数值越高,服务器刷新频率越快 。简单来说,在对战中系统会实时的侦测场上每名玩家的位置。8tick就是每秒侦测8次,64tick就是每秒侦测64次,128tick每秒128次,举个更为简单的例子,小明在一个纯黑的环境中奔跑,你的目标是朝着他扔石头,但是没有一丁点亮光,伸手不见五指,你看不见他,你手里有3个按钮 分别是 每秒钟用闪光灯朝着黑暗里闪8次,闪64次,和闪128次。显然,128次会更有利于你击中小明。
可以观察到,人物模型在tick值越高时,你的准星越能预瞄到这个人物模型,击中人物的难度会更小(马枪除外),tick值越低,就会出现明明准星在人物模型上,却致命空枪的情况。但是目前官匹似乎只支持64tickrate,这可能与越高的Tickrate对客户端CPU和网络吞吐量(网络吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率)的要求也就越高有关,照顾低配置玩家。
subtick和传统tick的区别所在:
首先来说一说,用户操作与tick的联系:
在服务器刷新间隔之间,玩家在客户端上显然会有移动或者射击的行为,在传统的tick中,也就是csgo的tick机制中,玩家在客户端进行的操作会发送至服务器,服务器会将tick之间的一系列操作处理后统一放在下一个tick时返回到客户端,所以在csgo中,枪声、弹道轨迹、击中反馈都是统一的,所以游玩体验也会更加真实(除了甩狙,这就是利用tick的一个高端操作:在甩动准心时click一下,即使开火时准星不在敌人身上,但最终还是能够打到下一个tick发生时准星所在位置,类似于“抖枪术”)但同时,若准星没有在下一次tick时移动到敌人身上,则不会造成伤害。
而在cs2中,未改善设射击反馈之前,射击体验相当别扭。我们不妨把上面这张图的两个移动键当作tick,那么click键当作开火,那么在click时,若敌人在准星处,即使敌人下一次tick时已经移到准星外,那么敌人仍会被击杀,同时射击反馈以及击杀反馈会在该tick处返回给客户端,这就导致了一种“子弹会拐弯”的视错觉。
接下来上两张图:
第一张图为CSGO,64 tick,本该命中的一枪没能命中(当射击动作发生在两个tick之间的话,着弹点会落在后面那个tick所面向的方向,而不是你按下射击瞬间所面向的方向,这也是64tick为什么有时候会吞子弹的原因)
第二张图为CS2,64 tick,多亏了 subtick,本该命中的一枪命中了 (着弹点会落在按下射击的瞬间所面向的方向)
如果感兴趣,可以在b站上看看这个视频,里面有更为具体的检测及展示: https://www.bilibili.com/video/BV1w8411172y/?share_source=copy_web&vd_source=b1786a6be26f643c38a6310e66f0babd
subtick是如何知道玩家在tick间的操作的呢?
subtick本质上还是通过细分游戏逻辑处理步骤来提高游戏精度和流畅度的一种技术。
Sub-tick技术按时间计算。服务器会计算出tick之间的动作,根据准确的时间点来判定,可能用了新的预判跟延迟补偿技术(此处不去深究)。就类似于将一个tick(比如20毫秒)分成多个子步骤,每个子步骤处理一部分游戏逻辑,每个子步骤的时间间隔更短,比如可以将一个tick分为4个子步骤,每个子步骤处理5毫秒的逻辑,然后再在20毫秒以后的大tick进行处理。这样就可以更及时地更新游戏状态,提高射击的精度和流畅度,但是同时也会导致音画不同步的别扭感。
所以它甚至可以等效于256tick,但是只是相当于在64ticks的大tick之间“插眼”,若这三个眼没有检测到玩家的操作,那么还是64tick,一局下来,cpu的运算量比128tick还少,(128ticks是一个效率很低的方法,因为为了获得这些信息采用了倍速更新,是巨大的资源浪费,这也是为什么搞subtick的初衷)这么来说,subtick照顾了下低配玩家,也照顾了服务器。
如果想详细了解的话,可以看看这篇帖子,比较详细的讲了tick间操作是如何实现的:
cs2的subtick是什么? - 知乎 (zhihu.com)
subtick的好与坏:
总的来说,subtick像是在网络和服务器能力不够的情况下的一种取舍(也可能是因为cs的画面更加精致的原因?),它用动画滞后以及更高的击杀延迟还有更加不稳定的延迟手感来换急停瞄准开枪的100%的击中。
具体优点可参考下文,此处不深究:
https://zhuanlan.zhihu.com/p/661523345
有人说他是sbtick,有人说他是fps史上最强的革新,但是萝卜白菜各有所爱,这种事情见仁见智,但是v社还是非常积极的去修改bug。11/8号对subtick效果进行了改进:以前是本地直接渲染,现在会等一个tick和服务器同步,有点回归于传统tick的感觉了。牢玩家喜大普奔:
这样一些抱怨cs2手感差的csgo老玩家可能会找回一些在csgo的手感(?)
csgo的火热奠定了v社坚实的玩家基础,这么来说,subtick一定会被玩家逐渐接受,v社也会将它改的越来越好,cs2仍然会是最火爆的fps游戏之一。
(v社也是挺有诚意的:)
不过像cs这样一种玩法及其简单但十分硬核的fps游戏,技术才是王道。它不像瓦有各种炫目的技能;也不像apex一样考验身法;也不像战地系列那样剧情丰富。subtick技术的出现,不可否认的是威慑的一次大胆尝试,这也要求玩家的配合与适应以及debug技术。