欢迎光临散文网 会员登陆 & 注册

【FF14】GCD偏移和帧率税的详解与再分析

2022-08-10 12:10 作者:云青渔语  | 我要投稿

1       什么是GCD偏移和帧率税

        在统计2.48GCD时,我发现游戏内预设GCD与实际GCD存在偏差,如下图所示。

2.48GCD偏移

        参照国际服Kekona在5.3版本的武僧攻略以及山羊奶巴伐露@延夏在6.0版本的舞者攻略中做出的假设和结论:GCD偏移的原因与帧率税有关,主要来自于GCD与帧率的对齐程度以及服务器相应程度这两方面。


        首先是GCD与帧率FPS的对齐程度问题

        在FF14中,因为游戏的底层逻辑原因,GCD是基于帧率FPS的,就算在某一帧我们的GCD的冷却已经结束了,游戏的客户端也需要等到下一帧被渲染才能处理下一个GCD。

        以1.95sGCD下的武僧为例,下图是59FPS和61FPS时GCD间隔和FPS之间的对应关系。

帧率带来的影响

        可以看到,在59FPS下,我们的1.95GCD会在第115.05帧冷却完毕,而受限于游戏底层逻辑,下一个GCD会在第116帧后才能使用。

        多出的0.95帧就会因此对GCD造成0.95/59≈0.016s的延后,而使用61FPS则是在第118.95帧转好,多出的0.05帧对GCD造成0.05/61≈0.0008s的延后,几乎不造成影响。

        然而,以0.999帧为例,帧率税的影响随着FPS增加而减少,且在FPS≥60后,最多影响0.017 s,相较于0.04 s微不足道。

0.999帧下的延后时间

        其次就是服务器影响程度

        玩家的数据先是上传到服务器,在服务器在检测到玩家的GCD间隔后,为了保证GCD尽量稳定,会按照GCD±0.04s相对应地进行修正。

        如果FPS与GCD对不齐,会被认为是服务器过快,因此会频繁的对GCD进行+0.04s的修正,这种修正被认为是坏修正。

        反之,如果FPS与GCD对齐很好,那么服务器会认为GCD比实际慢了,因此会频繁进行-0.04s的修正,这种修正被认为是好修正。

        好修正会GCD在延迟+帧率税的情况下仍然符合实际的值。理论上来讲只需要用:GCD×FPS=整数,就能获得一个很好的帧率断点。此外,在FPS和GCD不匹配的情况下,会有非常大的可能性达不到应该有的技能速度阈值。以舞者为例,在2.47GCD、60FPS的情况下,受到帧率税的影响,计算下来的实际GCD为2.478s,接近2.48s,相当于技速掉了一档。

        然而,如果将FPS锁在断点的话会得到相当多的坏修正,这是因为实际的FPS会在锁帧点上下波动,并且有略低于锁帧点的趋势。以武僧1.95GCD为例,在锁60FPS时,实际FPS略低于60,修正结果接近使用59FPS的情况。而锁在断点的下一帧,即61FPS,能得到相当多的好修正。

武僧1.95GCD

2       GCD偏移和帧率税的再分析

        然而,在实际的验证中,发现在一些武僧1.95GCD的断点+1值(如:101FPS)并没有出现优于断点的情况,甚至101FPS时的好修正并没有高出太多,甚至101FPS的实际GCD还高于100FPS的实际GCD(受于电脑配置问题,121FPS的情况无法复现)。

测试得到的武僧1.95GCD
武僧1.95GCD数据整合


        我又对赤魔法师2.48GCD进行了测试,发现在其断点+1值(如:51、76、101FPS)上的实际GCD值并不是最小的。


测试得到的赤魔2.48GCD


        那么这是否代表前面对于帧率税的结果是错误的?并不完全是FPS对游戏GCD确实有影响,GCD技能确实是在冷却结束的下一帧才能使用。主要的问题在于±0.04s的好坏修正与FPS和GCD的关系。

        受于FPS限制,服务器会首先对玩家的实际GCD进行一个计算,会同时参考玩家的FPS和游戏内设置的GCD,所计算的理论GCD值=GCD+因为帧率延后的时间,即:理论GCD=GCD+[1-mod(GCD×FPS,1)]/FPS    (mod为取余函数,对GCD*FPS除以1进行取余)。

        例如:我在游戏中选用2.48GCD,FPS=101,那么服务器就会假定玩家的理论GCD=2.48+[1-mod(2.48×101,1)]/101=2.48+(1-0.48)/101≈2.485s。

        而修正原因是因为GCD偏移到了2.485±0.04s之外,服务器认为需要将GCD修正回2.485s,随后服务器就会对玩家进行好修正和坏修正,也就是说,好修正和坏修正的数量和断点并没有直接关系,好修正多不代表当前FPS最优,而有坏修正也不代表当前FPS最差。好/坏修正则是取决于玩家的实际GCD与理论GCD相比是否偏移过大。

        将上述假设带回到实际,可以看到理论GCD与实际GCD非常接近,对于我之前所实测的武僧1.95GCD,相关性85.57%,而对于样本量更大的赤魔法师2.48GCD,相关性有95.89%,可以证明上述假设是较为准确的。


武僧1.95GCD
武僧1.95GCD
赤魔2.48GCD
赤魔2.48GCD


        此外,值得注意的是,在断点(50、75、100FPS)上,实际GCD会显著低于理论GCD,具体原因未知,但依旧不是最低的实际GCD,不影响对FPS的择优选择。

        基于上述假设,我给出了赤魔法师在2.50-2.47GCD下不同FPS情况的理论GCD,可作为帧率选择参考使用,其它的GCD情况可根据我前面提出的计算方法进行计算即:理论GCD=GCD+[1-mod(GCD×FPS,1)]/FPS。

2.47-2.50GCD随FPS变化

3       小结

  1.       服务器会根据FPS与游戏内设置的GCD计算理论GCD值,并根据玩家实际GCD与理论GCD的差值进行±0.04s的修正。

  2.       服务器所计算的理论GCD值=GCD+因为帧率延后的时间,即:理论GCD=GCD+[1-mod(GCD×FPS,1)]/FPS。


【FF14】GCD偏移和帧率税的详解与再分析的评论 (共 条)

分享到微博请遵守国家法律