Subtick的移动判定办法以及如何变成CSGO的手感
本专栏的参考是两个在10月4日与10月5日的reddit的帖子:
1) r/GlobalOffensive/comments/17042c8/why_movement_in_cs2_might_feel_different_for_you/
2) r/GlobalOffensive/comments/170nzzj/analysis_of_movement_in_cs2_subtick_and_more/
在这里关联两个视频,一个是Fiveso很早前就做了的(我也翻译了的),另一个是帖1对应的视频。贴1人是Faceit 10级+kz玩家。本专栏以概括帖子2为主,并把帖子1的玩家提出来的解决方案放在文章最后。帖子2是基于帖子1的想法给出的实验证明贴。
两个关联的视频:
Fiveso的熟肉:
https://www.bilibili.com/video/BV1HX4y1i7iG/
10级玩家的视频:
https://www.youtube.com/watch?v=-El_3dibyu0
相关内容概括:
subtick目前的机制是1/64秒完成一次传输。所以是64tick。但是CS2会记录你按下操作的准确时间点,然后相应地计算到达下一个tick时的初速度。在两个tick之间你不会动。大概一个被subtick记录的移动指令像下面这个样子。你可以看到它被视为"subtick_moves"。
subtick_moves
{
button: 8
pressed: true
when: 0.0173373781
}
subtick里你按下后的初速度是变动的,根据你具体按下时间而定的;而CSGO 64tick在下一个tick到来时,结算的初速度值永远是21.484375u/s(作为参考,人物模型高度为72u)。计算的该速度值的办法如下:
Calculating 5.5 * (1 / 64) * 250 * 1 gives a value of 21.484375.
帖1给出了去除subtick影响的移动办法(de-subtick)。那就是使用alias指令。V社之前想过要抹除alias并且不允许多个动作被绑定到同一个键位上(多重动作效果与alias相同),但是在玩家们都反对的结果下又允许搞alias和多重动作了。使用alias会使下一个tick结算时速度为21.484375u/s。请注意,由于subtick本质上还是使用的64tick,你的旋转加速(strafing)是与64tick一致的,这跟128tick会有区别。
移除subtick影响的初速度问题办法如下。这也只是其中一种办法。bhop玩家里也有人提出过+jump的初速不同的解决办法,那就是把跳跃绑定为两个连续的操作"+jump;-jump"。
帖子2通过改变服务器timescale来进行验证。如果你使用alias来改变wasd的移动的话,首个移动tick的速度顶峰永远会是前面说的21.x的速度值。
其中这里面的数字对应的是
sv_accelerate = 5.5
tickrate = 64
maxspeed (持刀最高移速) = 250
friction (阻力值)= 1
alias "_checkw" "-forward; alias checkw"
alias "+w" "+forward; alias checkw _checkw"
alias "-w" "checkw"
bind "w" "+w"
alias "_checks" "-back; alias checks"
alias "+s" "+back; alias checks _checks"
alias "-s" "checks"
bind "s" "+s"
alias "_checka" "-left; alias checka"
alias "+a" "+left; alias checka _checka"
alias "-a" "checka"
bind "a" "+a"
alias "_checkd" "-right; alias checkd"
alias "+d" "+right; alias checkd _checkd"
alias "-d" "checkd"
bind "d" "+d"
alias "_checkcrouch" "-duck; alias checkcrouch"
alias "+crouch" "+duck; alias checkcrouch _checkcrouch"
alias "-crouch" "checkcrouch"
bind "ctrl" "+crouch"
alias "_checkwalk" "-sprint; alias checkwalk"
alias "+walk" "+sprint; alias checkwalk _checkwalk"
alias "-walk" "checkwalk"
bind "shift" "+walk"
host_writeconfig
同类推荐
UU加速器免费1200天,雷神加速器27100小时,迅游加速器1130天,人人有份,先到先得!
线下碰一碰!S1mple将参加基辅线下签名会【CSGO】
【CS:GO】2021年10月8日更新日志
一半CSGO专访:CSGO的团队合作就像游泳赛场的接力赛
C9教练:这(美国)是我们的新家,是我们的主场!【CSGO】
G2圆梦科隆锁定BLAST世界总决赛席位
CSGO:B组两极分化严重,那支队伍能触底反弹?
NAVI:继续与俄选手合作,是因为乌克兰没有足够优秀的替代选手数【CSGO】
OverDrive爆料:Fnatic或将更换2-3名选手
【CSGO】Twistzz达到北美CSGO第一人!nitr0:我乐意留下YEKINDAR。
【CSGO】CPHF战队破产,队内选手当倒爷提前屯自己贴纸?
CSGO钥匙代购有没有风险,现在还可以吗?