基於Cocos2d-x的手機遊戲性能監控
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錯誤率、網路失敗率和響應時間,在玩家投訴之前準確發現、定位和處理網路、服務故障,確保用戶反饋得到真正高效的解決。
推薦閱讀:
※從零開始手敲次世代遊戲引擎(二十一)
※GameJam48小時遊戲SEDs開發總結
※幀同步技術目標總結
※腦洞之奧丁晶石與北歐神話的聯繫(二)
TAG:游戏开发 |