导言
“中国企业出海难,原创内容如游戏出海则难上加难,希望XTiming能够让中国游戏在出海的过程中减少一点难度,在中国制造遍全球之后,能够让中国创造遍全球”。这是OpenMediation在发起XTiming项目时的初心。XTiming项目旨在为中小CP提供面向全球市场的游戏测评、投放测试、对接发行、广告变现等各个环节的顾问型服务,通过开放OpenMediation及其合作伙伴全球化过程中的行业经验和产业链能力,帮助中小CP跨越全球化的认知鸿沟,实现全球化的顺利着陆。
手游性能是影响出海顺利与否、生命力几何的关键指标。
当硬件遇上了跑不动的代码,手游就会卡而慢。当硬件长时间处于满负荷状态,设备就会发烫、死机。没有一个玩家希望下载一款包体大、加载慢、帧数低、画面卡,甚至出现程序无响应的游戏。
对于出海手游开发团队来说,严控性能问题刻不容缓。
抛开手游出海还面临着市场红利转瞬即逝、竞争环境瞬息万变等问题不谈,单在东南亚、两印等新兴市场,由于手机硬件的限制,游戏必须要压缩包体、优化数据结构,才能在配置落后于成熟市场好几年的设备上跑起来。
性能问题犹如猖狂的病魔,死死扼住手游的咽喉。不将这些问题治愈,手游就无法存活。
(性能常见问题:程序无响应、游戏卡顿)
但不是所有团队都能全面快速诊断、精准解决问题的。
一位腾讯Unity开发工程师在《Unity手游实战:从0开始SLG——性能篇(一)性能概念介绍》的帖子中提到:性能优化要求该岗位人员从业和引擎使用年限、项目经历、解决方案和见识、引擎的各种设置和实现原理等。如果不精通自己语言的特性、设计模式、数据结构等,就没有办法检查出别人代码里的深层次原因。而技术中台往往不直接参与研发,主要负责诊断、优化游戏研发过程中出现的问题,全程跟进和优化。
换句话说,团队需具备资深的开发经验,既要懂引擎,又会写代码,还要有足够的时间和精力跟项目一起跑——能承担这样消耗的开发团队很少。
诊断效率方面,要快速、全面,就需要高度调用资源,而中小CP更希望把精力聚焦在研发上,缺乏人力、物力和时间。
优化能力方面,性能优化技术门槛偏高,大多数程序员精通的是Gameplay和工具方向,设立独立优化部门的成本是中小CP难以承受的。
大量XTiming CP反馈的“急切寻求短期内见效的性能优化解决方案”更加印证了开发团队对性能优化的诉求——效率+能力。伴随前期代码的质量低下将转变为高昂的质量成本,开发者也怀着强烈的提升自身研发能力的意向,“希望找到信息平台,长期培养研发能力”“如果在研发中就把控好游戏性能,在后期甚至上线前的密集优化阶段中就能省时、省力、省钱”。
结合这些诉求,为帮助中小CP降低游戏的性能问题、省出更多资源用于研发、提升出海竞争力,XTiming秉承拥抱产业链共同成长的原则,与资深的性能优化服务商UWA达成合作。
希望通过这位“性能医生”,为使用Unity和Unreal引擎开发的手游提供高效“诊断”、精准“治疗”、长期“防护”服务。从短期、根本两方面下手,提高CP研发能力。
01 诊断:快速扫描,定位“病因”
手游出海重视效率,性能优化就是与时间赛跑。
从对接到测试,再到反馈测试结果,UWA首先保障的是流程的高效。譬如最早推出的真人真机测评服务,开发者只需依照网站提示步骤下载、集成SDK,将项目测试包上传到网站即可。整个过程无需其他操作,更无须改动任何代码。
反馈的报告结果丰富而全面。细化到内存占用统计、模块CPU占用走势、CPU帧数占比等;也包括App运行时硬件设备的内存走势、温度、网络流量消耗走势等具体信息。
(示例报告游戏性能总结)
设备能否承受?游戏运行顺不顺利?哪些函数占用了大量CPU需要优化?瞬息之间,这些性能问题就能暴露在开发者眼前。同时,UWA也提供自动提测功能,开发者完全可以设置定时检测。现在,设置周五检测、周一查阅和优化已经是很多公司的常态了。
在2017年底推出UWA GOT工具中,开发者还可集成SDK进行本地测评,根据自身项目时间节点安排进行资源、代码的排查检测,这一工具的推出给了开发者很大的灵活性。
另一个旨在解决资源冗余的服务——【在线AssetBundle检测】,使用起来同样便捷。开发者在上传项目的AssetBundle包体后(无须工程源码),该工具会即刻执行,并在几分钟之内反馈资源的打包情况。在报告中可以直观地看到冗余资源有多少,是什么类型的资源,AssetBundle之间的依赖关系如何。
(UWA AssetBundle测试结果:冗余资源展示)
同时,对于项目中更多大量的资源、代码甚至是Lua脚本,UWA也推出了本地资源检测工具来进行详细的分析和监控。该服务是面向静态资源、代码的全量检测分析,可针对项目组制作的美术资源、C#和Lua脚本、引擎编辑器设置等进行检测。结合项目组自定义的阈值,快速检测资源和代码的不合理情况,帮助研发团队及时发现并修复。
(项目资源检测)
目前,该服务已经成为不少开发团队的打版必备流程:每天半夜自动检测出报告,便于研发或QA团队第二天能快速查看数据报告并做针对性的修缮,大幅度地提高了研发效率。
当掌握资源的属性、合理性、处理的优先级等情况后,了解资源冗余的根本原因、改善包体资源的难题就被“化繁为简”了。
02 优化:药到病除,游戏跑起来
快速定位问题、精准优化是保证手游高效研发的第二个关键点。
和XTiming的测试投放报告相似,UWA检测、提供性能数据报告和优化方案。报告会展示手游运行时的整体趋势,包括CPU性能、GC(垃圾回收)调用频率等;也会解析内存管理、资源使用以及逻辑代码在运行时的效率瓶颈。同时,通过上千款游戏的性能数据解析,已经形成了针对大量重要参数的“行业标准”数据。
基于这些数据,优化策略才“行之有效”。
拿GC(垃圾回收)优化举例。我们都知道GC会拉低游戏效率,但只有结合详细的Mono堆内存分配堆栈等数据,开发者才能针对性地降低GC频率。
再以CPU性能优化举例。数据让开发者看到性能的可量化指标(如各个引擎模块的重要参数指标、CPU占用耗时分布和具体代码堆栈等)和行业数据中的相应指标的推荐范围,确定运行过程中的帧率卡点,并给到行之有效的解决方案。
在UWA的案例展示中,休闲手游《我一点也不可口》接入线上测评仅两周,就将大于33ms的CPU耗时占比从46%骤减至1.7%。
在使用UWA服务的上千款项目中,平均五次优化就可以达到20%左右的性能提升。
(优化率展示)
03 防治:思维升级,防重于治
“iOS耗能如何?”、“URP Bloom在中低配手机上掉帧明显?”这些都是开发者在游戏研发中常遇到的问题。
尽管市面上有很多资料,很多书籍,但面对这些实战中产生问题,只有根据问题具体分析,才能得到最贴切的解答。
拿Unity的资源管理举例,这是一个很复杂的知识体系,涉及了内存、加载、AssetBundle、热更新等方面,游戏开发中每个方面都可能出现问题、每个问题都有不同的成因——开发者是很难在市面上成体系的参考资料中定位、找到针对性解决方案的。
(UWA问答里,用户积极询问游戏开发相关问题)
授人以鱼不如授人以渔,UWA从成立至今为开发者打造了数个有温度的学习、交流平台,旨在游戏研发过程中解决性能问题,降低后期优化难度和成本,并为开发者提供长期学习、成长的环境。
其中:
- 有【UWA Blog】这样的博客平台,不仅有工程师的经验总结,也有民间高手给大家分享自己的优化技巧。
- 有【UWA 问答】这样的开发者社群平台,开发者可分享亲身案例和解决方案。
- 有【UWA开源库】这样的产品社群平台,为开发者推荐目前世界上关于手游、VR和AR等相关领域的开源项目,帮助大家更快捷、方便地找到需要的开源解决方案。
- 有【在理APP】这样的系统性学习平台,通过在线课程提供关于Unity、Unreal引擎使用的教学+手游优化课程。
(UWA于2020年3月推出的【在理APP】)
与XTiming“共同成长”的理念一致,UWA相信:比优化代码更重要的是优化思维——当与时间成为朋友,慢慢沉淀累积,随着时间的延长,开发团队的自身价值会越来越高。
04 结语
出海在即,时间紧迫,性能优化刻不容缓。
为保障手游性能,为了给游戏出海筑起坚固的基石,XTiming联合UWA全程助力开发者。XTiming希望开发者能够借助UWA快速诊断技术,获取行之有效的优化方案精准治愈手游性能上的瑕疵,赋予其更强大的生命力。XTiming也希望开发者能在UWA的技术交流平台更深入地学习、交流手游研发知识,提高自身游戏研发能力。
“Make It Simple”,是UWA期望在游戏研发过程中带给开发者的帮助;“让中国手游在出海的过程中减少一点难度”,是OpenMediation在发起XTiming项目时的愿景。
如医者,如伙伴,在UWA帮助下,XTiming希望手游能以最快的速度,调整到最健康的状态,届时,一定会在全球市场中迸发出耀眼的光。