今天我们要在本次开发者日记和大家共享目前为止为了提高服务器性能作出的希望和成果。估算很多玩家们都十分理解服务器性能的重要性。PUBG用于的虚幻引擎是客户端-服务器模式为基础的引擎,因此所有的客户端必须通过服务器改版每个Actor的状态信息。
※ actor是虚幻引擎中十分最重要的概念,是能在游戏Level中布置的大多物体,还包括角色,建筑,背景,玩家视角镜头等。服务器性能一般来说通过服务器的FPS(每秒帧数)检测。如果服务器的性能下降的话,每帧的时间不会增加,按照这个时间的增加,服务器的响应时间不会增加。
服务器响应时间也可以叙述为‘网络延后’。如果服务器的响应时间增加(或者网络延后增加) 的话,玩家们可以体验到更为流畅的游戏环境。
因为服务器号召就越慢,向其他人表明我的行动/动作所需的时间就越多。荐个例子,玩家们可以更加慢看见我升空子弹的动作和效果。如果我们想增加我们一般来说熟知的‘非实时’现象,我们必须增加服务器响应时间。第14轮改版之前的网络流程结构在第14轮改版之前,虚幻引擎在服务器处置网络的方式如下:我们再行来解释一下上面的网络流程。
在‘Net Dispatch’阶段,服务器不会处置从客户端接到的信息报。此阶段不会处置枪械的升空,角色移动等内容。在此阶段中处置的许多内容不会按照效率和适应性,以一种形式(RPC或Relication)表达给其他客户端。
此后,服务器所需的游戏逻辑处置(例如,物理仿真)不会在“Simulate & Render ”阶段中已完成,处理结果不会通过“Net Flush” 传输给所有的客户端。上述的流程结构不会让“Net Dispatch”阶段处置的RPC转入Buffer 队列而会必要传输。
转入“Net Flush”阶段时,所有的现有Buffer留存内容不会传输给所有的客户端,并不会 创下Buffer。在这种结构中,RPC 传送到“Net Flush”之前必需通过“Simulate & Render”阶段,从而造成延后。我们预测虚幻引擎的结构是为了增加传输给UDP的数据包数量。
因为数据包的数量就越较少,网络的用于效率不会就越提升新的网络流程结构和提高内容但我们内部指出增加网络延后比增加数据包的数量要最重要,因而在第14轮改版变更了处置流程,我们如下图 在“Simulate & Render”之前加到了叫“Net Send Flush”的新阶段。在第14轮改版加到的“Net Send Flush”阶段,系统不会传输Buffer内留存的所有UDP数据,并不会 创下。
通过这个新的流程,我们仍然必须“Simulate & Render”所需的时间,从而增加了之前再次发生的延迟时间。“Net Send Flush”里系统不会处置之前转入队列的所有数据这流程上的变更可以让游戏通过两次改版网络数据, 因此从14轮改版开始游戏提升的网络改版率为2倍。
(部分玩家猜测的是服务器帧亲率的提升,然而,我们实际提升的是网络改版亲率。处置服务器帧数的过程中可以新增传输服务器改版数据,所以玩家们可以体验到60HZ了)变更的结果可以在Youtube主播Battle(non)sense的第14轮改版网络代码分析视频中寻找。通过以下分析图片我们可以证实40名玩家存活时,Gunfire(还击)时再次发生的平均值延后从94.5增加为77msec(较较少了18%)第19轮改版之前的数据分析结果和新的假设19轮改版之前的2018年6月25日,在90名存活的情况下检测的游戏数据结果如下:“Net Flush”阶段必须的时间为43.2msec,是整个帧数时间的 41%。
这时间的非常部分是为了拷贝(Replication) 各个 actor至客户端,系统‘序列化(Serialize)’的时间。※ 序列化(Serialize)是翻译成一段数据并记录到内存的一种过程,这可以让Actor的状态通过网络传输给客户端当我们根据上述分析结果搜寻优化方法时,我们想起“如果我们需要增加拷贝的“Actor(特别是在是Character)”的数量,那么总Net Flush时间也不会增加很多”因为《尤达求生存》比用于虚幻设计服务器的游戏,同时玩游戏的玩家人数多,因此Actor的数量必定要低得多。
Actor的的大数据量是一个问题,但Actor的数量是更大的问题。当我们困惑增加Actor数量的方案时,想起了低频率拷贝远距离角色的方法。因为这方法不会只不会给远距离的角色带给一些变化,所以不悔影响到游戏的玩法,并切会增加大量的序列化Actor数量,从而增加Net Flush的消耗时间。
研发过程:拷贝交叠系统(Replication Interleaving)从上述点子抵达,我们得出结论来构建一个系统叫‘拷贝交叉’系统,因为该系统不会根据客户端和Actor距离,适合的频率下跳过拷贝拒绝。首先,我们强制性分离了Actor被拷贝的部分,并减少了远处角色的拷贝频率。
然后我们分析了问题的类型和视觉变化的类型。测试后,我们解决问题了减少频率时再次发生的问题,并结论到减少频率至之前拷贝频率的4分之1也会很影响到游戏体验。已完成的拷贝交叠系统构建内容如下:· 根据距离要求在多少帧数之间跳过多少个拷贝·可以设置为3个步骤:步骤1跳过1帧,步骤2跳过2帧,步骤3跳过3帧。
在实行该系统后,QA团队测试了该系统,以便为每个步骤寻找适合的距离值。由于测试结果显示跳过3帧时, 角色动作不会经常出现摇晃的现象,因此我们要求不用于步骤3。
每个步骤的的用于数值如下:·步骤1:离玩家70米以上的角色跳过1帧·步骤2:离玩家400米以上的角色跳过2帧·(留意:这是目前反应到游戏的内容,此后或许不会更改明确的数据,以提高服务器性能及角色动作的简洁度 )提高结果新的系统改版后,服务器性能提升了20%。在右图为当85个玩家还死掉时的NA服务器的帧亲率数据检测结果。通过改版,服务器帧亲率从18.5减少到22.9,快速增长了22%。其他地区的平均值帧亲率增幅也多达20%更加令人吃惊的是响应时间的变化。
在下诏中,你可以看见,当85名玩家还死掉时,还击(Gunfire)的平均值延迟时间上升了58%,从149.4毫秒上升到61.6毫秒。该结果表明非实时的问题早已提高了很多。
除了拷贝交叠之外,通过其他改良,当多达80个玩家还死掉时,服务器帧亲率减少了20%,网络延后增加了50%。卷尾语自PUBG发售以来,我们早已在改良服务器FPS方面做到了很多希望。
除提高软件外,还对硬件展开了改良。然而,在第19轮改版之前,过去几个月的改版中没包括到玩家们可以具体的体验到的游戏环境提高内容在尤达求生存,百日行动期间,我们具体优先考虑到服务器性能改良,并正在研究和试验各种方法。为了构建单个功能,我们必需已完成可行性研究并且在构建该功能之后,必须大量的分析,检验和测试过程。
因为每个问题都必须大大地投放精力和时间,很难在短时间内解决问题。新功能的错误构建可能会造成更大的问题。因此,我们必需尽量慎重地实行和应用于新功能。展开上述提高内容的改版后,我们现在正处于优化过程中的““Net Dispatch”阶段。
根据我们的分析,大部分时间都用作角色移动处置,并且早已证实了优化这部分的可能性。角色的移动对PUBG游戏的影响相当大。因此,此任务必须大量留意,以保证此优化会以出现异常方式影响角色的移动。
我们正在尝试一系列的优化方案,如果这些点子通过测试的话,我们预计“Net Dispatch”所需的时间将从当前的41.8毫秒上升50%以上。但新的方案的平稳工作预计不会必须一个多月,我们将尽最大努力较慢研发和已完成。目前的目标是一直将服务器帧亲率从游戏的开始到完结维持在30。
我们将坚持不懈地努力实现这一目标,并获取更佳的 战术竞技体验。
本文来源:leyu·乐鱼-www.520eks.com