第三方数据延迟不能出款 为什么不能彻底解决fps游戏外挂的问题呢?
Moba类游戏上传量非常简单,你鼠标点击地图的位置算一次,技能的释放算一次,大部分可以交由服务器端完成,因此即时互动性很高。比如延迟时我们看到的人物闪动,是在没有收到下一次指令时角色本来的路线,电脑只不过是按照上一次信息自动演算。当信息包从服务端到你电脑时,又会迅速修正。所以服务器的判断也很简单。
Fps游戏中你的每一次视角移动,角色移动都是即时的,如果全局上传,误差极大。比如你眼中的法鹰还在地上,对面眼中的法鸡已经飞到你后面开始正义了。这种延迟下每一帧都上传是不可能的。只能以双方本地计算结果上传,交由服务器端进行判断,该补偿补偿该回滚回滚,反馈回你电脑可能都是半秒一秒之后了。最直观的例子就是路霸穿墙勾,很多人在躲进掩体后被路霸追魂一勾。你以为躲起来了,人家眼里勾你时,你还在外大摇大摆。fps网游这种依托大量本地计算的特性容易遭到破解和修改。守望先锋为了保证游戏流畅性,采用了与之很类似的计算方式。
外挂大部分以修改客户端游戏数据为主要手段。像fps这种对于人物方向,位置的送包方式,修改上传给服务器端后就极难分辨,至于像透视,贴图这种不交互处理的数据更是难以防范。还有利用了本地延迟补偿机制的手段就难以预防,只能针对性的解决。即使检测第三方软件修改,也并不是毫无漏洞可言。
并非说修改本地数据是fps的专利。比如lol曾经就可以通过修改本地数据无限闪现。只要是本地的数据计算,都有作弊的可能。
有朋友问坦克世界……
硬要说的话,是服务端运算为主,客户端做的大部分是插值,这种情况下的对面数据都是由服务端送包赋予的,即使有外挂能勉强抓包计算差值,变动率也极高。
这种情况下服务器如何保证玩家间游戏流畅,就会根据发包率进行延后、提前运算。当数据返回时会直接得到结果,而不是本地得出结果反馈服务器。
就好像你移动时突然跳红格,几秒过后发现坦克跑去洗澡了。那就是停止指令的数据包没有送出去,服务器就认为你还在移动。下一次信息对等的时候,服务器跟你讲你下水了,你就非得洗澡不可。
当然我只是臆测,实际计算方式可能并非简单的二段式,比如有的游戏会在移动过程中固定时间发送数据包以保持状态。
所以在坦克世界里,年年有全亮挂的传说。