300英雄吧 关注:1,182,256贴子:77,577,877

【计算机知识科普】网游中常见的作弊原理

只看楼主收藏回复

看到很多人缺少编程概念的知识,这个贴来讲讲对300英雄做出修改潜在的可能实现
先套个盾,只是觉得贴吧无意义的争吵太多需要科普一下相关知识来告诉大家背后一点的原理。隔壁策划的贴子看了,不知道这么低的水平是怎么入职的,说起话来像个某种疾病晚期,也难怪银狐浮屠人才辈出,ty内部可真是个风水宝地


IP属地:湖北1楼2023-10-13 12:26回复


    IP属地:上海来自Android客户端2楼2023-10-13 12:33
    回复
      首先我们要明白一件事情:游戏体验与反作弊不可兼得,而网络游戏的制作方一定选择前者。任何有及时的反应要素的游戏,总是无法把所有的内容都放在服务器上运算。很多东西在本地运算这件事,不是广传的ty程序员偷懒(虽然确实很偷懒)而导致的。延迟物理性的存在,对于50ms的延迟来说,如果一个技能能否释放这种事情通过朴素的逻辑:发送服务器尝试施法 -> 服务器验证cd正确 -> 返回并释放表现,这几乎意味着任何动作任何内容都要承担0.1s的延迟,这对体验的影响是不可接受的。对于moba而言或许可能有一些容忍,而放到fps类上是根本不能接受的,这也是为什么cs,吃鸡永远无法完全反作弊的原因:击中判定一定是本地验算的,否则玩家体验会非常差,而一旦是本地运算则意味着这些信息可以在本地中抓取,进而做出各种伪造:抓获目标位置的锁头,或是伪造发包的命中(吃鸡里动手就能杀人的那类)。300不会例外,这些手法都是通用的,尽管对于moba一些延迟不敏感的东西可以放到服务器进行验证,但是最核心体验部分依旧要本地运算,完全放到服务器验算是不可能的。


      IP属地:湖北3楼2023-10-13 12:35
      收起回复
        过几年进化成云游戏解决99%的问题


        IP属地:青海来自Android客户端4楼2023-10-13 12:37
        回复
          以一个例子来切入:机械臂
          为什么赛博亚丝娜可以q的这么快?为什么神赵云可以跟飞一样?隔壁那个1000块都给不起的2000分高手楪祈小丑虽然在一直扣脚本的字眼,但不得不说它混沌的脑子里隐隐约约还是有点分别的概念。脚本始终只是模拟人在已知已给的交互界面进行的操作,所以人无法做到的脚本也无法做到。但从已有的录像出发,这些神英雄显然已经超过了脚本的范畴,已经是进行了一些其他的修改来做到的,贴吧将这些说不清捉摸不透的东西统称“CE”,这是很多人最多接触到的修改工具的名字,但我相信显然大部分有脑子的人不会觉得这真的是他们用来修改单机游戏的那个CE的同款,但具体是什么又实在超出认知说不清楚,只能含糊的统称一句“CE”


          IP属地:湖北5楼2023-10-13 12:40
          收起回复
            总有人本地和服务端不分


            IP属地:山西来自Android客户端6楼2023-10-13 12:44
            收起回复
              这里回到前面提到的延迟问题,显然“发送服务器尝试施法 -> 服务器验证cd正确 -> 返回并释放表现”这个粗暴实现是绝对正确且愚蠢的,这让用户获得返回信息的时间相对于延迟翻倍。300里的技能施法这一动作是需要经过服务器验证的,很难想象完全不验证技能CD会导致多么严重的本地作弊行为。因此有没有什么好办法可以降低延迟带来的负面体验呢?有,虽然代价就是朴素做法的绝对正确性的丢失,但是正常情况下几乎不会让玩家有所感受,这就是客户端的预输入支持和服务端的延迟补偿结算。


              IP属地:湖北7楼2023-10-13 12:46
              回复
                搞快点


                IP属地:陕西来自Android客户端8楼2023-10-13 12:46
                回复
                  好帖帮顶作为业内人士确实挺无奈,毕竟不接触游戏很多都会想当然,真正接触就会发现里面其实很多没那么符合直觉的设计都是因为物理限制。


                  IP属地:北京来自Android客户端9楼2023-10-13 12:47
                  回复


                    IP属地:辽宁来自Android客户端10楼2023-10-13 12:48
                    回复
                      虽然不是计算机专业的 但是隔壁那个言论看着就让人觉得很违和


                      IP属地:陕西来自Android客户端11楼2023-10-13 12:52
                      回复
                        这里引入两个时间轴概念:客户端时间轴和服务端时间轴,我们称之为CTime和STime,这里以毫秒作为单位。具体时间则书写为C0, C50, S0, S100这样。在朴素表现中,所有客户端都要两倍延迟于服务端,而我们可以通过一种设计这样时间差降低到一倍。依旧假设延迟为50ms,那么此时在一倍延迟的设计下,所有客户端落后服务端50ms,也就是S50=C0,S100=C50,那么在这种情况下,两端要分别进行如何的处理才能让游戏表现相对的一致呢?


                        IP属地:湖北13楼2023-10-13 12:57
                        回复
                          插眼


                          IP属地:北京14楼2023-10-13 13:01
                          回复
                            先来讨论客户端的状况。假设现在真实时间线为1000,S1000=C950,此时我们知道,客户端的玩家“我”这一刻看到的,其实是50ms前服务器的状况,这包括了所有人物的位置信息,状态等等。此刻你的折纸瞄准了敌人发出了q,而在C950时刻发出的技能指令,要等到C1000=S1050的时候才能到达服务器,相比于发出技能时的C950时刻足足有100ms的延迟。要知道在打起来500/s移速的情况下,100ms可以跑出50的距离,在加上人脑的延迟,这足以让你折纸的q狠狠的无限空,因为你打的位置足足偏出了一大截。


                            IP属地:湖北15楼2023-10-13 13:02
                            回复
                              有没有大佬科普一下,dnf线下赛那个作弊事件,是什么外挂?


                              IP属地:广东来自Android客户端17楼2023-10-13 13:04
                              收起回复