嘿,召唤师们
今天,在接下来六个月的时间里,我们会为《英雄联盟》客户端后端的基础架构
推出一系列新的改动与革新举措。
为了追踪我们的进展,针对两个主要的客户端性能数值:客户端完全启动时长(即启动所需时间)以及英雄选择锁定时间,我们会与各人分享一些具体的目标。
在已往的一段时间里,客户端曾泛起过一些BUG、瓦解以及延迟方面的问题,我们在2019年经过了很长时间的监测分析与调整,虽然经过了一些改善,但我们认为依然还不够,我们想试试其他措施来让客户端整体的体验变的更好。简而言之,我们希望能让客户端有一些更明显的体验优化。
相比于介绍后续的相关计划,我们更想与各人分享的是接下来这六个月计划推出改动的具体性能目标以及明确的细节信息。
客户端数据
我们希望实现的是,纵然是那些电脑速度较慢的玩家,完全启动所需的时间也不凌驾15秒,目前来看,有些玩家完全启动所需要的时间可能是这个数字的三倍甚至是四倍。
我们检测的一个比力重要的问题是“英雄选择锁定”时间。即在你点击按钮之后客户端纪录你锁定该英雄需要的时间。在下方的图表当中,各人可以看到9.22版本(橙色)以及10.2版本中(蓝色)英雄锁定的平均响应时间。
上面的图表显示出差异的玩家之间英雄选择响应时间差异。虽然,客户端的性能因你电脑的速度会有所差异。举例来说,如果你的锁定时间低于0.2秒,那你的电脑就可以排进前10%了,说明你的响应时间比90%的玩家都短。同样,如果你的响应时间凌驾了0.8秒,那你就是靠后的那10%了,就是说你客户端运行的速度要比90%的玩家慢。
各人可以看到,相比于9.22版本,10.2版本中玩家的锁定时间有了大幅改善。这次改善最大的原因在于,我们在9.23版本中更新了客户端运行所使用的Chromium引擎版本。这为我们带来了很大的资助,但我们认为依然可以再实现一些提升。
为了让各人更容易理解,我们来看一组更详细的数据,就是特定群体玩家英雄锁定响应时间随日期的变化。
如各人所见,蓝色线代表第50百分位,也就是“中位”玩家的水平,图表上中位玩家锁定响应时间大幅降低确实很好,但目前来说,中位玩家英雄选择相应时间在0.3秒所有浮动,压力较大的服务器可能会更高一点,这虽然算不上可怕,但依然会有延迟感。
第70百分位的玩家(绿色线)体验近期也有大幅的改善,但是他们的英雄选择响应时间在0.45秒左右浮动。老实说就算是对于电脑配置一般的玩家,这也比我们期望的反映效率要慢一些。
最后, 看看第90百分位(橙色线)真的就很是明显了。毫无疑问,这些玩家的响应速度应该慢于大多数的玩家。0.8秒的数字相对来说会比力夸张,而这照旧Chromium 引擎更新之后的情况呢。
如果说服务器压力很大(特别是同时并发时期)或者电脑性能较弱,响应的时间可能比上述数据还要高,这样的体验并不算好。
那么,就说说接下来我们计划怎么办吧!
我们接下来的重点
对于客户端的性能优化,我们会将两个具体的恒久目标列为重中之重:
1)我们希望将完全启动时间降低到15秒以内,对于第90百分位的玩家们也是如此。这比之前启动较慢的机械来说,或许提升3~4倍的速度;
2)我们希望第90百分位的玩家英雄锁定响应时间能够降低到0.1秒左右,对于这部门玩家来说,相应效率提升8倍,实际体验上,即点击后基本感知不到延迟时间。
我们知道各人在想什么,因为遇到的问题不止这些,还需要去解决一些好比淘汰BUG、瓦解与内存泄漏等等的问题,并需要提升发现问题的处置惩罚效率。
我们为什么要优先这两方面呢?原因在于,在解决完全启动和英雄选择锁定时间的历程中,我们会对客户端架构的某些基础层面进行清理和重做。我们认为在解决这些要害目标的历程中,可以伺机处置惩罚这些BUG、内存泄漏以及瓦解等问题。
像是英雄选择中的“黑屏”BUG以及符文页没有正确生存等问题只是我们计划在此历程中一并解决的部门例子。但是我们想很是坦率地告诉各人,这是需要时间的。我们相信,这约莫六个月的计划会资助我们向这些目标取得长足的进展。但要实现我们的恒久追求很可能要更多的时间。
这是我们的目标,但我们无法百分百保证在这个期间内一定能完全告竣,我们现在把这些目标告诉各人是因为我们知道,我们会努力连续改善各人的体验,会更坦诚的去面对问题和交流问题。
那么各人可能还想问,我们到底会怎么做呢?
我们会怎么做
我们已经找到了导致启动速度变慢的两大架构问题(这真是一个漫长而又曲折的历程)。首先是我们的插件式架构,它让我们可以将客户端的代码支解成一些有用的大模块。但由于我们为客户端加入了许多的新功效,这个架构变得越发臃肿。其次,我们并没有很是有效合理的利用驱动我们用户界面的Javascript框架(称之为Ember)。
目前,客户端使用了太多的插件和Ember法式。实际上,在客户端完整启动的历程当中,会加载41项单独的插件以及16项法式。它们每项启动都需要0.1到0.8秒不等的时间,加起来可能就是一个不小的数字。
我们的计划是将这些插件和法式整合并大幅精简为少数几个(理论上效率也更高的)插件和法式。我们会先把重点放在启动历程中启用的那些,因为我们相信这将会为客户端的性能提升带来最大的收益。
第一阶段:完全启动
如今,有些玩家的完全启动时间较长的电脑整个启动历程可能会到达40秒的时间,如果你是这其中一员的话,会知道这种体验是何等的漫长难捱,如果很是不幸的再遇到瓦解问题,就更痛苦了。
客户端中有大量的内容,好比通知、挚友列表以及收藏标签等都市受到启动时启用的那些插件及法式的影响。所以尽管我们说过恒久的追求是将第90百分位玩家的完全启动时间降低到15秒,但我们认为在此历程中还要解决大量的BUG以及影响着整个客户端的低效内容。
主攻启动问题几个月之后,我们会评估一下距离目标另有多远,然后——可能是春天快结束的时候——我们会转向下一个重心专门处置惩罚英雄选择问题。
第二阶段:英雄选择
英雄选择引入了更多特别的插件和Ember法式。简朴地说,你在英雄选择时所做的每件事险些都市建设新的法式。交流英雄会生成两个。更换召唤师技术也是如此。
在单次的体验内,你玩《英雄联盟》的时间越久,就有越多这样的法式相互聚集在一起,体验可能会更卡,而且,你在选择英雄时的大多数大多数行动都要依赖与服务器的通讯,这可能会让交互的延迟进一步增加。
英雄选择中真正的泉源问题是我们后端系统治理数据的方式,目前我们接纳的英雄选择架构可以让我们通过系统传输大量有效的数据。例如,如果拳头决定在排位赛中禁用一个英雄,那险些所有玩家的这个英雄都市立即被禁用,只要这次禁用被推送上线,就连正在英雄选择历程中的玩家也会无法继续选用此英雄。
这是一套极为强大的系统,但要让它运作起来需要很是强劲的马力。就目前的系统设置方式而言,这个历程中有大量不须要的入口和瓶颈。所以有时候,纵然一个小的输入变化,也会有数不清的数据需要重新渲染,这会影响到各人在客户端内的体验。
为了解决这个问题,我们要从基础上改变英雄选择后端架构的事情方式。我们会将英雄选择时所有数据从服务器到客户端的传送方式进行重做,这需要一些时间。
我们另有其他一些雄心勃勃的恒久追求,就是让英雄选择变得更高效一些,好比将整个客户端整合成为一个单独的Ember法式而完全不牵涉插件。但短期的话,我们希望推出足够的改动,让客户端凭据我们上面所说的目标效率运行。
至于这六个月的阶段结束之后,我们距离“尽善尽美”有多远照旧个未知数。但是等我们临近尾声的时候,我们认为我们可能已经取得了很大的进展,并对未来有了越发清晰明确的偏向。
未来的偏向
我们每隔数月都市通过开发者日志与各人分享我们的进展,其中会有满满的性能数据干货以及对项目时间表的调整的相关介绍。
祝我们顺利吧!谢谢各人成为《英雄联盟》的一员,我们稍后再聊。
精彩评论
要害是BUG问题 有些时候打完出来客户端莫名其妙就炸了 我有台电脑还总卡运行 游戏端进不去
挚友明明下线了,列表上还在线,挚友一把游戏90多分钟,明明已经结束游戏了,还显示游戏中