GDC2023丨貫通卡點:開發工具“行雲”成為騰訊遊戲開發研效提升催化劑


3樓貓 發佈時間:2023-03-28 21:32:54 作者:白廣大 Language

導語:遊戲的研發需要經歷多個環節,從代碼拉取、構建、部署分發到故障定位等;這其中,每個環節都有著不同的效率卡點,特別是當研發團隊和遊戲客戶端包體大到一定規模後,問題尤為突出。
探究遊戲研發效率卡點背後的原因,這裡面既有因為海量資源,在代碼倉庫、構建層面帶來的效率問題,也有因為人員過多、團隊分散辦公所引發的流程上的效率問題;
面對各種損耗夾雜在一起,對遊戲迭代效率的影響,在今年三月於美國舊金山舉行的GDC2023會議上,騰訊遊戲CROS高級SRE經理RuiSu分享了騰訊遊戲提升遊戲研發效率的想法與思路,並介紹了行雲產品如何成為騰訊遊戲研效提升的催化劑。

兩步走:以場景化方式來提供更便捷的提效能力

在行雲誕生之初,騰訊遊戲CROS分兩步來探索遊戲研發提效的具體路徑。
首先,針對初期為解決不同環節的效率問題,分別由團隊內不同的部門,分別開發了多個不同的研效工具,意在有效解決某個垂直領域的效率問題,但是這也帶來了三個方面新的問題,即:
1、工具之間的數據和權限沒有實現打通;
2、為完成一件事情可能需要使用多個工具,需要在多個工具之間頻繁切換,使用成本高;
3、工具未能發揮最佳性能,軟件端和硬件端的同學未能實現有效協同,無法通過軟硬協同方式提升效率;
因此,在第二步,團隊進一步建設能力,以場景化的方式來提供更便捷的提效能力,形成了統一的產品——行雲。
相比傳統的思路,行雲的提效解決方案優勢在於通過cloudflow提供的流程引擎,打通了不同工具間的權限以及數據,並且可根據不同研發角色的用戶場景編排成為常用工作流,通過不同的入口提供給終端用戶;同時,提供給用戶使用的方式包含UE插件,聊天機器人,web端工具、API等多種方式。
通過一年時間的發展,行雲已積累了幾十個可以在studio間通用的工作流。而對於新出現工具的使用方式,也能快速使用平臺能力開發成新的工具集提供給用戶。

重塑工作流:滿足研發各角色敏捷驗證訴求

在遊戲精品化趨勢下,一個特性的實現可能會涉及到美術、策劃、運營、服務器開發、客戶端開發、PM、測試和運維等近多個角色之間的信息流轉,其中的每一個改動都會對其他人產生影響。
與此同時,當前研發功能的演進主要依賴日構建,一個bug的發現到修復至少需要兩次日構建迭代甚至更長的週期,在這種情況下,依賴日構建版本的傳統驗證工作流程,顯然已經無法滿足各角色敏捷驗證的訴求。
所以,針對各個角色,尤其是沒有開發背景的創意類崗位,更加敏捷的行雲驗證工作流就是打通提效卡點的有力手段。
以策劃數值表的編輯驗證為例,經過持續優化,行雲打通並新開發了包括引擎插件、轉表工具、打包工具、資源包分發、測試環境管理、客戶端任務下發(執行)、客戶端自動裝包、資源包自動加載、信息流機器人等10多個內部系統,實現了一鍵下發資源文件到服務器和指定客戶端的功能。
此外,針對研發人員眾多,版本互相影響的情況,行雲還基於K8S容器技術構建了一套測試環境管理系統,研發人員可以隨時申請一套專屬驗證環境。
經過以上優化,利用行雲,策劃人員可以一鍵實時發佈更新到專屬的測試環境和客戶端,也確保了代碼在集成之前進行充分的功能驗證,有力地提升了研發效率和研發質量。
目前,這套工作流已經支持了包括引擎插件、web頁面、IDE工作臺等多個操作入口,為所有的研發角色提供了快速發佈測試環境及遊戲客戶端的功能。

最佳實踐介紹:構建數百人開發團隊提效的推動力

而關於整個dailybuild流程提高研發效率,縮短週期的情形,以騰訊某大型遊戲的dailybuild流程為例,這個產品開發人員的規模約有數百名;
日常工作中,Perforce代碼倉庫有幾億個文件,數十TB的空間佔用,每天進行幾千次以上的代碼拉取,平均每天卡頓2次;遊戲包體接近10G,客戶端全量構建需要將近幾個小時;同時由於開發人員多,構建失敗率居高不下;
對於這個團隊,提升研效首先要做的是效能度量,將研發所有環節的耗時進行細粒度的拆解。
以構建環節為例,將構建按照UE引擎的執行步驟,拆解為了預處理、代碼編譯、cook、打包等多個環節;每次的構建的子步驟都可以獲取到耗時詳情,方便當構建耗時異常發生時能知道是哪個環節出了問題;並且每個環節還可以進行同比、環比、任意日期的比較等,能夠通過趨勢尋找到問題的所在;加速配置告警功能,用戶可設置自定義的閾值來主動獲取到發生異常的構建實例,例如可配置cook耗時超過45分鐘告警等。
通過對代碼倉庫環節的拆解,可以發現並得到:
  1. 展示代碼拉取的趨勢,獲取代碼拉取每日的最高頻的時間段;
  2. 獲取到高頻時間段具體執行的詳細內容;可針對性的進行分析,看看是否有部分操作可以通過預分發的機制來減少拉取次數
  3. 方便回溯:我們將任何時刻點的P4執行詳情都存入了數據庫,我們可回溯任何一個時刻點的P4同時在運行的連接詳情;
  4. 告警支持:可支持連接數、單用戶連接過長、磁盤IO、CPU等多個條件配置告警;
