移動(dòng)游戲技術(shù)優(yōu)化的解決方案簡(jiǎn)述
原創(chuàng)騰訊手游技術(shù)總監(jiān) 張丹
手游經(jīng)過(guò)多年來(lái)的高速發(fā)展,如今已經(jīng)進(jìn)入白熱化的紅海時(shí)代,僅憑一個(gè)好的創(chuàng)意就能大獲成功的產(chǎn)品已經(jīng)越來(lái)越少,必須經(jīng)過(guò)不斷精細(xì)化的打磨,追求極致的用戶體驗(yàn),才能做出S級(jí)大作。
下面,我試著講述如何從技術(shù)角度追求手游(特別是多人對(duì)戰(zhàn)手游)用戶體驗(yàn)提升的解決方案。
我們主要從用戶的游戲行為路徑去提升用戶體驗(yàn):
一、下載
移動(dòng)游戲下載包括兩種:
1.應(yīng)用市場(chǎng)或者官網(wǎng)整包下載。
2.游戲內(nèi)自更新升級(jí)。
下載簡(jiǎn)單示意圖:
下載主要失敗原因主要分為客戶端原因,網(wǎng)絡(luò)原因,CDN原因:
客戶端問(wèn)題的主要原因:
1.有網(wǎng)絡(luò)但下載不了,例如有WiFi但連不上網(wǎng)或有信號(hào)但網(wǎng)絡(luò)擁塞。
解決方案:檢測(cè)網(wǎng)絡(luò)連通性,提醒用戶檢查系統(tǒng)設(shè)置等。
2.磁盤(pán)空間不夠。
解決方案:下載前先檢查磁盤(pán)空間是否足夠,提醒用戶清理。
3.創(chuàng)建文件異常/寫(xiě)入文件異常。
解決方案:此情況可能是存儲(chǔ)卡IO異常,一般先進(jìn)行判斷剩余磁盤(pán)空間和進(jìn)行fwrite幾次重試即可恢復(fù)。
網(wǎng)絡(luò)問(wèn)題的主要原因:
1.整包或部分文件被劫持或者Cache。
解決方案:提供備份BGP下載地址。
2.移動(dòng)網(wǎng)絡(luò)下,數(shù)據(jù)文件被運(yùn)營(yíng)商網(wǎng)關(guān)截?cái)唷?/p>
解決方案:分片下載。
3.跨網(wǎng)下載很慢或者失敗,由于下載過(guò)程中網(wǎng)絡(luò)發(fā)生切換(移動(dòng)網(wǎng)絡(luò)切換WiFi或者WiFi切換另一個(gè)運(yùn)營(yíng)商WiFi)導(dǎo)致。
解決方案:重新解析并斷點(diǎn)重連。
CDN問(wèn)題主要原因:
CDN的問(wèn)題主要是和各個(gè)CDN廠商相關(guān),比如有些CDN廠商的CDN池分兩種:小資源CDN池和大資源CDN池。
這里一定要注意大小資源包的分配方式。
另外,要了解每一個(gè)步驟用戶流失的情況是怎么樣的,可能在哪些方面有問(wèn)題:是否產(chǎn)品的曝光標(biāo)題不夠吸引人?是否產(chǎn)品詳情頁(yè)不能打動(dòng)用戶?是否游戲啟動(dòng)后,新手引導(dǎo)設(shè)計(jì)不合理導(dǎo)致用戶沒(méi)有注冊(cè)?……根據(jù)每步的數(shù)據(jù),針對(duì)性的對(duì)每個(gè)環(huán)節(jié)進(jìn)行優(yōu)化?! ?/p>
二、登錄
DNS解析:
DNS解析是登錄的第一步,也是使用域名業(yè)務(wù)最常遇到的問(wèn)題,這里介紹移動(dòng)網(wǎng)絡(luò)特有的幾個(gè)DNS的問(wèn)題:
1.移動(dòng)網(wǎng)絡(luò)LocalDNS劫持。
2.移動(dòng)網(wǎng)絡(luò)DNS解析IP非本運(yùn)營(yíng)商IP。
原因一:運(yùn)營(yíng)商租用第三方出口。
原因二(非常少量):運(yùn)營(yíng)商LDNS故障。
3.移動(dòng)4G網(wǎng)絡(luò)DNS解析很慢。
這是4G網(wǎng)絡(luò)的一個(gè)特有問(wèn)題。
移動(dòng)4G用戶DNS先去查詢4A地址(IPV6地址),大部分業(yè)務(wù)現(xiàn)在都沒(méi)有配置4A地址,所以正常的應(yīng)該返回4A地址為空,然后就會(huì)去查詢A地址,獲得正常的IPV4地址。蘋(píng)果官網(wǎng)流程如下:
最終,我們得出結(jié)論:
另外,特別提示:支持4A查詢的移動(dòng)4G網(wǎng)絡(luò),也只有手機(jī)支持查詢4A地址,才會(huì)去查詢4A。比如小米大部分手機(jī)都不會(huì)去查詢4A地址,華為去年以來(lái)的幾款手機(jī)都會(huì)去查詢4A地址。
解決方案:httpdns+LDNS結(jié)合的方式。
網(wǎng)絡(luò)連接:
網(wǎng)絡(luò)連接主要有以下幾個(gè)問(wèn)題:
1.運(yùn)營(yíng)商之間出口帶寬小,網(wǎng)絡(luò)不穩(wěn)定,如業(yè)務(wù)部署的服務(wù)器和用戶不在一個(gè)運(yùn)營(yíng)商,會(huì)導(dǎo)致連接超時(shí)或丟包嚴(yán)重。
這個(gè)是最基本的問(wèn)題,大家應(yīng)該都有解決方案,一般有2種:
(1)分運(yùn)營(yíng)商接入。
(2)使用BGP接入。
對(duì)于解決中國(guó)這么復(fù)雜的運(yùn)營(yíng)商網(wǎng)絡(luò),BGP是一個(gè)不錯(cuò)的解決方案,但BGP資源一般都比較貴。
2.手游用戶由于出國(guó)游玩或者居住國(guó)外,經(jīng)常會(huì)從國(guó)外連入我們國(guó)內(nèi)的服務(wù)器,由于中國(guó)對(duì)國(guó)際出口的管制,導(dǎo)致網(wǎng)絡(luò)質(zhì)量會(huì)非常差。
解決方案:搭建國(guó)外接入點(diǎn)。
這些問(wèn)題相信大家都知道,這里不再細(xì)說(shuō)。
除了這些基礎(chǔ)問(wèn)題外,我們來(lái)看看一個(gè)典型的手游登錄流程:
登錄成功率低可能有很多原因,我們要知道每個(gè)環(huán)節(jié)的成功率和流失率是怎么樣的才能細(xì)致的去做優(yōu)化,比如用戶是不是檢查更新失敗,是不是我們的更新服務(wù)器出了問(wèn)題?用戶是不是更新下載失敗(前面已講過(guò)原因和方法)?是不是登錄sdk出了問(wèn)題?是不是大區(qū)列表拉取失敗?上次登錄服和推薦服是否錯(cuò)誤?最后才是連接游戲服務(wù)器失敗。
三、游戲內(nèi)體驗(yàn)
Crash問(wèn)題(閃退):
手游Crash對(duì)用戶帶來(lái)的體驗(yàn)傷害,大家應(yīng)該都已經(jīng)非常清楚了。Crash嚴(yán)重會(huì)導(dǎo)致大量的用戶流失,所以對(duì)手游進(jìn)行Crash監(jiān)控和優(yōu)化非常重要!
關(guān)于Crash的監(jiān)控和分析,騰訊有一款bugly sdk組件,能夠很準(zhǔn)確的抓取Crash的堆棧信息并進(jìn)行專業(yè)的統(tǒng)計(jì)分析,大家可以試用一下。
其實(shí)還有很多Crash都是比較初級(jí)的編碼規(guī)范沒(méi)有執(zhí)行好,例如空指針導(dǎo)致Crash,越界訪問(wèn),調(diào)用空方法,地址無(wú)效,指針未初始化等等,解決起來(lái)也相對(duì)比較簡(jiǎn)單。
一款手游要想Crash原因不造成用戶流失,個(gè)人覺(jué)得Crash率應(yīng)該控制在3%以下,如果要做S級(jí)精品手機(jī)游戲,Crash率要控制在1%以內(nèi)最好。
解決了Crash的問(wèn)題,我們來(lái)看看游戲?qū)謺r(shí)(特別是有pvp對(duì)戰(zhàn)的游戲)體驗(yàn)的問(wèn)題:
FPS:
一般認(rèn)為,平均FPS>25幀是體驗(yàn)較好的情況,平均15<FPS<25幀是體驗(yàn)一般的情況,平均FPS<15幀是體驗(yàn)較差的情況。如果一局當(dāng)中FPS突然下降10幀以上,我們認(rèn)為是一次卡頓,卡頓次數(shù)多了用戶玩的體驗(yàn)就非常差了。
延時(shí):
網(wǎng)絡(luò)低延時(shí)是pvp游戲的核心訴求!
在2G情況下,80%以上的延時(shí)是在運(yùn)營(yíng)商核心網(wǎng)部分,這里確實(shí)沒(méi)有什么辦法優(yōu)化;3G大概60%的延時(shí)是在運(yùn)營(yíng)商接入網(wǎng)部分,而4G大概只有40%左右的延時(shí)在核心網(wǎng)部分(取決于游戲服務(wù)器的部署)。
而移動(dòng)手機(jī)網(wǎng)絡(luò)相對(duì)固定網(wǎng)絡(luò)來(lái)說(shuō),有著明顯的特點(diǎn):
1.網(wǎng)絡(luò)切換
2.網(wǎng)絡(luò)中斷
3.網(wǎng)絡(luò)擁塞
我們分為兩個(gè)層面去解決,一個(gè)層面是降低運(yùn)營(yíng)商接入網(wǎng)延時(shí),一個(gè)是降低公網(wǎng)延時(shí)。
運(yùn)營(yíng)商接入網(wǎng)部分:
主要是和運(yùn)營(yíng)商合作核心網(wǎng)內(nèi)用戶QOS保障。
公網(wǎng)部分:
主要是通過(guò)搭建加速代理的方式進(jìn)行加速。
卡頓率:
我們把FPS降低10幀以上,網(wǎng)絡(luò)延時(shí)突然增加100ms以上定義為卡頓,這兩種情況都會(huì)導(dǎo)致用戶口中的“卡”,對(duì)游戲體驗(yàn)影響嚴(yán)重。
拖拽率:
拖拽的大概原因就是客戶端本地會(huì)進(jìn)行一定的慣性計(jì)算,當(dāng)服務(wù)器負(fù)載過(guò)高,或者網(wǎng)絡(luò)延遲嚴(yán)重的情況下,會(huì)導(dǎo)致客戶端收到服務(wù)器的數(shù)據(jù)后對(duì)客戶端的數(shù)據(jù)進(jìn)行校正,就會(huì)出現(xiàn)拖拽的情況。
掉線率:
除了關(guān)注以上這些數(shù)據(jù)外,我們還要關(guān)注一些基礎(chǔ)數(shù)據(jù),例如:
手機(jī)CPU使用率,內(nèi)存使用率,流量等,這些也對(duì)游戲體驗(yàn)有不同的影響。
四、支付
目前手游主要支付包括兩個(gè)平臺(tái):蘋(píng)果支付和安卓支付。
蘋(píng)果支付統(tǒng)一走蘋(píng)果IAP,安卓由于Google Play未進(jìn)入中國(guó),大多使用第三方渠道sdk進(jìn)行支付。
支付的典型流程為:
iOS支付,黑卡,惡意退款,匯率差三大iOS黑產(chǎn)業(yè)鏈,給手游的iOS收入帶來(lái)絕大部分損失。
黑卡:與iTunes賬戶綁定的非法信用卡,這些賬戶或?yàn)锳PP余額賬戶,或?yàn)橥钢з~戶,來(lái)源遍布美國(guó)、日本、加拿大等許多國(guó)家,倒賣者背后是破解或者盜取他人信用卡的黑客。
惡意退款:就是先IAP付款,然后打電話給蘋(píng)果投訴,要求退款,空手套白狼,網(wǎng)上不時(shí)刷出最新有效的退款理由。
匯率差:利用國(guó)際匯率的大幅波動(dòng),而蘋(píng)果的匯率更新較慢的特點(diǎn),像盧布,日元大跌的時(shí)候,淘寶上賣家利用匯率差打折售賣游戲幣,賺取差價(jià),給游戲iOS收入造成巨大損失。
解決方案:蘋(píng)果這邊也在不斷的優(yōu)化處理方法,我們也根據(jù)用戶的一些游戲行為去實(shí)時(shí)分析識(shí)別這些黑卡和惡意用戶,進(jìn)行封號(hào)等進(jìn)一步打擊。
五、輿情
熱詞分析:
從論壇、貼吧、應(yīng)用市場(chǎng)、公眾號(hào)、微博……等抓取游戲相關(guān)熱詞和關(guān)鍵詞。
通過(guò)這些熱詞的情感分析,到底是正面,還是中性,還是負(fù)面,方便我們快速找到游戲體驗(yàn)的問(wèn)題。
以上只是解決方案的一個(gè)簡(jiǎn)述,想要深入了解移動(dòng)游戲的各種技術(shù)問(wèn)題和解決方案,探索極致的玩家體驗(yàn)提升,歡迎加入騰訊游戲運(yùn)營(yíng)部!
這里特別衷心感謝一起為手游技術(shù)不斷探索和優(yōu)化的兄弟姐妹們,感謝你們精益求精的辛苦付出和不斷優(yōu)化!


























 
 
 





 
 
 
 