河豚小说网 > 网游小说 > 游戏开发巨头 > 第八百三十一章 卡顿与延迟

第八百三十一章 卡顿与延迟

    在又稍微的运年思索了一下,顺便组织了一下接下来的语言。

    因为接下来要说的东西会稍微显的有些复杂,很有可能没有这方面的技术的看起来会有些吃力,所以,杰斯特在想着怎么才能够把他要说的东西说的更加的通俗易懂。

    杰斯特接着在新的回帖里面写道。

    “接下来我要说的就要难懂很多了,但是至少仔细的想一下,其实也就是那么回事。”

    “在说完了上面的那些简单的概念以及术语之后,我们来看一个新的概念,这个概念的专有名词叫做‘内插帧’。那么什么叫做‘内插帧’?”

    “实际上,内插帧是一项技术用来平滑游戏中的物体行动的,比如说玩家。本质上讲,内插帧是用来平滑一个物体在2个点之间的行动。内插帧的延迟通常等于2个快照,但也是会变化的——这么说可能会有些难以理解,但是我们可以举一个例子来进行说明。”

    “如果一个玩家直线奔跑,在tick1的时候他在05处,在tick2的时候在1处,那么经过内插帧的处理将之显示在客户端,他从05的非常平滑的移动到1的终点。但是服务端,总是并且只是“观察”到玩家在2个位置,而不是在2点之间。”

    “这么说有些理解了吧?”

    “也就是说,服务器进行处理的智商两次tick的快照,没有内插帧的话,游戏就会变的断断续续,因为客户端只是在收到来自服务端的更新后才能得知游戏中的物体的行为。内插帧行为只在客户端单边发生。”

    “内插帧本质上降低了整个游戏在你电脑上的渲染速度,这个数值通常等于2快照,一般来说所有的游戏都是如此,但是有些游戏允许你更改这些,比如《反恐精英》,这些就是人们在说起rates的时候所指的。他们指的是更新率和内插帧延迟。”

    这一次杰斯特斌没有在一个帖子里面写上所有他想要说的话,因为现在的这些并不好理解,所以,他现在是一个概念一个帖子的进行阐述卡跟不卡之间的关系。

    让更多的玩家不要在似懂非懂的争执这些鸡毛蒜皮的事情。

    在说完了内插帧。并且将阐述这个概念的帖子发出去之后,杰斯特又开始了一个新的帖子,仍旧是继续上面的话题。

    “之前说了内插帧,那么很多人会好奇,既然有内插帧。那么到底有没有外插帧呢?”

    “答案是肯定是,这个世界上面天生就是对称的,有内就会有外,而所谓的外插帧,这是另一个客户端方面的技术用来补偿延迟。本质上说,客户端外插物体的位置替代降低整个客户端的渲染。这种做法大体上不及内插帧,特别是对于玩家行动不可判断的fps游戏来说。”

    “所以,在讨论《反恐精英》这款标准的fps游戏的时候我不会太过于详细的去介绍这个概念,因为他并不是我要说的话题的主角。”

    杰斯特写的这些术语介绍什么叫做卡为什么会卡的帖子马上就引起了玩家们的关注,虽然有一些看的比较吃力。但是,他们也逐渐的明白了所谓的卡于不卡其实是一个很复杂的过程,所以,杰斯特的这个帖子的下面很快的就有了一两百个赞。

    当然,杰斯特要说的还没有说完。

    “然后,就是一个重中之重的概念,我们内部将其称之为hit-box,可以简单的解释为命中框或者是命中面积,这样说似乎就顾名思义了,一个人物的3d模型包含了一些区域来判断命中。长宽高的数据在3d世界里面精确的描述一个物体。你看不到命中框,你只能看到玩家模型。命中框可大可小,也可某种程度上无法命中,这都要根据游戏如何编写来判定。在命中和未命中方面。命中框能够带来比快照速率更大的不同。”

    “另外的一个非常重要的东西,叫做卡顿补偿,这可能在不同的游戏里面会有完全不同的表现。”

    “卡顿补偿是在服务端的一种功能,意在减少客户端延迟的直观感受。如果没有卡顿补偿,或者卡顿补偿不够理想,你就会朝着一个目标瞄准想要打中。但是由于客户端电脑“看到”的延迟后的游戏世界,你并不会命中原先瞄准的区域。本质上讲,卡顿补偿是在解读从客户端接收到的动作,比如开火,尽管动作已经发生过了。服务端游戏世界和客户端游戏世界的不同,或者说我们通常所说的客户端延迟,都可以总结为:客户端延迟=+内插帧延迟。”

    “这其实是一个很复杂的机制,我原本想要三言两语的将其说明白,但是我发现这根本没有办法做到,索性我就详细的说一下什么叫做卡顿补偿或者更加确切的一个说法,就是卡顿补偿这个机制到底是怎么运行的?”

    “现在我描述一个这样的玩家在游戏里面的游戏场景,来通过这个场景简单的说一下什么叫做卡顿补偿。”

    “这个场景是这样的。”

    “玩家a看到玩家b向一个拐角行进,玩家a开了1枪,客户端把开枪这个动作发送给服务端。服务端接收到xs后的数据,x为玩家a,tency的一半。服务端这时查看过去发生过的,查找到当玩家a开枪的时候玩家b的位置。在基础的例子中,服务端会返回(xs+玩家a的内插帧延迟)到玩家a看到玩家b的时间点,但是其他的数值因素或许由游戏程序员想要卡顿补偿如何施行来决定。”

    “服务端决定玩家a开的枪是否命中。开枪想要被算做命中,需要它必须打在玩家模型的命中框中。在这个例子里,服务端认为玩家a命中玩家b。尽管如此,玩家b的屏幕可能已经看到自己在墙后了,但是在玩家b看到自己在墙后的时间和服务端认为玩家b被命中的时