通過這個系統,為行雲有的放矢的進行策略優化提供了很好的幫助。並基於以上建設的分析能力,主要採取了以下幾個解決卡頓的提效措施:
軟件方面,對用戶數據的存儲和使用情況進行分析:
  1. 將P4的權限管理能力和公司內部的審核系統進行了打通,用戶可使用行雲系統自行申請或修改權限,PM可通過行雲或者企業微信審核,這樣比直接使用p4admin方便很多;極大解決了超大項目PM管理權限的難題,可以更加方便的進行細粒度的權限管控;
  2. 大文件分析,每日在backup服務器自動運行文件分析,並將分析的結果存入DB並在web頁面進行展示,這樣既避免了直接在對服務器的性能影響,也能更加直觀的展示數億文件中佔用磁盤空間最大的top部分,不僅支持展示,而且還可以通過頁面直接設置文件保留的版本個數,PM可直接頁面操作;這樣我們減少了很多非必要的大文件存放,且web的形式也方便了PM的管理門檻;
  3. 預分發,在開發者PC上安裝了我們的定時分發程序,開發可以配置定時從P4拉取構建成功的引擎,一般配置的自動拉取時間在夜裡,這樣很大程度上可以減少日間的拉取壓力;
  4. 硬件升級和EDGE proxy,在辦公區域搭建了若干臺PROXY服務器,可以緩存最常用的幾個版本,使用戶可以實現更近距離的文件拉取而極大提升拉取速度;同時對P4的服務器也進行了雲盤磁盤性能的升級,提升了IO的吞吐能力,且由於雲盤的三副本容災能力,也不用擔心機器故障數據的損失。
對於構建時間長的問題,則通過軟硬協同的方案來提升構建效率,從硬件角度,針對UE和Unity分別定製了不同的機型,最終選取了通過成本、性能、持續供給等多方面綜合進行選型;而軟件方面,則給出了以下改進:
  1. 代碼編譯環節,在多個離團隊距離近的地方,部署雲上藍鯨tbs分佈式編譯的集群,通過共享的硬件資源為開發團隊提高編譯速度,單業務最高調用的雲端算力達1w核以上;
  2. 用度量找短板,通過前面提到的度量環節,也對預處理等一些環節的耗時異常進行了一些優化;
通過這些手段,全量的編譯效率提升了近40%。
不容忽視的是,除了構建時長的問題,開發團隊往往還會遇到了構建成功率過低的問題;比如在示例項目中,由於開發人員多,日構建有很高的編譯失敗率。
經過分析,可以發現,少部分開發人員沒有在開發機本地進行編譯正確性驗證,就將代碼提交到了代碼倉庫,影響了構建成功率。
事實上,對於例如10人以下較小規模的團隊,可以通過一些流程或者政策要求,強制通過流程的形式讓開發人員進行編譯成功後再提交;但是對於大於50人以上的團隊,流程通常不能解決所有的問題,必須通過技術的手段避免遺漏。
為此,行雲cloudflow開發了內部稱為Pre CI的pre-build的功能,讓每位開發在提交代碼倉庫的時候,能夠自動觸發將自己的代碼差量同步到遠端的preci編譯檢查服務器。
面對數百G工程文件和眾多開發人員,preci功能在設計上是存儲和計算分離的,當分配preci編譯機的時候,會根據用戶的不同自動掛載不同的雲盤,這樣能將preci的服務器數量降低到開發人員的15%左右;通過preCI的機制我們就能保障每位開發提交到倉庫的代碼都是通過了編譯檢查的。
最終,這個方案將構建失敗率降低了30%,且目前還在進一步優化中。
最後,當構建完成,版本、引擎的分發也是一個耗時過程。
一般情況下,開發人員,每日早晨都要拉取前一日構建成功的安裝包或者遊戲引擎,進行每日的開發或者功能測試;由於遊戲包體特別大,每天這個過程都要耗費將近半個小時;
所以,行雲開發了製品預分發的能力;用戶可以在行雲的後臺配置靈活的分發策略,具有來看:
  1. 支持多版本包分發:可以將不同的設備劃分為不同的設備組,用於接受不同構建流水線的產物,這樣就可以將功能包安裝到功能測試手機,性能測試的包安裝到性能測試的手機上;
  2. 可配置自動執行的時間段,例如配置22:00-次日8點執行;
  3. 支持多種類型製品的分發,例如手機端的apk/ipa包,PC端的安裝包,開發機上的引擎等等;
目前,該示例項目已經完成了數萬次的預分發,對於遊戲開發效率提升起到了顯著的作用。

積累大量技術產品,目標覆蓋全球研發團隊

值得注意的是,隨著未來越來越多的遊戲在海外研發製作,行雲研效能力支持也能夠覆蓋到海外的研發團隊;
我們將藍盾BK-CI的構建流水線與海外工作室的雲上構建機及office構建機打通,通過Center/Edge的模式解決全球研發的問題,Center模塊負責pipeline的核心邏輯,Edge模塊貼近用戶的構建機,負責編譯加速、製品下載、就近訪問等大流量模塊;

結語

作為騰訊遊戲CROS的技術中臺團隊,行雲在幫助開發團隊提高開發效率的過程中,積累了大量的技術產品,取得了很好的效果,目前,還涉及到較多數字內容製作(DCC)和引擎優化(例如遮擋剔除、全局光照)等方面的能力,以貫通遊戲開發全流程的視角,意在幫助越來越多的遊戲開發者步入行雲流水般的高效軌道。


© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com