徐士立
腾讯游戏TGPA技术负责人,七年游戏技术运营工作经验,近期主要聚焦游戏客户端性能优化工作,通过和终端厂商的合作,建立了统一的性能优化方案,已覆盖包括王者荣耀、和平精英在内的30多款腾讯游戏。
TGPA(Tencent Game Performance Amelioration) 是腾讯游戏官方性能技术解决方案。得益于各大终端厂商和腾讯游戏的大力支持,TGPA打通了游戏和终端操作系统,构建了一座联通游戏和手机厂商之间的桥梁。TGPA通过对游戏场景的深入分析,上层和各个游戏统一对接,底层和不同的厂商进行对接,进而实现了统一的游戏性能解决方案。
本文先从TGPA重要的里程碑事件讲起。2016年年底,正式立项做TGPA项目,聚焦在游戏的性能优化层面。经过了1年多的探索,确立了和终端厂商合作的模式,在这个过程中,与五大安卓厂商共建联合技术实验室,共同推动技术方案的落地和优化。2018年8月,正式对外发布TGPA白皮书。之后,又与各个终端厂商、游戏厂商共建了未成年人守护生态。2019年9月,CCSA标准立项通过,实现技术生态的开放。
TGPA整体的规划是搭建软硬件交互的桥梁,驱动生态体验优化,对内承接游戏性能优化需求,对外联动硬件生态。
软硬协同打造沉浸式游戏体验
随着游戏的发展,玩家对画质、帧率提出了更高的要求。手机终端如果没有办法满足性能体验的诉求,就会发生卡顿、手机发烫等性能问题,严重影响了用户的体验。
要解决这个问题,最简单的方法是通过在游戏内做多种设置,供用户选择。多种设置对普通用户来说是非常复杂的,用户很难根据手机性能来设置最优体验。这时游戏需要为用户推荐一个最优的设置,而游戏如何为用户的手机推荐一个最优的设置呢?目前市面上的机型是复杂多样的,由于每个机型的性能表现不一,选择最优的配置并不是一件简单的事情。
为了解决这个问题,我们做了一整套完整的智能推荐系统,旨在保障基础体验同时,让用户享受更精美游戏画质。在游戏客户端,实时上报用户体验的相关数据,然后在后台云端进行智能计算,计算出在每个设置组合下面用户体验的优劣,根据数据为用户挑选出最优配置。
智能推荐系统上线后,解决了大部分用户性能相关的问题,但是也有一些特殊的情况,如用户仍然会遇到卡顿的问题。众所周知,游戏类App长时间运行之后,会带来发热等一系列问题。手机为了保证正常运行,一般情况下会进行降频,降频后手机性能急剧下降,在游戏里对用户的表现就体现在频繁的卡顿和掉帧。以前,游戏用户在王者荣耀团战时,会莫名其妙出现一些掉帧情况,经过详细的分析,发现团战时由于各个线程负载高,当线程高到一定程度时,就会触发系统的智能调度逻辑,把线程带动到了大核上。由于大核的数量是有限的,游戏的主线程就被调度到小核,调度到小核后,造成的后果是每一帧的渲染耗时变久,超过了每一帧的处理时间,用户就出现了掉帧情况。针对上述情况,通过游戏本身的优化是很难去解决的,自然而然就想到是不是可以和终端厂商进行合作,来解决这个问题呢。
经过和手机终端厂商技术团队的深入交流后,确定一套通过打破黑盒,软硬件协同,进行游戏性能优化的技术解决方案。方案的核心是游戏在运行的过程中把场景数据和需要保障的性能数据实时下发给终端,终端根据游戏下发的数据进行整个系统硬件资源调度的优化。同时当终端运行出现异常时,比如说发生降频或者说将要降频的时候,实时通知到游戏,游戏通过配置推荐系统可以提前对游戏的配置进行调整。当出现这些异常情况时,用户的游戏也能够流畅运行。
如下图所示,这是游戏、终端互相协同的五大优化方案,保障沉浸式游戏体验。那是如何来实现的呢?要想实现游戏的性能场景保障,最关键的一点是针对游戏内的每个场景对用户体验影响,进行场景影响优先级的划分,这个场景优先级会影响到终端硬件性能调度。有了这个基础之后,用模型来实时计算。终端的调度调优结果实时通知到游戏侧,当出现了降频等问题时,游戏也可以做对应的适配,从而达到协同优化的效果。
具体实现是需要有一个从客户端到后台数据上报的整体流程,有了基础的数据之后,可建立分析模型,模型定时下发到客户端。同时TGPA客户端建立实时的通道,双方的数据可以进行数据交换,有了数据交换之后,双方就可以进行实时的协同优化。这套方案上线之后取得了非常明显的优化效果,低帧率降低了10%到40%,游戏的加载时长缩短了15%到30%。
当把游戏的性能优化到极致以后,是不是真的能够给用户带来沉浸式的游戏体验了呢?实际上是不一定的。因为影响用户游戏体验不仅仅是性能这一个方面,触控对游戏用户体验的影响也是非常大的。用户在触控的过程中经常会遇到点击反应慢、滑动断触和滑动不跟手等问题。如何解决这些问题也是我们重点关注的一个方向。
用户触控事件的处理需要经过哪些模块?首先经过手机的硬件屏幕,然后到驱动层,再到OS层。OS层传给游戏引擎,游戏引擎传给游戏的具体处理单元。甚至在有些帧同步的游戏里面,还要经过后台服务器的转发和处理。若每一个模块出现异常的话都会导致用户的触屏信息出现异常。为了解决这个问题,加快问题的定位速度,TGPA打通了终端和游戏,在每一个模块进行统一的日志采集。当用户出现触控异常时,就可通过统一日志快速定位到具体某一模块的信息。相信随着这套系统的不断完善,一定能够在触控优化上给用户带来完美的触控体验。
多方联动打造无缝更新体验
接下来,给大家介绍一下TGPA怎样通过多方联动给用户打造无缝更新体验的。
游戏品质的提升带来更大的资源包,目前小的有大几百兆,大的有到2G、3G的不等,用户想要进入到游戏,需要完成下载。下载需要等待十几、二十分钟甚至半个小时以上,特别是开黑的时候还要等半个小时,这个体验是相当糟糕的。我们有没有办法来解决这个问题呢?提升下载速度的方案并不可行。5G时代来了,用户的下载速度快了,游戏的品质也必然跟着提升,这个问题随着5G的普及依然会再次面临,所以还要想一些其他办法从根本上解决这个问题。
想办法让用户提前把资源包下载到本地,是不是可以解决这个问题呢?如果让用户提前下载完成这个包,需要解决2个关键的问题,第一个问题是需要提前知道有这个游戏包的更新。刚好TGPA是可以做到这一点的。第二个关键点是需要有渠道去帮用户自动完成下载,刚好终端厂商的渠道是可以解决这些问题。TGPA通过和终端厂商的合作,可以为用户提供一个完美的资源包的预下载解决方案。
具体的实现过程中有3个比较关键的点。第一是在服务端,在服务端实现TGPA和厂商SVR的打通,当游戏有版本发布的时候,TGPA SVR会自动通知到厂商的SVR。第二,厂商的SVR拿到更新包之后,可以Push到手机客户端进行预下载。当用户连着WIFI,没有做其他操作的时候,就可在后台下载,下载完成之后自动通知TGPA SDK。第三,用户进入到游戏的时候,可通过TGPA监测到需要更新的包已经完成了预下载,就可以用已经预下载完成的包进行更新,避免了漫长的等待。后续还可以做到,完成预下载之后自动帮助用户完成安装,用户的整个更新流程就变得无感,用户体验得到极大提升。这个方案已上线,并在多个渠道覆盖,极大节省了用户下载等待的时长。
共建中间件打造游戏技术生态
以华为终端厂商进行游戏维测优化为例。游戏场景进行性能分析测试的常规做法是让测试人员对这个场景进行复现。在游戏场景开始之前,手动开始性能数据的采集,在这个场景结束的时候结束采集,对采集到的数据进行细分。这个过程不仅费时费力,而且手动操作可能会导致不准确,最终会影响到分析效果。有了TGPA场景下发的助力之后,这个过程就可以优化成全自动化。在游戏场景开始之前,可通过后台接收到信号,自动开始性能数据的采集。在游戏场景结束之后,通过TGPA的信号自动结束采集。整个采集的过程就会做得非常精准高效。这套系统上线之后,目前已经推广到了100万+Beta用户的测试,极大提升了效率。
不仅仅是性能维测,在很多新技术、新硬件落地的过程中,可以看出合作诉求也是非常多的。厂商不断地引用新硬件、新技术,缺乏统一标准。游戏面对厂商各异的接口,无法快速统一支持,导致用户无法享受到最新的技术及硬件能力。TGPA建立统一的技术中间件,为游戏提供统一接口,对外适配各个厂商,确保新技术、新硬件能够快速落地,确保游戏和手机厂商都能够快速进行创新,无需担心繁杂的适配工作。
TGPA技术中间件平台除了覆盖了基础性能优化之外,在网络、振动、灯效、触控、90/120帧、异形屏统一适配上有了标准化适配方案的落地。在未成年人守护上,也积极的发挥出游戏和厂商侧的能力,通过硬件的能力来准确的识别出未成年人和未成年人的小号,帮助家长一起让未成年人健康游戏,这样一来也践行了腾讯的用户为美、科技向善使命愿景。
TGPA是一个开放的平台,致力建立一个开放的技术生态,帮助游戏和终端厂商落地新的技术、新的硬件,同时共同提升开发者开发效率,为用户带来更好的游戏体验。
End