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


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的帮助。


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


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


性能数据图


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

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

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

  1. Unity手机游戏发热发烫优化指南与技巧

    Unity手机游戏发热发烫优化指南与技巧 很多小伙伴做完游戏后,发布到Android,运行,游戏很流畅,也不卡顿,但是跑一会游戏,手机就发热,发烫.客户提出需求,能否让它不发烫? 本文从以下3方面来分 ...

  2. Unity手机游戏开发:从搭建到发布上线全流程实战

    前言: 技术书籍是学习技术知识的重要资源之一.读技术书可以帮助我们学习新技能和知识,技术书籍提供了可靠的.全面的信息,帮助我们快速学习新技能和知识.同时技术书籍有助于保持你的竞争力,因为它们提供了最新 ...

  3. Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎

    编辑本段简介 Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎,使用 C++ 开发,基于OpenGL ES,基于Cocos2d-iphone,支持 WOPhone, iOS 4.1, And ...

  4. 手机游戏引擎 Cocos2d-x

    Cocos2D-X是全球知名的开源跨平台手机游戏引擎,易学易用,目前已经支持iOS.Android.Windows8.Mac OSX.Linux.BlackBerry.Windows Phone等平台 ...

  5. Cocos2d手机游戏引擎介绍

    Cocos2d 是一个 Python 用来开发2D 游戏和其他图形化交互应用的框架. 主要特性 界面流程控制: 非常容易地管理不同场景(scenes)之间的流程控制 精灵: 快速而方便的精灵 动作: ...

  6. unity 手机游戏优化(场景篇)

    场景基本上占游戏性能一大部分(内存和渲染)所以优化按优先级,先优化场景 场景加载(资源复用率) 加载都是基于Assetbundle情况下 1.动态加载,场景里面所有东西都保存预设,把场景数据保存配置表 ...

  7. JBox2D手机游戏引擎介绍(附jbox2d官网网址)

    Box2d是一个很出名的开源物理引擎2d物理引擎.Box2d有C++,flash和Java等版本. Box2d论坛网址: http://box2d.org/forum/viewforum.php?f= ...

  8. 2013手机游戏引擎趋势:竞争升级

    2月26日,全球最大的手机浏览器厂商Opera欧朋在西班牙举办的2013世界移动通讯大会(MWC)发布了一款游戏处理引擎产品--欧朋 Sphinx.这款全球首款基于硬件渲染的HTML5游戏处理引擎的诞 ...

  9. 游戏引擎unity3d_安装Unity 3D游戏引擎

    游戏引擎unity3d Game development requires the use of an IDE along with one or two programming language(s ...

最新文章

  1. php代码审计之MetInfo5.3盲注
  2. 多线程批量ping服务器
  3. linux命令:sosreport
  4. C++11库中 steady_clock , system_clock和high_resolution_clock的区别
  5. java对象模型 指令_深入理解多线程(二)—— Java的对象模型
  6. Tomcat学习笔记(一)
  7. 内向的人在面试时如何表现自己?
  8. 人人可懂的机器学习入门要点和阅读路径:学什么?怎样学?
  9. regex 正则表达式零宽度正预测先行断言 and 零宽度正回顾后发断言
  10. 图像处理之opencv---mat、cvmat、IplImage之间的转换
  11. 亚马逊平板刷机Linux系统,亚马逊平板刷机步骤盘点【图解】
  12. 视觉算法工程师百度百科,视觉算法工程师是什么
  13. GitHub 上100个优质前端项目整理,非常全面!
  14. java为PDF盖(签)电子签章--位置定位
  15. 大数据Kudu使用方法
  16. 华硕笔记本升级固态SSD过程
  17. 打开txt文档显示乱码
  18. 廖雪峰python3高阶函数部分理解
  19. 磁带机相关总结(转载)
  20. 如何在win7系统中屏蔽2345这个流氓

热门文章

  1. 动视服务器状态,《使命召唤12》A.B.C服务器错误不用怕 动视给你支招
  2. php中d是什么文件,后缀php是什么文件
  3. android 实现论坛界面,android界面开发之主流UI布局范例
  4. gitleb 登陆方式_gitlab连接方式
  5. 虚拟DOM - React的骨干
  6. HTTP请求中的请求字段
  7. matlab中的controller,MatlabSimulinkPIDController(2DOF)..docx
  8. oppo手机android是多,OPPO手机卡屏?教你三招轻松解决卡顿问题,大部分安卓都适用...
  9. linux怎样删除定时任务,Linux(CentOS)使用定时任务删除Tomcat日志文件
  10. c# redis sqlserver_【成都】管家婆云科技 | JAVA、.NET、C#等岗位正在等你!