黑色行动2吧 关注:5,424贴子:184,460

浅谈使命召唤系列多人游戏的延迟

只看楼主收藏回复

本帖将浅谈使命召唤系列多人游戏的延迟,并将分为以下几个部分。
1:什么是延迟(Lag)
2:什么造成了延迟(Lag)
3:使命召唤是如何处理这种延迟的。(将以黑色行动2作为范例)
4:解释使命召唤所采用的Lag Compensation机制(延迟补偿。)
5:延迟的好处和坏处。
认为错误的地方欢迎指出
注:区分 延迟(Lag) 和 延迟(Delay)。
自己点只看楼主(也许没人看?
----------------------------------------------------------------------------------------------------------------------------
1:什么是延迟。
要知道,所有在线游戏都有延迟。而且就算你使用LAN(AKA local area network,本地局域网)和同一网络上的人玩,也始终会有一定的延迟。而延迟的大小有一部分取决于开发者对于游戏的优化。有些人可能会说,我都网是光纤的为什么还会有大延迟?这是应为延迟(LAG)又由两部分组成:延迟(Delay)及网络连接质量。就算在现实生活中,在我们打电话的时候也会有一定的延迟(Delay)。也许你会问,那为什么打电话时延迟那么小,但在线游戏是延迟会很大呢?那是因为在线游戏在相同时间下要比打电话交互更多数据。
延迟在游戏中以Ping显示,以ms作为单位。就算你有全球最好的网络,直接点对点以光速传输,你也会有14ms的延迟!但是要知道,真正在传输过程中,还会遭遇到丢包,以及距离产生的影响,所以最后的延迟绝对会比14ms高。
下楼图解数据交换过程。


IP属地:美国1楼2014-08-30 03:38回复

    上图相当于说3个玩家处于3个平行世界里,每个人看到的东西都不一样。但在使命召唤这个击杀特别快的游戏里,200ms已经很长了。不像某被封的4杀一个人可能长达10秒。
    比如说,黑色行动2里的MSMC杀一个人大概要180ms左右。如果低延迟的人用这把枪击杀了那个高延迟的人,可能延迟高的人没看见对手就已经死了。


    IP属地:美国2楼2014-08-30 03:38
    回复
      3:使命召唤是如何处理这种延迟(Lag)的
      目前来说所有的COD全部都是基于一个在03年左右开发的Quake 3 Arena Engine之上开发的,但现在各种魔改以至于出现了 Infinty Ward Engine之类的玩意儿。但是换汤不换药,这个已经用了10年的引擎会自动把所有处理都跟每帧画面摊上关系。
      这里就要说一下了,实际上使命召唤里面子弹不是从枪口射出而是从你头上出来的,这也就是为什么会有head glitch这种卡点的方法(从敌方视角看你只露出了头的一小部分,枪整个都在掩体后面。但实际上你可以轻轻松松打到人,而子弹没有被掩体挡住。)另外一个就是使命召唤联机里,每一个人物都有两部分组成,人物本身(贴图)+hitbox。你子弹击中的实际是hitbox,而人物贴图只是让你看到一个人物。这也就是为什么你击杀敌人后从他身上走过去是直接穿过而不是卡住(如果你玩过战争前线的话应该知道人死后尸体会把你绊住。)


      IP属地:美国3楼2014-08-30 03:39
      收起回复

        而正是因为这个原因,才导致了很多人说:我明明打中了那个人但是没有hit marks。因为当你延迟高的时候,你所打的往往是人物的模型,而不是hitbox。因为魔改引擎在你延迟高的时候把你帧数也自动调整了,导致你所看到的人和hitbox并没有重合在一起,所以会打不中。你所看到的人物模型虽然在你面前,但他们的hitbox并没有跟上来。


        IP属地:美国4楼2014-08-30 03:39
        回复
          之前提到了从BO2开始运用的Lag Compensation(延迟补偿)又是怎么样的呢?
          下面给大家涂鸦演示。(黑色代表人物模型-只有视觉效果,红色代表hitbox-子弹真正击中的目标)



          所以大家也看到了,延迟补偿其实就是让模型尽可能靠近hitbox


          IP属地:美国5楼2014-08-30 03:40
          回复
            当然了,并不只是hitbox重合度的问题。大家都有过转角遇到爱的经历,有时候感觉好像没看见人就开始中枪了。这也是因为破引擎的原因,因为TM镜头竟然不和身体重合!!!!!!!!!这种延迟一般被称为split screen lag
            上图大家看

            (此图为主机上一台机器双手柄同时操作截得屏)上图我们可以看到,顶上那个人已经看到人瞄准好开始开枪了,但是下面那人的屏幕上一个人都看不见。这个就是所谓的split screen lag,也是因为引擎造成的,只能改进,不能消除。


            IP属地:美国6楼2014-08-30 03:40
            收起回复


              IP属地:美国7楼2014-08-30 03:41
              回复
                再来就说说延迟的好处和坏处吧,卧槽什么?!延迟还有好处!?!?确实是这样的,特别是在转角遇到爱的情况。
                (图中红色人代表延迟高,黑色人延迟低,黑色人冲向掩体,红色人进行射击。)
                现在图中黑色人冲向掩体,在还未完全进入前,延迟高者开始射击。 最后的结果是怎么样呢?其实会发生黑色人在进入掩体之后跑了几步突然就挂了的情况,不要问我为什么,主机就是这么均衡的。
                这种情况下红色人自己看到的是自己把黑色人在离掩体还有一段距离的地方击杀的,而黑色人的击杀镜头里看到的是自己在掩体后面走着走着就死了。那主机又是怎么看的呢?其实很简单,因为主机的目标就是中和两种差距,所以主机所看到的是红色人在黑色人刚刚半个身子踏进掩体时击杀了。


                IP属地:美国9楼2014-08-30 03:41
                回复
                  当然了,延迟低的人总会获得跟多的反应时间,也就是有些人抱怨说打出了20个hit mark或者说没有hit mark,那是因为对面延迟低的人有优势。这次我们假设两个人面对面对枪,延迟高的人先开枪,延迟低的人后开枪。这种情况下一般是延迟高的人打出了几十个hit mark之后敌人没死,然后自己好像一枪就被干掉了。在延迟低的人眼里,延迟高的人好像根本没有反应,把对方打死了之后自己才受了一点伤。无论什么情况下,延迟高的人打出的子弹都远远多于延迟低的人,但是因为这个游戏击杀太快,而且延迟低的人的数据先传送给了主机,所以主机就把击杀判给了低延迟的人。


                  IP属地:美国10楼2014-08-30 03:42
                  回复
                    如果说你还在用WIFI玩的话............基本上是会延迟比较大,有线连接永远比无线连接稳定。但是鉴于国内并没有COD服务器,所以延迟依然很蛋疼。不过要求尽量好的网络连接,就要保证1:有线连接2:网络畅通 (3:在国内就更惨一些)


                    IP属地:美国11楼2014-08-30 03:42
                    回复
                      完结


                      IP属地:美国12楼2014-08-30 03:43
                      回复
                        为何看有些200多ping跟没延迟一样


                        IP属地:江苏来自Android客户端13楼2014-08-30 07:43
                        回复
                          技术贴


                          IP属地:辽宁来自Android客户端14楼2014-08-30 07:44
                          回复
                            好贴,可惜这个吧人少


                            来自iPhone客户端15楼2014-08-30 09:45
                            回复
                              Driftor的影片...


                              IP属地:中国香港来自Android客户端16楼2014-08-30 12:19
                              回复