破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?( 三 )


UPR里面集成了Unity Profiler的性能分析功能,并对它的数据展示进行了增强。另外,它提供了更多的功能。我们在这里分成了两类,一类是运行时性能数据的分析,另外一类是静态资源的分析。运行时数据包含了Unity Profiler和Memory Profiler,以及对象快照的抓取,我们在不同时间点可以抓取对象的快照做比较,看看有哪些对象创建出来没有释放,就有可能是内存泄露,这个功能可以作为XCode里面Allocation的替代功能。
另外,过去的Unity Profiler里面并没有提供Lua的性能分析,我们在UPR里面也是提供了完整的Lua的性能分析功能。针对GPU方面,我们对RenderDoc进行了简单的集成,你在使用UPR进行测试的过程中是可以在一些时间点抓取RenderDoc的数据,我们会把这个数据保存到UPR的服务器上,当你在后面检查这些性能报告的时候,可以在我们服务器上下载这些当时抓的RenderDoc的数据,然后再用RenderDoc的工具打开这个文件,然后进行渲染方面的分析。
除了运行时的性能数据分析以外,我们还有静态资源检测,包括刚才提到Project Review里面去做大量的资源导入的设置,我们现在提供了一个资源检测工具,可以自动扫描你工程里所有的美术资源,来检测哪些资源它的设置不合理。
另外,我们这个方案还有一个优点,过去有一些第三方提供的方案是作为Unity Editor的插件,需要用Editor打开工程做完所有的资源导入再去扫描,整个流程会非常慢,如果工程复杂的话可能需要几个小时。我们现在提供的这个工具是一个脱离了Unity Editor环境的独立的EXE,非常快速,大概几分钟之内就能扫描完一个非常庞大的工程。
除了这个资源导入的设置以外,我们还有AssetBundle资源冗余的检查工具以及静态代码分析、粒子系统分析等等一些功能,后面还会有一些简单的介绍。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
UPR还有一个特点,我们的数据是非常全面的,它除了运行时收集的Unity Profiler数据之外,它会有内存快照和硬件方面的数据,GPU可以抓RenderDoc,另外我们也集成了ARM开源的GPU SDK可以抓取硬件层的GPU的数据。它有Lua性能分析和屏幕截图等等的功能。所以,它的功能完整性是远远要超过过去Unity Profiler里面的功能以及XCode里面的功能。
我们刚才提到了所有的功能的数据展示都是可以在一个统一的时间轴里面,这样会非常方便大家检查某一个时间点的性能卡顿问题的时候非常方便地对比,查找问题在哪个模块里面。
我们所有运行时的数据和静态资源检测数据都是整合在一起,非常方便大家统一地查看性能报告。
UPR还有一个特点,使用起来非常方便,而且我们是对客户的数据安全性非常重视的。
首先我们在做性能测试的时候是不需要用ROOT过的手机,普通手机就可以。我们不需要对你的游戏工程做任何的修改,普通一个Unity的工程只要是发布成development版本就可以使用Unity UPR进行测试。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
我们也不需要你上传工程文件或者是你build出来的游戏的APK包、安装包之类的,因为大部分的游戏在上线之前对保密的要求非常高。游戏测试人员在我们UPR官网上只需要几分钟时间配置你的工程的信息就可以进行测试。
测试之后我们报告的生成也非常快速。因为我们对UPR的报告分析做了好几轮的优化,即使你测几个小时的性能数据,我们几分钟之内就能生成一个完整的报告出来。
另外就是UPR的报表展示是非常强大的,因为我们使用了一些非常先进的数据可视化的工具进行展示,提供了各种可以交互式的可视化展示的方式,里面很多图表是可以进行操作的,可以展开再进入里面看更加细节的数据。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
我们现在正在做的工作是在我们最终做的报告里面增加更多专家的建议,因为性能分析的过程是把数据进行数据的可视化,但是看到这些数据之后应该怎么进行优化仍然是一个问题。一般是要通过过去人工的经验总结来得到。
破解|破解技术难题,Unity官方性能优化和企业服务是如何工作的?
文章插图
现在Unity在中国技术支持团队比较庞大了,现在程序方向的工程师有大概40人,技术美术大概有10几人。所以,我们这些官方的工程师在过去很多年总结了非常多的经验,我们会把这些性能优化的经验逐步地增加到我们UPR的报告里面,这样大家看到一个报告的时候,里面会自动包含一些优化的建议,这样你就可以知道怎么样快速地修改你的工程,去解决这些性能的问题。