王者荣耀腾讯大咖说:腾讯是怎样做Unity手游性能优化的

文|繁花豆

正文由腾讯WeTest授权发布
作者:chunhe,腾讯资深后台开发工程师。
链接:http://wetest.qq.com/lab/view/108.html
著作权归作者所有。商业转载请联系WeTest获得授权,非商业转载请注明出处。

/ 01 /

俗话说,用户体验不说话性就是耍流氓。
在PC游戏上之习性问题并没有那么鲜明,加个内存换个CPU或者刷个主频就可知自在搞定;到了手游时代继状态则展示较严厉,捉襟见肘的内存使得资源加载时假如履薄冰,加上高中低不同安排的机型为性问题显得尤其突出,一个低端机型上之卡顿就可能致同深批判屌丝用户之消解,这本无法给忽视。
于手游的大潮的峰,腾讯对于手游品质的要求由1.0到2.0再次至本底3.0,不仅是玩法以及情节,在戏品质之稽核及为持久的涵养着大要求大标准。腾讯游戏的格调管理基本在Unity手游性能上拓展了重充分层次的挖掘,这是一个腾讯内部生让欢迎之属性分析产品,无论你是不是在从Unity相关的干活,听了这个良心产品的故事保证会受您加90%之魅力值。但在此之前、先要探望你的“性”能到底行不行?
(下文有恢宏专业术语,有或滋生你的无凑巧,请于上下指导下看。)

当公交车上,偶然听到隔壁两个女生的对话。

一.科普的Unity手游性能问题产生怎么样?

里一个游说:

Unity手游的性能问题直接是叫业内视为诟病,腾讯公司里面的TDR评审就是一个特别针对技术细节进行专家团评估的环;早期的TDR评审关注的是内存是否超标、CPU是否饱满、网络流量是否过深当数码,经过近几年手游浪潮的洗礼,现在评审过程中会更强调细分问题的研究和排查。

“这有限龙为薛之谦的热搜刷爆了,这样的老公的确好优质好优质啊,羡慕老我了。”

王者荣耀 1

旁一个游说:

此地描绘图片描述

“要是以后本人力所能及找到像他如此产生钱又发才情的男友,我一定返回叫我家祖坟烧高香,三上激动到不思睡觉。”

设若说左边是玩家经常会面遭遇遇到的表面现象,那右边则是基于Unity引擎深开掘后的题目本质。
它们对游乐之有血有肉影响是什么吗?就将最近于火之《王者荣耀》来比喻,我们有幸与了她上线前后的几独优化版本的剖析,先后撞了之问题以及优化措施主要发生下几乎单:

我任后情不自禁想笑,转头看了她们一目,发现个别单穿正高中校服的女生一边打在帝王荣耀一边聊得津津有味。

王者荣耀 2

咱们进去了一个全员娱乐的一代,明星的风吹草动成了俺们每日的谈资和乐趣。追星的观并无奇怪,只是现在底小女孩做在如此不具体的臆想,让人口操心。从小就想如果乘别人,不会见自食其力,这样的布局就见面照年龄的增强越来越缩小。

这边描绘图片描述

女童啊,不应有总把希望寄托为他人身上,什么时你才会认真的探视好。

1.出于实时对战游戏的多寡包数量巨大,早期版本的轴同步策略会招致比较强烈的卡顿,通过拓展数据包的统一和优化逐渐化解了卡顿问题;
2.累创建与销毁的小兵对象为CPU爆表了,大量底小兵若利用实时内存的分红和回收,会时有发生大量之内存碎片以及体系开发,解决办法之一即是应用高效之目标池进行优化,对每个内存对象的状态进行操作即可;
3.性能分析过程遭到,发现单人同屏和多口及屏时之付出都深酷,通过视野裁剪技术,使得玩家看来野外的非必要的特效及渲染可以通关门,极大降低了CPU、GPU及内存的开;
4.在高中低三档机型上玩游戏时,分别加载不同层次之特效包,这吗推动降低CPU和内存的开发;
5.游戏内界面采用了UGUI的办法贯彻,但大气底实时UI变化使得副本内每帧会发生230之上之drawcall,导致中低端机型感受及明确卡顿,最终用UGUI+自研究UI的组合拳,重写了同一效仿紧密结合游戏本身特点的UI来实现战斗血条和转移文字的功能。

