使命召唤吧 关注:1,166,254贴子:26,630,000

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

只看楼主收藏回复

本帖将浅谈使命召唤系列多人游戏的延迟,并将分为以下几个部分。
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-27 20:53回复
    战马


    来自Android客户端2楼2014-08-27 21:04
    回复

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


      IP属地:美国4楼2014-08-27 21:15
      收起回复
        口怕


        5楼2014-08-27 21:16
        收起回复
          好厉害的样子...


          IP属地:上海来自iPhone客户端6楼2014-08-27 21:18
          回复
            口啪啪啪


            IP属地:上海来自Android客户端7楼2014-08-27 21:19
            回复
              看到浅这种字总觉得这帖子.....


              来自Android客户端8楼2014-08-27 21:20
              收起回复
                马克


                IP属地:上海9楼2014-08-27 21:21
                回复
                  要被吊打的节奏

                  ✎﹏₯㎕﹍你没有看错,这就是三倍经验的力量!


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


                    IP属地:美国11楼2014-08-27 21:29
                    收起回复
                      科普好评


                      IP属地:山东13楼2014-08-27 21:32
                      回复

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


                        IP属地:美国14楼2014-08-27 21:37
                        收起回复
                          这不就是同源引擎source的lerp值的问题么,贴图与hitbox的重合度


                          IP属地:天津来自手机贴吧16楼2014-08-27 21:47
                          收起回复