后续|《LOL》客户端更新日志报告:2021进度与后续计划公布

《英雄联盟》官方近日发布了客户端更新的日志报告 。 官方表示客户端Chromium Embedded Framework , 是联盟客户端架构的核心网络浏览器的版本更新 , 这是今年的重点项目 。 目前官方正重新审视比赛结束(EOG)页面 , 也在着手解决进入英雄选择页面延迟问题 。

后续|《LOL》客户端更新日志报告:2021进度与后续计划公布
文章图片

我们承诺不定期分享联盟客户端性能与可靠性更新工作的进展 。
概要: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性能优化
【后续|《LOL》客户端更新日志报告:2021进度与后续计划公布】○ 新的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调用了许多客户端团队之外的服务 , 我们需要与其他团队配合 , 一同进行优化 。
● 进入英雄选择页面延迟 。 这个问题在部分地区报告频率很高 , 说明玩家的网络连接情况是很重要的因素(不同地区的网络基础设施情况各异) 。 虽然我们对网络问题可做的不多 , 但仍会与竞技团队合作 , 尽量在客户端内确保玩家在合理的时间内进入英雄选择页面 。
● 长会话中的客户端稳定性 。 去年年底我们发现了内存泄漏 , 导致客户端随着玩家打开多个游戏或客户端长时间空闲时 , 占用内存越来越多的紧急问题 。 经过更全面的跟进 , 我们将寻求更直观的方法 , 让玩家得以保持刚刚登录客户端时的体验 , 无论他们已经玩了多少局游戏或是客户端开启了多长时间 。 这部分修复工作可能还会不断强化 , 解决更多难对付的内存泄漏问题 , 但我们还需要对照其他短期解决方案进行衡量 。
这次要说的就是这些了!当然 , 我们工作的一大动力 , 就是来自各种渠道的反馈 , 包括定期玩家调查 。 欢迎大家继续反映需要改进的客户端问题 , 以及对您的体验影响最大的改进!

    推荐阅读