有人说,你的岁月花在啊,你就算见面成怎样的人头。格局高的人口,不见面花费尽多日以打闹及。

二.手游发布之前的习性分析
近年,经过多少痛苦的教训之后,业内已经逐步发现及手游性能都改成了千钧一发的首要,特别是对做大DAU的手游来说更是重大。腾讯对于手游性能的测试与督察也是大半管齐下,在新本子发布前会频繁肯定性能是否顺应发布正式,拿上荣耀这款实时比游艺的话,在测试阶段会收集大量之性数据开展辨析,测试经理对各类性能指标进行评估并给出最终质量结论。

自己杀以为然。

王者荣耀 3

/ 02 /

此地描绘图片描述

神州著名作家杨绛先生既受一个朝它们请对的小伙子写信说,你的题目就是在读书太少,想得极其多。

若是达到图所示,首先,功能测试为就是日常所说的人肉测试,用于测试游戏之初、老功能点,测试工程师于办事过程遭到得以Cube进展数量收集;自动化测试则是基于腾讯WeTestgautomator自动化框架来贯彻,功能看似于Robotium,在毫无人力参与的景象下能够盖到多方技巧、角色与卡;灰度发布指的是于一个万分有点范围定点推送手游的初本子,并着眼运营期的色状况以及玩家反映。无论是哪种测试方法,在经过被都得据此Cube拓展多少搜集,在测试就后,服务器会自动进行数量解析并受有多宗性能数据结论;这些性数据的下结论来自于Unity官方的引进标准值和腾讯游戏海量的经验库,如果同意机器给起底下结论则可以巩固当前算法,当然也得挑战活动分析的定论,帮助后台改进算法,最终版质量结论或出自于测试经理的判断。
看样子此是免是有一个疑云:不举行性能分析行大?当然行,并且你的制品依旧会公布、能达丝,带来的结果就是用户抱怨用户投诉用户没有。生病了、还得老老实实的失就诊去吃药;冰冻三尺非一日之寒,一庙大病的支出远比一般养生要昂贵的多,对承诺测试行业之名言就是“bug发现的一发早、修复资金更聊”。

假使发生微人之题目虽在,自己未思量走,还想方设法阻止别人的行走。

三.Cube工具的简介
现阶段市面上多数性工具还还停留于操作系统级别之数及,
在娱乐本身的剖析及如尚缺点啊,所以腾讯的工程师们道还可通往灵魂深处挖一扒,于是就研发了Cube夫手游性能分析工具,可以于用户因极小之财力在真机上拓展打性深度解析。常见的一日游品质改善的进程要下图,Cube克支援你成功的凡前方片个环节,至于第三步、解决问题自然还是如开发人员去改代码了。

本身之对象琳琳本身是一个老大好学上进的闺女,去年报考英语四级考试,她每天早上犹早起床一个钟头,去操场背单词和撰写和句子。

王者荣耀 4

莫悟出,过了个别天她回来宿舍就起来察觉无投缘,一进家,就深受舍友说“哟,我们的高校霸回来了!”

这边描绘图片描述

其他人默契的掉哼嗤一乐,而后各干各的从业。留下她一个总人口啼笑皆非的恐慌,明明它才开始零星龙什么。

通过Cube的吃水解析,能够扶助开发者发现眼前娱乐内分类资源的占用情况。

到了第三上,终于有人抗议,说“你于得最为早了,影响我们休息。你能不能够生成打那么早?”

王者荣耀 5

“就是就是,太吵了!”其中一个附和道。

这边描绘图片描述

“可我曾非常轻很轻了……”朋友委屈的泪水在眼眶里直转。

