pgl147258 / 为什么 ? 6 / 同样是后台建主,同样是全图挂,为什么dot...

0 0

   

同样是后台建主,同样是全图挂,为什么dota2可以做到几乎杜绝外挂,而守望先锋却外挂泛滥?

2016-07-09  pgl147258

【隔壁小张的回答(526票)】:

“守望先锋是FPS游戏”。

虽然一句话就能解决,但是秉着知乎多码字才能拿到赞的原则,我还是瞎聊一些。

FPS游戏因为对延迟要求很高,所以很多弹道模型计算都放在本地进行(想想DotA不就是这样嘛),这样就给很多外挂从业者可乘之机,这也FPS游戏外挂屡禁不止的原因。DOTA2这种做什么都要和服务器来一遍PY交易的,当然外挂制作难度要大很多。

我工作的两年里报道过的DOTA2外挂或者脚本印象里只有三起,14年末有个高级外挂,包括了看敌方英雄技能CD,天火白虎箭的轨迹,残血秒杀等等反正是叼得飞起,据当时报道说国外论坛有几千人下载了这个挂,这件事后DOTA2严重的外挂基本就销声匿迹了。

15年有个全图挂,原理其实很有趣,也亏那个人想的出来,DOTA2中的眼也是攻击朝向(仇恨?不知道怎么说清楚),所以在敌方在视野内的时候用两个眼锁定他,等他进入战争阴影后,眼的朝向也会跟随敌人,两条直线交叉确定一个点。

16年最近的一个PA无限S暴击挂,这种暴击脚本原理应该是,脚本读取PA攻击前摇是否有暴击动画效果,如果前摇的一瞬间没有出暴击动画可以S住继续A,直到砍出暴击。

上述的外挂基本是见光死,每次报道刚写完,隔天一个更新就修复(每次有Bug都要赶紧写,生怕修复了当不了新闻),所以除了游戏类型方面外,V社对外挂也看的很重。

【刘陆洋的回答(438票)】:

赞同数第一的回答已经说的很在点上了:“守望先锋是FPS游戏”。

我就在这里再详细说一下。

帧同步和CS同步:

玩过Dota1/2的朋友应该都知道,当你的网在很卡的时候,你发出一个指令,明显过很久后才会有效果。但是守望先锋、CS、COD、战地这类FPS游戏就不是。你按左键发出开枪指令,不管你卡不卡立刻就开枪了。这种立刻看到表现的网络交互方式叫做帧同步。

这是为什么呢?

Dota这种RTS游戏中(别争是不是RTS这不是重点-。-),你发出一个指令比如在地图上点了一下右键之后,客户端直接给服务器发送:『向(x,y)移动』。但是此时客户端不直接执行这条指令,而是等待服务器广播给所有玩家的:『玩家A移动到(x,y)』。此时所有玩家都会收到这条消息,然后一起移动。这种网络交互方式叫做CS同步。(有些RTS不是CS同步,例如星际1。感谢评论区 @周笑宇 提出)

玩家觉得所谓的卡顿就是因为网速慢,在发出指令和接收指令之间已经过了好久。

大部分FPS游戏不同,因为这类游戏太需要实时交互了。就算只有50ms的延迟如果采用CS同步(即你每次转身/瞄准的操作都要服务器广播返回)的话也是噩梦一般的体验。想试试?全境封锁欢迎你。按了换弹夹,播放换弹夹动画,换好了,从掩体后天出来想打人发现打不出去。为啥呢?因为服务器还没告诉你你弹夹换好了!

为啥要说这两个东西呢?因为看机制就能看出来,CS同步可以规避大部分的外挂。

说实话,早年间CS1.6的验证机制其实我也不是很懂,但是相信大家都碰到过那种暴力加速外挂,开场1秒冲到对方家里挨个拿刀爆头。这是怎么做到的呢?即客户端时刻告诉服务器:我现在在往几点钟方向走,速度是多少。因为我还没见过CS里有外挂可以瞬移的,顶多是加速跑。但是移动的速度服务器没有验证,那就是多块都可以咯。所以一秒走到对方家里。然后:

客户端:我现在对着我的(x,y,z)方向开一枪。

服务器:HEADSHOT。

客户端:我加速跑到下一个人跟前(笔者省略了步骤),对着我的(x,y,z)方向开一枪。

服务器:HEADSHOT。

客户端:我加速跑到下一个人跟前,对着我的(x,y,z)方向开一枪。

服务器:HEADSHOT。

客户端:我加速跑到下一个人跟前,对着我的(x,y,z)方向开一枪。

服务器:HEADSHOT。

客户端:我加速跑到下一个人跟前,对着我的(x,y,z)方向开一枪。

服务器:HEADSHOT。

服务器:Terrorist Win。

SEE?SEE?

但是到了CS同步服务器上,这种方法作弊可就不好使了。

Dota2:

客户端(外挂):我要瞬移到(x,y)!

服务器:瞬移你妹,老实走过去。

客户端(外挂):我要以522的极限速度走到(x,y)!

服务器:522你妹,你的速度是我控制的。

客户端:那好吧我要走到(x,y)。

服务器:乖,慢慢走过去吧。

敌法(外挂):老子要B到(x,y)!(超出施法范围)

