https://game.academy.163.com/ssi/app/?referrer=csdn
客戶端是有硬件平臺支撐的APP程序,同時能夠提供本地服務,並且能夠和服務器做遠程交互的一個數據存儲的系統。
客戶端=平臺+程序。我們平時接觸到很多平臺,例如PC、PS4,移動端,如ipad、手機、甚至車載監控。程序應用就更多,衣食住行等各類APP。而我們的遊戲和APP一樣,運行在客戶端上。
遊戲客戶端是怎麼構成的?我們以車來舉例,車子啓動需要發動機加各類零件組成車的架構加開車的人。
手遊和端遊在性能上有很多差異。手機會面臨着硬件性能不足、系統不兼容、網絡不穩定等情況。圍繞這些差異我們做了很多平衡,最主要是性能和品質的平衡。
在性能方面,大家瞭解一下這兩個工具。
PBR:以更準確地模擬現實世界中的光流的方式渲染圖形,金屬具有更強的視覺衝擊表現。
HDR:高動態範圍成像,目的就是要正確地表示真實世界中從太陽光直射到最暗的陰影這樣大的範圍亮度。他的陰影效果會非常真實。
性能優化後,模型可以越做越好看,會更精細。性能更好,遊戲會從單機遊戲更偏向團隊開黑,從場景簡單發展到場景豐富,特技越來越炫酷。所以現在移動遊戲的性能要求越來越高,因此在性能測試方面我們越做越深。
我們最明顯的感知就是「卡到爆、慢死了、燙手」等這些性能呢個問題,逐漸被解決。
這裏引入一個指標,FPS(幀率):圖形處理器處理畫面每秒鐘能夠更新的次數。高的幀率可以得到更流暢、更逼真的動畫。
也就是客戶端的響應時間。響應時間是指客戶發出請求到得到響應的整個過程的時間。響應越快,操作感越好,如果響應時間大於1秒,就會給玩家延遲的感覺
很多時候我們去玩一款遊戲的時候,滑動的時候會發現角色反饋會變慢,其實就是一個響應時間的問題,比如說這兩張圖,控制這個角色的時候,左邊這個畫面沒有及時跟進,會出現重影,右邊這個畫面做了一個優化,告別畫面拖曳和重影干擾。
發燙的問題很嚴重,燙手甚至是爆炸,所以這也是性能測試有一個很關心的點。發燙也和耗電有關,所以我們也會關注耗電量。
首先手機在測試的時候監控手機的溫度,CPU、內存、GPU各種模塊的溫度。如果電池溫度超過50℃,就會有很嚴重的問題,甚至是爆炸。
客戶端性能測試是如何進行的?
一個是性能上限。給大家分享幾個案例。以車舉例,汽車上市前會有碰撞測試,也就是測試性能上限是多少。在遊戲中,我們也需要測試遊戲能承載的性能上限是多少。
另一個就是是否符合標準。例如一個非常簡單的卡牌遊戲,但是耗電量非常高,那麼他就是不符合標準不符合預期的,每款遊戲都有一個判定標準。
上線前,我們測試了很多東西,發現OK,但其實只是看到冰山一角。因爲我們測試數據比較少,測試環境也比較單一。上線後我們就會發現,玩家環境複雜、數據交互量大、操作和系統機型複雜。
因此性能測試必須瞭解一些性能指標。
我們考覈一臺手機,其中一個標準就是CPU。
CPU:運行的程序佔用的CPU資源;機器在某個時間點的運行程序的情況。
另一個就是GPU,這裏我引入一個指標Draw call,Draw Call是在遊戲裏面性能測試的一個常見指標,是CPU調用圖形編程接口,來命令GPU進行渲染的操作,渲染一次就叫一個Draw Call。我們有時候會說你Draw Call太高了,導致遊戲有些卡頓。只要你學懂Draw Call,你就可以和美術程序溝通。
下面講一下面數,屏幕內模型複雜度面數,以及三角網格。一個物體可以用三角的網格來近似模擬,如果你的三角網格、面數越多的話,模擬的物體就越真實。
接下來講講實際操作案例。
在測試過程中,QA會反饋問題給回策劃美術,舉個實例,當我們反饋給美術「幀率低幀率抖動大」時,美術可能會不理解怎麼驗證的這個問題。因此我們會開發一些工具來證明這些問題,例如高速攝像機,幀率採集卡。通過構建一個實時運行的環境,可以得到一些數據。這樣就能夠清晰說明問題。
卡頓的問題怎麼解決?我們遊戲客戶端是引擎+資源+腳本構成的,我們一般也是從這幾個內容去解決,最頂層最核心是引擎,如果能夠把引擎做得更好,渲染能力、兼容性更好,我們性能就會越好。另外可能我們需要減少一些資源,面數、骨骼數、還有紋理尺寸大小、3D渲染等。腳本之外還有硬件,硬件越好性能越好。
當我們反饋給程序「響應慢,靈敏度差」時,程序也會有疑問「爲什麼會有這個問題?」
因此解決方式要提升IO能力,減少數據,控制資源尺寸和提升玩法體驗。
而當QA反饋「這遊戲耗電很厲害,跑一小時就沒電了!」程序可能會問:「能告訴我在哪個地方比較耗電嗎?」
我們開發了這樣一個工具:耗電測試-硬件。通過外接的形式實時監測手機的耗電情況,得到耗電數據。這樣能夠得知什麼情況下耗電量高,從而做出優化。
另外我們還做了一個恆溫箱設計,需要在一個非常乾淨的環境下進行測試。裏面可以控制溫度溼度,手機放裏面,採用自動化腳本可以記錄到手機的運行情況。
耗電怎麼去解決呢?依舊是按照引擎資源腳本去處理,另外還有系統。需要優化部分如圖:
當QA和程序策劃反饋時流量問題時。
QA:我玩的時候有時候感覺很卡,爲什麼會這樣呢?
程序:我們的流量均值已經控制在較低水平了。
策劃:要玩家體驗最好的。
QA:我們分析下各個玩法的流量。
作爲QA,是需要去分析各個玩法的流量情況的,我們玩家肯定是期望一直處於強網絡的情況。
總結一下我們剛剛提到的問題,一個是幀率低,一個是響應慢,一個是耗電快,一個是流量多。這四種情況都有對應的解決方法。