苟齐图所示,在资源分析纬度上得给有如下结论:·
资源采取总量是否以合理限定中。· 一个气象内之资源重复率。·
资源对象拷贝的多寡是否站得住。· 场景切换时保留的资源详情。·
网格、纹理、音频、动画、GameObject等资源是否超标。
在性分析纬度上,以腾讯的TDR标准吗条例,在高中低三档机型上会发两样之正规化,Cube以三档机型中召开了活动的淘和判断,便于开发人员能更进一步直观的意识题目。(如下图)

后来,她被迫转移宿舍。曾经的那些室友,追剧、刷博、聊八卦……无不热闹,我庆幸之是有情人终于脱离了那么同样过多:看不惯别人努力,自己自甘堕落颓废的人数。

王者荣耀 6

识与布局无雷同的人口,即使有重复多之情缘也未可能成为情人。

这里描绘图片描述

/ 03 /

首先、在游戏场景内对于FPS、CPU、PSS的变化趋势是索要重点关注的;其次、对于mono这种单纯多不弱化的物,当然为是关爱的主要,mono堆内存的不停分配会直接促成PSS内存增长都不可逆;再次、对于跟渲染有关的drawcall,也是手游需要关怀的性能指标之一,drawcall太高会导致FPS陡降,造成视觉上的卡顿。

卿的题材,就在思考太少,本末倒置。我回忆一个稍微故事,一个伯父伯费力的抵制打一把锯在林里划树,但过了千篇一律上午才锯了千篇一律株完整的。有人路过,忍不住问:

四.同类工具对比MAT
(Memory Analyzer Tool)的缺点:
l 需要导入HPROF文件再度分析;
l 只能查看java层的内存情况,看不到native堆的详情; xcodeinstrument
的短:
l 只能用来mac,ios;
l 只能查看C++ 或 object C 的情,看不到mono堆的详情;

“你干什么不将锯磨锋利一点才去锯树为?”

Unity Profiler 的缺点:
l 需要单独编译develop版本;
l 在PC上推行,没法捕获真机数据;
l 内存数据与实际真机的数码差距颇非常、多的下来几十M异样;
l 只能看最近一段时间的多寡,看不到总体的详情;

他倒答:“我从不空,锯树都不及,哪有时空磨锯子!”

对Unity大神和开发人员,你再次体贴的应有是事无巨细的属性数据,都能够满足你们。大神会说“我又爱看在Unity
profiler直接调试啊”,那尔还得腾出时间编译一个develop版本、还得还跑同方方面面游戏、数据与真机还相差很多,关键是大神啊来那么基本上日也?

俗话说,“磨刀不误砍柴工”,说的虽是这么,这像无像舍本求末的公。

王者荣耀 7

咱每日还产生大大小小的事用去开,总以为日子未敷用。而时间究竟去哪里了呢?

这边描绘图片描述

卿连忍不住以起手机先刷刷朋友围,你说刷一下虽错过看开,而一刷就是一致上午可混然不觉。书没看成,一龙时间过了大半。

从而答案是肯定的,日常测试工作着在了数量收集和数目解析功能,就得提高很挺之工作效率。

你总是感叹别人旅行的生活这么丰富,到公自己时,却说着尚未空做攻略,还是算了好不容易了。

咱俩普遍的产品质量改进流程无非是脚这四步:

君出空聊娱乐八卦,却无暇管理一下横向发展的身材。

  1. 测试人员发现题目;
  2. 提bug 给开发人员;
  3. 开发人员编译develop版本;
  4. 开发人员用Unity profiler 定位原因;
    用Cube拓展打测试能够辅助你节省后面2只步骤,何乐而非也乎?通常状态下,开发人员是距离几个礼拜还是几单月才会失掉做同次于性调优的工作,中间就隔了N个版本,有诸多题目会吃挂的杀怪;基于“问题意识的愈加早修复资金更小”的百折不挠道理,功能测试人员完全可就此Cube进展普通的版本效果测试,让Cube当后台默默的吧而意识各种性能问题。
    l 即插即用、无须编译无须嵌入SDK、真机运行数据;
    l 提供mono内存分配信息及mono快照对比;
    l 能看到满测试流程中的备数据,而不仅是某一段时间;
    l 于误操作产生的目标拷贝数量;
    l 函数开销排名;
    l 关卡间保留的冗余资源;

