上文我们讲到了帧同步的数据一致性,本篇主要介绍如何进行体验优化。
二,体验优化
网络是不可控的,可能会出现延迟,丢包,重发,乱序等各种情况。网络帧是低频的,比如15帧;渲染帧是高频的,比如60帧。这里面存在着不对等。如果不能妥善的处理好这里的不对等,就会产生卡顿感。
那么如何应对网络造成的延迟以及卡顿问题?有下面的几点措施:
1.影子跟随算法
影子跟随由Dead Reckoning(航位推算)算法发展而来。核心思路是把游戏中的可移动物体分成渲染实体和逻辑影子两部分。数据帧驱动逻辑影子不断改变,而渲染实体则不断地追随着逻辑影子移动。影子是离散跳变的,而实体移动是相对连续的。
实现影子跟随的首要方式是从开发架构上着手,采用逻辑与渲染分离的方式。这里推荐:网络层-逻辑层-渲染层三层结构。网络层向逻辑层发送数据帧,驱动逻辑层数据更改;逻辑层向网络层递交操作指令,进而同步到远端。逻辑层通过事件机制触发渲染层更新;渲染层不能修改逻辑层的数据,这个过程是单向的。这样就能保证各客户端在逻辑层的数据保持绝对一致,而在渲染层有了平滑显示的空间。
由于网络不稳定,为了让渲染实体表现