我們承諾不定期分享聯盟客戶端性能與可靠性更新工作的進展。

本文是該系列的第七篇文章。( 這裏是第一篇、第二篇、第三篇、第四篇、第五篇和第六篇的鏈接。)

概要:2021年第一季度,我們開啓了升級Chromium Embedded Framework(CEF)的道路。目前仍有部分工作有待完成,預計在第二季度末可以完成新版CEF,爲玩家帶來更多便利。

升級Chromium Embedded Framework(CEF)

上次我們提到過,近期的重大項目之一,是客戶端Chromium Embedded Framework(CEF),也就是聯盟客戶端架構的核心網絡瀏覽器的版本更新。坦白而言,上次我們低估了這項工作的重要性。無論從直接受益,還是爲其他優化賦能的角度來看,CEF升級都是影響力最大的一項客戶端優化。

CEF上次升級是在2019年11月(版本74),而撰寫本文時,最新的版本是CEF 90。CEF升級(目標是CEF 90)將帶來以下好處:

● 減少客戶端崩潰

○ 過時的CEF版本在部分硬件上表現不佳。早期數據表明,大部分崩潰都是由CEF版本過時造成的。我們堅信升級後,玩家遭遇的崩潰次數會降低。

● 兼容性優化

○ CEF團隊在大量硬件組合上對新版本進行了詳細測試。聯盟客戶端可以免費享受這些測試的成果。

● WebSocket性能加速

○ 聯盟客戶端包含兩大部分:“前端”部分與用戶進行視覺交互,“後臺”部分規模小得多,負責後臺運行、從服務器調取數據和追蹤客戶端的所有信息,以便向用戶呈現正確的最終結果。後臺的工作舉例:

■ “這位玩家在設置中選擇了遊戲中關閉客戶端,現在已經進入遊戲了,關閉前端,遊戲結束後再打開。”

■ “這位玩家剛剛打開了藏品標籤。裏面應該都有哪些英雄?”

○ 簡而言之,WebSocket就是前端與後臺連接的管道。拓寬管道,減少轉彎和打結的地方,數據傳輸就能更多更快,這正是新版本的CEF可以爲我們帶來的好處。尤其是對使用較早硬件的玩家,WebSocket的優化對改善大批數據傳輸(如遊戲結束、英雄選擇)的效果更爲明顯。與我們的CEF版本相比,優化幅度可達到:

■ Windows速度加快4.1倍

■ Mac速度加快7.8倍

● 動畫性能優化

○ 具體說來,是根據數據生成的動畫效果,如遊戲結束頁面的經驗條(還有許多類似的地方)。這些動畫從技術上來說是一種內存泄漏,因此長進程中的客戶端整體性能也會有所提升。

● FPS提升——延遲降低,點擊響應速度加快

● 開發難度更低(就是更快、更可靠)

○ 更多避免較長遊戲進程中發生內存泄漏的方法

○ 一種新的衡量標準,更好地提供關於客戶端在屏幕上呈現信息所需時間的數據

● CPU使用更智能

○ 在客戶端當前CEF版本(74)中,一種叫做“網絡服務(Network Service)”的功能首次登場,將所有網絡請求通過一條線路輸入CPU,這樣其他線路就可以完成更多任務,比如加載內容等。由於這個功能在我們上次更新CEF時,纔剛剛推出,來不及進行測試,因此並沒有啓用。下一次升級時,就可以籌劃在聯盟中支持該功能了。

● JavaScript性能優化

○ 新的CEF版本對處理JavaScript的v8引擎進行了大幅優化。例如兼容性優化,只需升級版本就可獲取。

上個季度我們的工作重點是升級現有網絡組件(比如視頻嵌入、彈窗提醒等等網站技術),使其版本與新CEF版本兼容,確保升級CEF本身不會引發任何問題。我們希望這些組件的升級能夠實現無縫體驗,所以大家應該沒注意到在過去幾個補丁中逐步推出的升級。這些升級涉及到大量代碼,因此偶爾也會出現測試中漏掉的小問題,但都立刻處理掉了。

完成這些組件升級最多還需要幾周時間,隨後我們就可以開始升級CEF本身,並期望在2021年7月末完成。

社交面板

上次我們提到的另一個重點區域是社交面板。我們的長期計劃是將社交面板從ComponentJS(舊架構)遷移到Ember。目前我們的精力還集中在CEF升級上,因此這項工作暫時擱置,但我們已經完成了Ember遷移所需的部分早期步驟,CEF升級完成後就會繼續。

以下是工作重點轉移到CEF升級前,我們解決的一些社交面板的主要問題:

1. 社交面板無法連接

2. 好友列表無法加載,狀態顯示不正確,好友數據問題

3. 玩家在普通遊戲中時,懸浮卡片不顯示排位信息

4. 啓動時在斷開連接、憂傷的魄羅和好友列表加載之間亂跳

內存佔用和JavaScript錯誤情況更新

我們也在繼續關注同一會話內進行的遊戲的內存佔用情況。我們很高興看到,從補丁10.25之後,遊戲的平均內存佔用下降了約30MB,整體內存不足崩潰數量也在持續下降。

最後,我們想說說JavaScript錯誤。上一篇文章中,我們提供的拳頭各地區玩家遇到的JS錯誤數據有誤。10.25版本中,這個數字達到了驚人的2.65億。好在玩家實際遭遇的錯誤數量並沒有改變,只是我們測量的手段變了,從而進一步意識到了這個問題的緊迫性。此後,我們的每個補丁平均降低了1.4億次錯誤,並有信心可以繼續減少錯誤數量。

目前的計劃

儘管我們近期的首要重點是CEF升級,但也在規劃2021年的其他項目。

● 上文中提到的將社交面板遷移到Ember

● 重新審視比賽結束(EOG)頁面。去年底和今年初,我們處理了比賽結束的幾個主要問題,但仍存在有待改進的地方。許多玩家仍然反映存在返回客戶端時間過長和/或比賽結束頁面死機的問題。項目開始後,第一步是摸清客戶端與遊戲內引擎和服務的所有互動,隨後考慮如何優化體驗。EOG調用了許多客戶端團隊之外的服務,我們需要與其他團隊配合,一同進行優化。

● 進入英雄選擇頁面延遲。這個問題在部分地區報告頻率很高,說明玩家的網絡連接情況是很重要的因素(不同地區的網絡基礎設施情況各異)。雖然我們對網絡問題可做的不多,但仍會與競技團隊合作,儘量在客戶端內確保玩家在合理的時間內進入英雄選擇頁面。

● 長會話中的客戶端穩定性。去年年底我們發現了內存泄漏,導致客戶端隨着玩家打開多個遊戲或客戶端長時間空閒時,佔用內存越來越多的緊急問題。經過更全面的跟進,我們將尋求更直觀的方法,讓玩家得以保持剛剛登錄客戶端時的體驗,無論他們已經玩了多少局遊戲或是客戶端開啓了多長時間。這部分修復工作可能還會不斷強化,解決更多難對付的內存泄漏問題,但我們還需要對照其他短期解決方案進行衡量。

這次要說的就是這些了!當然,我們工作的一大動力,就是來自各種渠道的反饋,包括定期玩家調查。歡迎大家繼續反映需要改進的客戶端問題,以及對您的體驗影響最大的改進!

相關文章