布置越低的丁,越喜欢花时间在不重大不亟的行上。

五.性能优化的N种武器作为一个缘性优化为己任的工具类产品,Cube不单从为问题的意识同固化,也期吗开发人员提供再多还实用的性能优化措施。
贴图:
l 控制贴图大小,尽量不要跨越 1024 x1024;
l 尽量使用2底n次幂大小的贴图,否则GfxDriver里会有2份贴图;
l 尽量使用压缩格式减小贴图大小;
l 若干种贴图合并技术;
l 去除多余的alpha通道;
l 不同装备以不同之纹路贴图,分层显示;

出句古话叫“工欲善其事,必先利其器”,只有将日花在锻炼自己,从身体、精神、心智到待人处事四只规模,才能够提高个人产能,累积其他修养之本金。

模型:
l 尽量控制模型的面数,小于1500会晤比较确切;
l 不同装备用不同的型面数;
l 尽量保持以30根本骨骼内;
l 一个网格不要跨越3只material;

有人说:你无时无刻如此忙,才是你开不化大事之缘由。你就算是看起格外努力,实际上啥也从没涉及化。

动画:
l N种动画压缩方法;
l 尽量减少骨骼数量;

/ 04 /

声音:
l 采用压缩MP3 和 wav;资源方面的优化:
l 用 Resource.Load 方法在得之早晚还念博资源;
l
各种资源以行使完后,尽快用Resource.UnloadAsset和UnloadUnusedAsset卸载掉;
l
灵活运用AssetBundle的Load和Unload方法动态加载资源,避免重大场景内的初始化内存占用过高;(实现起来着实十分难…)
l
采用www加载了AssetBundle后,要用www.Dispose
及时放出;
l 于关卡内谨慎使用DontDestroyOnLoad,被标明的资源会常驻内存;

君的题目即使在时间浪费最多,却没找到好无比关键的事。什么时候开始,你的布置初步越来越低?

代码的优化:
l 尽量避免代码中之别字符串连接,因为这会给GC带来极致多垃圾;
l 用简易的“for”循环代替“foreach”循环;
l
也有着戏内的动态物体下外存对象池,可以减去系统出和内存碎片,复用对象实例,构建和谐之内存管理模式,减少Instantiate和Destory;
l
尽量不以LINQ命令,因为其一般会分配中缓器,而及时生轻变垃圾内存;
l 将引用本地缓存到元件中见面回落每次在一个游玩对象中使用 “GetComponent”
获取一个部件引用的需求;
l
减少角色控制器移动命令的调用。移动角色决定器会同步发生,每次调用都见面耗损较生之性质;
l 最小化碰撞检测请求(例如ray casts和sphere
checks),尽量从历次检查着获重新多信息;
l
AI逻辑通常会变卦大量大体查询,建议被AI更新循环设置低于图像更新循环,以缩减CPU负荷;
l
要尽量减少Unity回调函数,哪怕是空函数也毫无留下着;(例如空的Update、FixedUpdate函数)
l
尽量少动FindObjectsOfType函数,这个函数非常慢,尽量少用都必定不要在Update里调用;
l 千万早晚要控制mono堆内存的大大小小;

当你看综艺节目越来越兴起,每天浑浑噩噩的时段;当您评价别人更加多,任由自己放纵的时节;当您时管理进一步差,每天还无亮堂自己干了呀的当儿……

六.小结

斯时,你的格局开始起危机。把握不了时,便是丧失成长的一致雅法宝。

