第八百三十一章 卡顿与延迟(2 / 2)
“服务端决定玩家A开的枪是否命中。开枪想要被算做命中,需要它必须打在玩家模型的命中框中。在这个例子里,服务端认为玩家A命中玩家B。尽管如此,玩家B的屏幕可能已经看到自己在墙后了,但是在玩家B看到自己在墙后的时间和服务端认为玩家B被命中的时间的差异等于:1/2玩家A的延迟+1/2玩家B的延迟+距离上一次快照的时间。”
“在下一次快照中,服务端更新玩家A、B的客户端上的数据。玩家A看到命中瞄准的位置X,玩家B看到自己的生命值减少或者死亡。”
“看完这一个过程之后,是不是就对于什么叫做卡顿或者说是延迟有了一个完全不同的清晰的定义了呢?”
杰斯特写完这些之后,想要将帖子发出去。但是他突然的想起了一个玩家经常争执的问题,正好可以利用这个机会解释一下,于是他便在这个帖子的下面紧接着写道:“我突然的想起了一个FPS游戏玩家之间经常的进行争吵的经典问题,那就是我跟另外一个玩家同时开火。并且同样命中,为什么我死了对方却没事呢?”
“因为这是不同的游戏存在着不同的设定的原因,在一些游戏中,比如《反恐精英》,如果先开的一枪到达服务端的时候杀死了目标。那么任何接下来的所有到达服务端的命中目标的开火将被服务端忽略。这种情况下,就不可能存在同时击杀,因为2玩家在1快照中向对方开枪并都死亡。”
“但是,在另外的一些游戏当中,比如说有一些人已经试玩过的《军团要塞》,共同击杀是可行的。这里有一个叫做权重的东西在影响着游戏的进程。”
“如果你用《反恐精英》的模型,玩家在良好的延迟下会有明显的优势,并且在一些时候可能会出现‘Oh,我在死前打了他一枪,但是他并没有死! ’的情况。你甚至会在你死前听到你发出的枪声。但仍没有造成任何伤害。”
“如果你用目前的《军团要塞》模型,反应时间的微小差别并不会意味很多,举例,如果服务端快照连拍率是64,如果玩家A比玩家B快了15ms开枪,但是他们都是在15.6ms的快照中完成这个动作,那么他们就会同归于尽,整个过程其实就是这么的简单。”
“如果卡顿补偿过量,会显示结果为我在他之后开枪但是还是打死了他。”
“如果卡顿补偿不足,会显示结果为我需要再移动准星一点才能打中他。”
“只是看这个的话任何人都会觉得这很简单。但是拆开来看的话,那就会非常的复杂,而我刚才说的不过只是一点皮毛而已,实际上。我并不是专业的网络工程师,对于这个,我知道的也仅仅是一点皮毛罢了。”
“可能很多人会问,我对于你说的这些毫无兴趣,我想要知道,我如果卡顿了应该怎么办。我可以有什么办法来解决自己卡顿的问题呢?”
杰斯特写到这里的时候把这个帖子发了出去,然后又另开一贴。
他决定在新的帖子里面详细的说一下这个问题。
“如果你想要明显的改善你的延迟,那么首先,你要确定,你所感受到的卡顿并不是因为游戏提供商带来的,可能一些比如服务器的负载等等的问题,让你觉得游戏不流畅,但是这事跟你无关的,如果你确定了别人都很流畅,但是我就不流畅之后,那么我下面说的东西或许会给你一点帮助,当然,也可能不会。”
“首先,也是最重要的,你的网络连接。越低的延迟越好。同时,任何连在你家庭网络中的过多的分流都会导致延迟。卡顿补偿能够在‘你在对什么开火’这部分提供帮助,但是如果你有很差的延迟,你更可能会体验到‘我已经跑到墙后了但还是挨了一枪’或者‘我先开枪,但依旧是我死’。”
“如果你的客户端的帧数很低,只要是低于或者不足于你显示器的刷新频率,这会增加延迟的感觉,并且相较不同的快照连拍速率而言感觉更明显和频繁。”
“修改内插帧,如果游戏允许的话。大多数游戏都有一个默认的内插帧时间,最少是2倍的快照间隔。这么做的原因是如果一个单一数据包丢失,玩家的动作不会定格在客户端屏幕上。如果你的网络链接很好,并且0丢包,那么你完全可以把内插帧时间设定在正好等于2个快照的间隔时间,但如果1个数据包延迟了,你便会看到一个断口。以《反恐精英》为例,这比从20快照服务器换到64快照服务器进行还要有很大不同。如果你把这个值设置的很低,会造成断断续续的画面。”
“这也是很多玩家在谈到卡顿问题的时候,经常说到的丢包,其实,这就是内插帧的问题。”
诸如此类的东西杰斯特又说了很多,最后他总结了一句话:“总之,有很多的方法都可以解决一些问题,但是他们不可能解决所有的问题,比如说卡顿,我为什么要发着几个帖子说明这些问题的原因很简单,因为我发现太多的人根本不懂什么叫做网络代码,甚至对于这个问题一无所知,但是却总是在抱怨自己在墙后面被杀死。”
“有些时候,你在墙后面被人射死,不仅仅是因为服务器的原因,更多的,还是因为你自己的机器或者网络宽带上面出现了一些问题。”
当杰斯特写完这一整个帖子之后,他竟然发现,已经有数百个回复出现在了他的这一个帖子当中。
很多人都在感谢杰斯特代替开发组,在百忙当中,在为玩家们答疑解惑,当然,这些都是对于《反恐精英》的开发组并不像是一些其他的火星娱乐的游戏那样,经常在玩家社区出没的抱怨。不过杰斯特对此的解释是不同的开发组有不同的风格,他并不强求这样。
他喜欢在玩家社区跟玩家交流,但是并不要求所有的开发组都如此。
但是仍旧有不少人在说杰斯特这明显的是在为自己的服务器问题甩锅,当然,这些无脑喷当然是被很多自告奋勇的玩家们喷的他们妈妈都不认识他们了。(未完待续。)