服务器:B你妹,你施法距离不够。

敌法(外挂):老子要连着B好几下!

服务器:B你妹,你的CD好没好我有验证。

敌法:好吧那我就B一下。

PA(外挂):老子A的这下要出暴击!

服务器:出你妹,我说你出暴击你才能出。

同理有好多就不一一列举了。

先写这些吧。具体可扩展阅读dota 类游戏是如何解决网络延迟同步的? - 胡帆的回答

评论区的小伙伴给出了硬货:《守望先锋》技术分享视频:如何处理网络同步与减少网络迟疑

程序员小伙伴可以学习一个。再次感谢 @周笑宇

-----------------------------update 2016年7月8日 0点半左右_(:з」∠)_-----------------------------

看到你们这么热情,我一句话不加也不好。

孟书记在评论中指出,全景封(suo)锁(shui)的这种机制,对透视是无效的。我对这一点再稍微说一点。

为啥全境封锁机制这么好(大雾),还是会有透视?

其实透视跟加速啊瞬移啊这种作弊机制根本不是一码事。为什么呢?加速瞬移是对上发服务器的数据进行修改,而透视是把服务器下发给你,但本来不想让你在你不应该看到的时候看到的东西让你能随时看到。

这句话好像有点绕……

好,我们再拿CS举例。

Dust2地图,开局警匪出生在自己家。这时服务器会告诉你地图上所有(?)玩家的信息,包括对面敌人的。他们的位置,武器等等一系列信息。但是这个时候因为有墙挡着,你是看不到对方玩家的。

透视作弊器:咦,这些数据是什么,好像是敌对的人耶。我们把他们高亮在摄像机上显示出来。

作弊成功√

-------------------------------------------------------------------------------

再多写点儿吧,有童鞋问,为啥Dota1现在这么多挂?

首先是开全图,这个跟上面举的CS透视那个例子差不多,就不赘述了。

敌人金钱显示也一样,很明显服务器下发的玩家数据中是有金钱这一项的。外挂把它拿到显示出来了而已。

自动躲技能……这个……

我曾经目睹我一个玩lol的朋友开自动躲技能的辅助……敌方在放技能的时候,你的地图上会框起来一个区域,表示这个技能的覆盖区域。如果这个技能是带弹道的话还会显示出现在技能判定点的位置。这些都很好说,服务器当然会发给你这些信息啦,要不你怎么显示技能效果。

至于怎么躲技能……这个外挂会控制你的英雄自动往技能不覆盖的区域走,走出去之后刚好停下继续输出。至于外挂是怎么控制你的英雄移动的,这个方法就很多了。最保险的就是模拟你鼠标的点击,这样就算有人来查也查不到。只会看到你做出了惊天地泣鬼神的操作。

-------------------------------------------------------------------------------

特别说明:我没有说帧同步的机制就省略了服务器验证步骤,没有任何这个意思。将来报道上出了偏差你们要负责的。识得唔识得啊?

【于浩洋的回答(45票)】:

技术方面道理其实挺复杂,简单说说。

其实就是因为Dota2数据要发回终端服务器,你在本地没法改变核心数据。Dota2不是没有过外挂,只是基本都是什么显血显蓝,鼠标一秒多按这种,而且V社也查过一批了。要弄出什么天辉基地飞天的外挂,你就得把中心服务器黑了。然而你要是有这个能耐,干嘛要黑游戏,这不是闲的蛋疼吗。。。

FPS游戏许多数值处理是本地化的,这给了外挂技术上的可行性。比如自瞄,用比较外行的话说,我可以在屏幕上进行图像检索,把数据反馈回来,让鼠标指针追踪,这是很Low的技术,很容易实现。

你想想,上面这种方法在Dota中并不太实用。比如你检索图像没啥用,自动锁定残血单位然后无缝接火枪的暗杀?好像也没什么太屌的。。。

Ow毕竟是一个策略战术见长的FPS,外挂的破坏性其实小于CS这样的游戏。比如自瞄,你枪枪打头,面对大锤举盾是没用的,面对Dva冲脸效果也是有限的

【dumpling的回答(8票)】:

对比一下csgo,知道为嘛csgo每周销量几乎都是steam周榜稳定前十嘛,因为除了真的有部分新人还有一批是上一个号被封了再买的 (●˙ε˙●)

【一个法师的回答(1票)】:

旁的不说,dead2做个两倍视距和按键脚本还是不难的。

【贫贫贫贫僧的回答(8票)】:

因为守望碰见对面了就可以干,dota里遇到对面往往真的不能干,,,

【喔茶的回答(5票)】:

同样是v社游戏,csgo的外挂也是泛滥,而且vac封号机制比守望的严的多,既是如此,开挂的照样多

【邓肯的回答(1票)】:

就因为守望先锋是fps

原理其实和fps职业玩家打比赛用4:3的分辨率在16:9的显示器上是一样的

【李楚诺的回答(0票)】:

因为游戏类型不一样

原文地址:知乎

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。如发现有害或侵权内容,请点击这里 或 拨打24小时举报电话:4000070609 与我们联系。

    猜你喜欢

    0条评论

    发表

    请遵守用户 评论公约

    类似文章
    喜欢该文的人也喜欢 更多