CS:GO 中的陀螺挂是什么?

CS:GO 中的陀螺挂是什么?

不是什么高大上的东西,托uc上一帮闲人的福。你只要花半个小时读一读相关的帖子就知道了。

陀螺就是spinbot,用来反其他人的瞄准anti aim

简单来说,我们用代码模拟的三维世界里,用来确定一个人的视线(一条带方向的空间向量)需要用到欧拉角:

俯仰角Pitch, 点头

偏航角Yaw, 摇头

旋转角roll ,翻滚

绕x轴旋转pitch,绕y轴旋转yaw,绕z轴旋转roll。

所以说,我们可以拿三个数字定义一条空间向量的方向,具体些,这三个数字代表了csgo中的所谓“视线”。

那么陀螺就是修改yaw这个角的值,自然游戏里人物的模型就会发生变化跟着转。比如我让yaw每秒从-180~180一次,那就是1秒转一圈。

说完了它是什么,接下来说他是干什么用的。

游戏中自瞄是怎么实现的呢,首先计算空间中两个点的方向(你的头和敌人的头),然后和自己角色的视线方向进行对比,然后把自己的视线方向修改成计算出两个点的方向。这就是自瞄。

那么两个挂B撞见了,到底是谁先算出来方向然后改过去呢?那就看谁程序快一些,谁网络质量好一些,谁就先瞄到了。

为了增加对方瞄到自己的难度,可以设计出这样的方案:

我不开枪的时候,头部坐标是不断变化的(陀螺旋转)。等我计算好,开枪的一瞬间我再瞄过去。

这样呢,对方会不断的算出新方向。那么如果他的速度没我快,那我就能比他先瞄过去。

这个是spinbot的一开始的目的。

关于高票回答的一些地方我详细的说一下。

他提到了一个fake yaw。fake是什么呢,就是假。这个概念是这样的:假如游戏其他人接收到我的hitbox的位置,和我真正传给服务器用来计算我被击中的位置不一样,那别人不就永远打不到我了。

通俗点,我看到你头在a点 我向a点开枪,你却不掉血。

再介绍下tick系统。csgo为了保证实时性,设计了一套基于tick的网络通讯系统。客户端集合本地当前所有的信息,在这一个tick一起发给服务端。服务端在一定时限内收集所有客户端发来的的tick,然后计算,结果反馈给各个客户端。客户端比服务端永远快一个tick。

事实上也是这样的。csgo服务器用来做击中判断的tick和游戏中广播给其他玩家的tick是不一样的。客户端只要发包,其他的客户端就能收到。但是服务器用来做击中判断的tick,是客户端最早choked那个tick,这样设计是考虑到网络问题。

所以这种“假视角”——我看到你头在这里,我开枪,你不掉血。是因为对方广播给其他客户端的tick和给服务器用来做击中判断的tick不一样,

这种利用也存在于一个叫backtrack的作弊器功能中,达到所谓的你已经经过a点到达b点,然后敌人向a点开枪,你依然被打中。

至于为什么fake yaw,因为pitch角不能通过这样的方式被fake。pitch以前也是可以fake的,直到valve修复了perfect silent aim.

希望valve继续修复这些滥用tick系统的漏洞。