透視寶移動端對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的不斷進步,將來會有更加完善的手機遊戲性能解決方案提供給你們,也但願廣大遊戲行業用戶能踊躍反饋您的需求,讓雲智慧與您共同進步。編輯器

相關文章
相關標籤/搜索