Cocos2d-x是一个著名的开源移动端游戏框架,可以在iOS,Android,黑莓Blackberry等操作系统中建立和运行Cocos2d-x游戏,国内的《捕鱼达人》、《三国塔防-蜀传》、《我叫MT》和海外的《愤怒的小鸟大作战》、《BADLAND迷失之地》等手游都是用Cocos2d-x开发的。
由于运行环境、代码兼容性等问题,Cocos2d-x手游一样会出现崩溃、卡顿、加载缓慢、资源消耗过多等问题,因此游戏运营商需要准确了解用户环境里的游戏性能,而通过埋点获得的日志数据并不能完整反映网络和服务端问题造成的故障,所以游戏开发商需要能够覆盖游戏运行全部技术栈和所有端到端环节的应用性能管理工具来准确发现、定位和解决问题。今天我们就来看看云智慧应用性能产品——透视宝是如何实现Cocos2d-x手机游戏的性能监控。
Cocos2d-x的跨平台原理
为了充分发挥硬件性能,手机游戏通常使用Native App开发模式,这就造成开发商要为iOS 和Android平台用户开发不同的应用,无论是产品迭代还是运行维护都非常麻烦。Cocos2d-x在iOS,Android等移动平台之上,封装了一层C++接口,从而屏蔽了平台的差异性,通过平台宏来控制使用哪个平台的代码,向开发者提供C++接口调用。
这些接口主要包括UI、事件和网络,封装UI主要是使用OpenGL ES的接口来写UI,封装事件和网络,均是使用C++接口对原生接口进行一层封装。因此Cocos2d-x的跨平台原理就是:APP->调用公共C++接口->调用平台实现
透视宝对Cocos2d-x游戏监控特点
综上所述,Cocos2d-x是在原生接口之上封装了一层C++接口,而透视宝SDK支持对Cocos2d-x原生的网络请求监控,也支持Cocos2d-x常用的底层libcurl网络库的监控,此外还支持H5监控,Socket监控、基本运营信息获取、地域分析、组合分析、劫持分析、移动拓扑分析以及崩溃信息收集。
网络监控
网络是造成手机网游卡顿的最重要原因,国内三大移动运营商之间的网络互联互通一直没有得到真正解决,同时各种宽带接入商的网络质量参差不齐都会影响游戏的运营,特别是即时类游戏玩家的体验。透视宝支持对原生的网络库(NSURLSession、NSURLConnection等)和libcurl库的网络请求(http,https)监控,监控指标包括响应时间趋势、吞吐率趋势、HTTP错误率趋势、网络失败率、请求错误率对比、错误追踪等,同时能够以域名为维度统计所有HTTP请求的信息,包括请求名称、平均响应时间、吞吐率、HTTP错误率、网络失败率、请求次数等。
由于libcurl是用C写的,不能使用hook机制,也没有字节码可以改写,所以透视宝采取直接在libcurl库源码中人工埋点,再重新打包成libcurl.a库文件的方式实现监控,不用改变头文件的引用方式,不用调用额外的接口,更不用写额外的代码等,同时iOS和Android两个平台可以互用。如果开发者对替换原生libcurl.a库的方式有疑虑,我们还提供了自动埋点的方式来收集libcurl网络库的网络请求性能数据。
Socket监控
手游客户端与服务端通讯通常会使用Socket端口,因此Socket监控也是必不可少的。透视宝能够监控一段时间内App与服务器通信时,建立连接响应最慢的N个主机(Server端)、向Server端写或读时响应最慢的N个主机以及异常数最多N个主机;监控连接的主机IP、端口、开始时间及连接耗时,标记出有异常的Socket;提供单次连接的详细分析,包括设备的详细参数、连接耗时、DNS解析耗时、向Server端写或读时的耗时及字节变化趋势、异常堆栈等;分析一段时间内App与服务器通信时发生异常的情况,包括异常用户数、异常次数、使用用户数、发生异常的App版本及异常数、异常变化趋势。
H5页面性能监控
免更新、易维护的HTML5页面被广泛应用于手机游戏通告、活动页面、支付页面等场景,而透视宝能够通过对H5性能数据的分析,找出加载网页时存在的问题。透视宝的HTML5监控主要包括页面加载性能分析和Ajax性能分析,分别从响应时间和JS/Ajax错误的维度对页面的加载进行性能分析。
运营分析
在竞争激烈的手游市场,优秀的线上游戏运营是一款游戏从同质化严重的竞品中脱颖而出的前提条件,然后传统运营工具无法提供对用户端性能体验的准确监控和分析,当接到用户反馈的游戏卡顿等问题时只能按照预设套路去解答,并不能及时解决用户的问题。透视宝从用户体验的角度提供对手游应用的运营分析,包括接入方式分析、运营商分析、系统版本分析、应用版本分析、设备分析、地域分析、崩溃分析、劫持分析等,同时能够将地域、运营商、接入方式进行组合,多维度深入分析cocos应用性能。
此外,透视宝提供移动应用拓扑图,可以帮助运维和运营人员实时掌握Cocos2d-x游戏的整体运行状态,包括应用正在使用的自身服务和外部服务,通过拓扑图可以查看应用整体的HTTP错误率和网络失败率,以及每个服务的HTTP错误率、网络失败率和响应时间,在玩家投诉之前准确发现、定位和处理网络、服务故障,确保用户反馈得到真正高效的解决。