性能优化就比如海绵中之趟,又或许内衣里的肉,挤一挤总会有些。同时,性能优化并无是同样劳永逸的劳作,而是一个年代久远而颇具挑战的职责;项目的依次阶段还见面生性上之题目,在用户体验的底蕴及不断进行打磨,持续保持产品之可以性能才能够收获好人口碑。(和保障人健康是一个道理)

罗振宇说,未来,在时之战场上,有少数帮派生意会专程贵。
先是,就是援别人看时间。第二,就是帮扶人家管省下的时空浪费在那些美好的事物上。

王者荣耀 8

能掌控时间之人头,才会掌控好的终身。要当自然时间外做对协调最紧要的从,才会吃格局更明朗。

此处描绘图片描述

/ 05 /

Unity手游的属性优化过程再如是一样门时空转换的方式,
持续在CPU和内存之间取得一个平衡。空间欠缺时虽用自由部分不行数据,以获得更精良的长空使用率;时间最丰富时便待降低不必要之函数开销。例如当低端机上,为了节省有限的内存空间,静态加载的资源会相对比较少,很酷一些资源通过动态加载与放;而以高端机上则不用考虑空间的限定,可以一次性静态加载重多之资源,省去了很多loading和GC的做事,让戏体验更流畅。

而的问题即在于关注别人太多,而关注自己太少。本条时,我们经过各种应酬软件去偷看别人的生存、别人的思、别人的立,然后和好犯比。

UnityCube此时此刻既足以下。
心得地点:http://wetest.qq.com/cube
至于测试报告的问题:http://wetest.qq.com/guide/view/?id=267
用帮助:http://wetest.qq.com/guide/view/?id=266

前方少天老妈与我说自同学的姐姐考取了博士,现在公费去美国修一年。而自己同学,目前当上海理工大学既备考研。

大问题:http://wetest.qq.com/guide/view/?id=268

自我立即心声感叹,“为什么他们的人生就是如开了挂同一?而自我还什么都尚未规定。”

卧在床上刷朋友围,看到了一直同学的漫游照片,羡慕及最:“羡慕她有一个生出钱之镇爹爹老妈,富二代果然不均等,而己不得不眼巴巴的看照片。”

咱们整天喜欢关注别人,试图去搜寻理由被投机变那么丧。总以为他人所取的打响必然是指别的啊原因,却无想过去提升自己为堪过得那好。

较打时刻盯住着人家,多关注自我之成人,尽好的整个努力为在少点遗憾,才会过上舒适人生。当一个人数将他的活力与日由关爱之外转向关注自我之成才时,才会有所再胜的格局。

/ 06 /

而的题材就是在于心胸太狭隘,见不得年纪稍之总人口于你还懂事。前片龙回老家吃饭,和爷爷还有伯父一家人一块,本来是可观的。

今一个阿姨说,我伯母对于自之口舌有些恼火,我才赫然:原来它顿时简单天且非为我家门口经过了凡盖那晚我说之说话。

那无异晚,我们正吃在饭,我堂哥的儿女今年3载了,还无见面友善动手吃饭啊未轻谈还非见面理人。我哪怕问伯母,“我哥哥这么久远打了电话回来吧?他解小斌斌去学学了也?”

她说“没有。”

自家没法之表示“都是他的男女,他怎么都未关心一下乎。”

这一下,沉默了。

只是没悟出它坐及时无异于句子话生气了,而自也直接不晓得它们生气,她当自己年龄小,没资格说自己哥哥。有些人总仗着祥和年龄比你怪,你将要以各级方面比自己死,见不得而比较自己懂事、不思量你于我再次尽善尽美,这种小的意见可笑至最。

哼于,格局及年龄少提到都没有,我们做好自己,该干啥关系啥,只是别为了某些人啊退了友好的布置。

及时栋都,一半人口于使劲,一半人当认命;一半人当快时,一半口以耗时间;一半丁在焚烧青春,一半丁于虚度青春。

公肯举行啊一半的人口?

共勉。

— END —

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website