腾讯游戏开发精粹Ⅲ
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 移动手感指标与实验

移动预表现的核心目的是优化游戏在较高延迟的网络环境下的移动手感,本方案提出了一种基于表现层移动矢量的指标作为量化移动操控手感的标准的思想,其可适用于多种类型的游戏。

从经验上说,优秀的移动手感至少应当满足两个条件:响应及时,角色移动状态及时响应摇杆状态,拖动摇杆时开始移动,松开摇杆时停止移动;方向、速度合理,角色移动方向要符合玩家的UI层输入,角色移动速度要符合局内角色的属性状态。因为在玩家的视角中没有逻辑层的角色状态,所以只有表现层的角色状态才能纳入移动手感的考察范围。

基于以上假设,本方案提出的移动手感指标计算方法如图1.11所示。每次表现帧更新时的表现位置起点为,根据玩家此时的摇杆方向和角色的速度,可以计算出玩家期望移动到的位置,而表现帧结束时,角色的表现层实际移动到的位置为。移动手感指标的定义为,表示角色表现层位置的偏差距离,后文称之为移动表现差。移动表现差越小,表示角色的移动状态越贴合玩家的摇杆操作和角色属性,手感越好。

图1.11 移动表现差计算

我们在不同的网络环境下使用相同的角色进行对局,计算了移动表现差,统计了对局中所有表现帧的移动表现差的频率分布直方图(见图1.12),用于验证本方案对移动手感的提升。在图1.12中,移动表现差的单位为毫米,统计的区间为0~300毫米,组距为5毫米,每个测试用例的信息和移动表现差的平均值见表1.1,实验中角色的移动速度为4.3m/s,表现帧率为每秒60帧。

表1.1 实验测试用例的详细信息

图1.12 移动表现差的频率直方图汇总

通过图1.12可以看到,在正常网络情况下,关闭移动预表现功能,使用普通插值移动算法,绝大部分的移动表现差低于20毫米,总体的手感非常优秀。此时产生移动表现差的原因主要有两点:第一,关闭预表现功能后,表现层移动方向完全由逻辑层帧命令决定。而逻辑帧率通常低于UI输入的帧率,在一个逻辑帧内如果收到多个移动帧命令,只有最后一个帧命令生效,表现层也会沿着最后一个帧命令的方向移动,导致表现层移动和当前时刻的摇杆输入方向不同。第二,在正常网络下,仍然有几十毫秒的网络延迟,同时每次收到下行移动帧命令包后,还要再等到下一次逻辑帧更新才会生效,等待的时间最多有66毫秒(逻辑帧率以每秒15帧计算)。同时在正常网络下也有偶发的丢包和网络波动,可能产生比较大的移动表现差。

从图1.12的结果看,在上行延迟200ms的情况下,移动预表现功能从原理上没有网络延迟和帧同步逻辑帧更新间隔的限制,移动表现差的平均值和在正常网络下相当,大幅领先于弱网下的普通插值移动算法(见图1.12)。从直方图的分布上看,弱网下移动预表现功能的手感也明显优于普通插值移动算法,但对比正常网络的手感仍有差距。在200ms上行延迟,并开启移动预表现的情况下,移动表现差主要产生于移动和技能的衔接过程,正如1.3.3节中描述的,每次使用技能可能都需要调整预测逻辑位置,这可能导致预测逻辑位置和角色表现层位置的偏移距离变大。因此之后一段时间,在表现层位置向预测逻辑位置插值移动过程中移动表现差会升高,对移动手感有了影响。

从图1.12和图1.12的结果看,在更极端的弱网环境下,丢包对于移动预表现和普通插值移动算法的手感都有比较大的负面影响,但预表现功能的手感仍然有一定优势。