《英雄联盟》客户端优化进展:减少崩溃、性能加速数倍
近日,《英雄联盟》官方发布了客户端更新的日志报告,下面为大家带来官方原文。
我们承诺不定期分享联盟客户端性能与可靠性更新工作的进展。
概要:2021年第一季度,我们开启了升级Chromium Embedded Framework(CEF)的道路。目前仍有部分工作有待完成,预计在第二季度末可以完成新版CEF,为玩家带来更多便利。
升级Chromium Embedded Framework(CEF)
上次我们提到过,近期的重大项目之一,是客户端Chromium Embedded Framework(CEF),也就是联盟客户端架构的核心网络浏览器的版本更新。坦白而言,上次我们低估了这项工作的重要性。无论从直接受益,还是为其他优化赋能的角度来看,CEF升级都是影响力最大的一项客户端优化。
CEF上次升级是在2019年11月(版本74),而撰写本文时,最新的版本是CEF 90。CEF升级(目标是CEF 90)将带来以下好处:
● 减少客户端崩溃
○ 过时的CEF版本在部分硬件上表现不佳。早期数据表明,大部分崩溃都是由CEF版本过时造成的。我们坚信升级后,玩家遭遇的崩溃次数会降低。
● 兼容性优化
○ CEF团队在大量硬件组合上对新版本进行了详细测试。联盟客户端可以免费享受这些测试的成果。
● WebSocket性能加速
○ 联盟客户端包含两大部分:“前端”部分与用户进行视觉交互,“后台”部分规模小得多,负责后台运行、从服务器调取数据和追踪客户端的所有信息,以便向用户呈现正确的最终结果。后台的工作举例:
■ “这位玩家在设置中选择了游戏中关闭客户端,现在已经进入游戏了,关闭前端,游戏结束后再打开。”
■ “这位玩家刚刚打开了藏品标签。里面应该都有哪些英雄?”
○ 简而言之,WebSocket就是前端与后台连接的管道。拓宽管道,减少转弯和打结的地方,数据传输就能更多更快,这正是新版本的CEF可以为我们带来的好处。尤其是对使用较早硬件的玩家,WebSocket的优化对改善大批数据传输(如游戏结束、英雄选择)的效果更为明显。与我们的CEF版本相比,优化幅度可达到:
■ Windows速度加快4.1倍
■ Mac速度加快7.8倍
● 动画性能优化
○ 具体说来,是根据数据生成的动画效果,如游戏结束页面的经验条(还有许多类似的地方)。这些动画从技术上来说是一种内存泄漏,因此长进程中的客户端整体性能也会有所提升。
● FPS提升——延迟降低,点击响应速度加快
● 开发难度更低(就是更快、更可靠)
○ 更多避免较长游戏进程中发生内存泄漏的方法
○ 一种新的衡量标准,更好地提供关于客户端在屏幕上呈现信息所需时间的数据
● CPU使用更智能
○ 在客户端当前CEF版本(74)中,一种叫做“网络服务(Network Service)”的功能首次登场,将所有网络请求通过一条线路输入CPU,这样其他线路就可以完成更多任务,比如加载内容等。由于这个功能在我们上次更新CEF时,才刚刚推出,来不及进行测试,因此并没有启用。下一次升级时,就可以筹划在联盟中支持该功能了。
● JavaScript性能优化
○ 新的CEF版本对处理JavaScript的v8引擎进行了大幅优化。例如兼容性优化,只需升级版本就可获取。
上个季度我们的工作重点是升级现有网络组件(比如视频嵌入、弹窗提醒等等网站技术),使其版本与新CEF版本兼容,确保升级CEF本身不会引发任何问题。我们希望这些组件的升级能够实现无缝体验,所以大家应该没注意到在过去几个补丁中逐步推出的升级。这些升级涉及到大量代码,因此偶尔也会出现测试中漏掉的小问题,但都立刻处理掉了。
完成这些组件升级最多还需要几周时间,随后我们就可以开始升级CEF本身,并期望在2021年7月末完成。
社交面板
上次我们提到的另一个重点区域是社交面板。我们的长期计划是将社交面板从ComponentJS(旧架构)迁移到Ember。目前我们的精力还集中在CEF升级上,因此这项工作暂时搁置,但我们已经完成了Ember迁移所需的部分早期步骤,CEF升级完成后就会继续。
以下是工作重点转移到CEF升级前,我们解决的一些社交面板的主要问题:
1. 社交面板无法连接
2. 好友列表无法加载,状态显示不正确,好友数据问题
3. 玩家在普通游戏中时,悬浮卡片不显示排位信息
4. 启动时在断开连接、忧伤的魄罗和好友列表加载之间乱跳
内存占用和JavaScript错误情况更新
我们也在继续关注同一会话内进行的游戏的内存占用情况。我们很高兴看到,从补丁10.25之后,游戏的平均内存占用下降了约30MB,整体内存不足崩溃数量也在持续下降。
最后,我们想说说JavaScript错误。上一篇文章中,我们提供的拳头各地区玩家遇到的JS错误数据有误。10.25版本中,这个数字达到了惊人的2.65亿。好在玩家实际遭遇的错误数量并没有改变,只是我们测量的手段变了,从而进一步意识到了这个问题的紧迫性。此后,我们的每个补丁平均降低了1.4亿次错误,并有信心可以继续减少错误数量。
目前的计划
尽管我们近期的首要重点是CEF升级,但也在规划2021年的其他项目。
● 上文中提到的将社交面板迁移到Ember
● 重新审视比赛结束(EOG)页面。去年底和今年初,我们处理了比赛结束的几个主要问题,但仍存在有待改进的地方。许多玩家仍然反映存在返回客户端时间过长和/或比赛结束页面死机的问题。项目开始后,第一步是摸清客户端与游戏内引擎和服务的所有互动,随后考虑如何优化体验。EOG调用了许多客户端团队之外的服务,我们需要与其他团队配合,一同进行优化。
● 进入英雄选择页面延迟。这个问题在部分地区报告频率很高,说明玩家的网络连接情况是很重要的因素(不同地区的网络基础设施情况各异)。虽然我们对网络问题可做的不多,但仍会与竞技团队合作,尽量在客户端内确保玩家在合理的时间内进入英雄选择页面。
● 长会话中的客户端稳定性。去年年底我们发现了内存泄漏,导致客户端随着玩家打开多个游戏或客户端长时间空闲时,占用内存越来越多的紧急问题。经过更全面的跟进,我们将寻求更直观的方法,让玩家得以保持刚刚登录客户端时的体验,无论他们已经玩了多少局游戏或是客户端开启了多长时间。这部分修复工作可能还会不断强化,解决更多难对付的内存泄漏问题,但我们还需要对照其他短期解决方案进行衡量。
这次要说的就是这些了!当然,我们工作的一大动力,就是来自各种渠道的反馈,包括定期玩家调查。欢迎大家继续反映需要改进的客户端问题,以及对您的体验影响最大的改进!