透视宝移动端对Unity手机游戏引擎监控实现

Unity是近年来很是流行的游戏引擎(engine),在当前手机游戏市场中所占份额极大,著名手机游戏Temple Run(神庙逃亡)、记念碑谷、战舰少女R、每天飞车等都是基于Unity引擎开发的。经过Unity能够任意建立2D或3D游戏,它可使游戏高度优化并且优美(渲染),同时简单几步操做就能让游戏在多个平台上通用。本文将从介绍云智慧透视宝是如何实现Unity引擎手机游戏性能监控的。css

1
Unity引擎功能特点
Unity包括不少渲染、物理、AI、Audio引擎,又集成了所需的动画、材质、物理、场景编辑器、打包发布等工具,造成一套流程化、相对完整的解决方案(solution),这是Unity最大的优势。能够节省不少人力物力,同时Unity丰富的第三方插件市场,大大提升了开发效率。
Unity的第二个优势是简单,傻瓜式调试和编译上手容易。就开发上来讲,U3D主要用C#和JS来编写脚本,出了bug也容易解决。
Unity的另外一个优势是强大的扩展性,适应于多个平台,当今最火移动平台包括iOS,Android和H5 的Web端均可以直接生成应用。好比闻名遐迩的《炉石传说》就是用U3D写的,而后移植到Android和iOS平台上。
U3D跨平台原理
U3D的跨平台主要靠的是C++实现的,经过mono把C#代码经过工具生成低可读性的中间语言,而后中间语言被进一步编译成不一样平台的原生代码(基于堆栈和面向对象),好比iOS就对应objectC代码。既然如此,就转换一下思路,只要把透视宝SDK加入生成的objectC代码中,就能和其余的移动应用程序同样进行性能监控了。
透视宝SDK对Unity游戏监控原理和应用
透视宝SDK对Unity游戏监控原理就是利用了U3D的这个特性,经过U3D自带的工具把工程文件转换成了原生工程,而后利用C++对原生接口作了一层封装。而咱们的透视宝SDK经过支持封装后的代码,让U3D生成的工程直接套用透视宝便可。
接下来就是透视宝的工做了,透视宝SDK针对游戏性能是如何进行数据采集,又有哪些应用呢?这里主要介绍网络监控、崩溃信息(crash)收集、H5监控等功能。
1. 网络监控
对于大部分热门游戏来讲,网络就是生命线,玩家登陆、进游戏内购买、或者实时交互都须要健壮的网络。以《部落冲突:皇室战争》为例,由于游戏加入了即时策略、MOBA以及卡牌等多种元素,让1v1真人实时对决玩法迅速风靡全球,雷军等网络名人都是皇室战争的重度玩家。而对这款游戏的玩家来讲,最不能接受的就是对战时游戏卡顿,哪怕是短短十秒钟的网络延迟都有可能形成战局的逆转,而登陆时迟迟不能进入游戏界面,或者购买“宝石”时网络出错宝石不能及时到帐,都让玩家深恶痛绝,甚至可能形成用户的大量流失。这时候,你须要透视宝SDK的帮助。程序员

2
透视宝SDK功能图
透视宝SDK提供完善的网络监控功能,可以支持各类流行的网络库,第三方的ASI和AF、系统库NSURLSession和NSURLConnection,丰富的监控指标确保准肯定位问题根源,包括网络请求的响应时间、请求类型、请求的POST参数、参数大小、首包时间、响应数据大小,若是请求发生错误,能准确抓取错误码、错误信息、错误类型,经过和服务端的配合能进行端到端网络性能分析。
2.崩溃信息收集
对于玩家来讲,崩溃、闪退和卡顿无疑是最恶劣的游戏体验,崩溃以后是再次打开游戏仍是放弃游戏,甚至卸载游戏,只是个简单的决定,毕竟游戏竞争如此激烈,找到类似甚至相同的一款游戏不要太容易。而对于开发者来讲,线上环境的移动应用崩溃问题有关联因素,若是没法复现用户环境,是很难准确判断缘由的,因此经过SDK收集崩溃日志,快速定位问题根源,是最好的解决办法。
透视宝SDK可以轻松实现崩溃和卡顿的监测,准肯定位崩溃代码的类名、方法名、行数及崩溃类型,还能找到崩溃轨迹,最快速度发现崩溃缘由并及时解决。ajax

3
崩溃轨迹定位
卡顿问题一样是透视宝可以准肯定位的,将系统库及C++库解码出来进行准肯定位,让程序员一看卡顿信息就能明白是什么问题致使的错误,并迅速进行解决。
3.Html5监控
手机游戏的更新频率是很是高的,基本上能够作到每周迭代,而官方应用市场严格的审核流程大大限制了游戏的发布频率,因而免更新、易维护的HTML5在手机游戏中获得了普遍应用,而透视宝可以经过对H5性能数据的分析,可以准确发现网页加载时存在的性能问题。
好比游戏首页面耗时就是很是重要的一项性能指标,页面耗时指的是开始加载这个网页到整个页面load完成即渲染完成的时间,其中还包括加载连接的性能数据,如重定向时间,DNS解析时间,TCP连接时间,request请求时间,response响应时间,dom节点解析时间,page渲染时间等,均可以经过透视宝进行监控。网络

4
性能数据图框架

5
资源时序图
同时透视宝还能获取资源时序数据,生成资源时序图。由于每一个H5网页都是由不少个资源组成的,包括.js、.png、.css、.script等等,这些资源的加载是按顺序进行的,页面加载时间就是这些资源加载时间所组成的,而透视宝将这些资源的加载耗时统计出来就造成了资源时序数据。
透视宝SDK还能找到JS错误,经过JS错误获取的是堆栈信息和错误类型;拿到页面的ajax请求,包括响应时间,ajax下载时间,callback回调时间。
4.性能监控
除了上面提到的网络、Web性能监控,透视宝还能进行深刻到代码层的应用性能监控。以iOS为例,iOS平台的原生开发语言是Objective-C,具备动态运行时的特色,Cocoa框架提供了不少动态运行时接口能够对Objective-C接口进行hook,也就是方法拦截。经过方法拦截,就能够获取到方法的参数值,方法执行开始、结束的时间戳,就能够得出方法执行的性能数据。 dom

结语:
针对Unity适应多个平台的特性,透视宝SDK选择了对每一个平台分别监控的方法,充分利用Unity的扩展性,绕过Unity的源码(由于Unity不是开源的),实现对游戏性能的深刻监控。随着透视宝SDK的不断进步,将来会有更加完善的手机游戏性能解决方案提供给你们,也但愿广大游戏行业用户能踊跃反馈您的需求,让云智慧与您共同进步。编辑器

相关文章
相关标签/搜索