在游戲開發過程中,卡頓問題一直是影響玩家體驗的關鍵因素。UWA GPM 2.0全新推出的「卡頓幀堆棧」功能,專為研發團隊提供精準、高效的卡頓分析方案,能夠直觀呈現游戲運行時的堆棧信息,助力團隊迅速找到性能瓶頸。該功能一經上線,便引發了廣泛關注,許多開發者提出了相關問題。下面,我們一一解答,看看是否有你關心的內容。
「卡頓幀堆棧」功能是否僅支持Unity引擎?
A:在Unity項目中,GPM SDK會自動對所有C#入口函數進行打點。自動打點支持由Unity Native層直接觸發的C#函數,具體包括:
1. 第三方插件或者項目自定義的MonoBehaviour的Update、LateUpdate、OnEnable等函數;
2. 引擎C#入口函數,如URP的DoRenderLoop,UGUI的Canvas.SendWillRenderCanvases等;
3. 引擎觸發的C#回調函數,如MonoBehaviour的OnTriggerEnter、OnCollisionExit等。
主線程中任何的C#耗時都會被包含在以上的函數中;而對于引擎的Native堆棧,如 Camera.Render、Gfx.WaitForPresent等,暫不支持,這部分耗時會被記入「Others」中。
對于非Unity引擎的項目,研發團隊可以通過GPM SDK提供的API手動打點,精確記錄各個關鍵函數的執行耗時,實現相同的卡頓分析能力。
如何僅針對特定玩家采集「卡頓幀堆棧」信息?
A:你可以通過API自定義采集策略,決定是否開啟「卡頓幀堆棧」功能,并根據項目需求靈活設定觸發條件。例如,可以針對特定設備、特定用戶群或特定場景動態啟用數據采集,確保數據收集精準有效。
「卡頓幀堆棧」支持Lua代碼的分析嗎,還是僅限C#?
A:自動打點是支持C#的,Lua里面需要項目組自己調用GPM 2.0的API進行打點。可以參考SDK集成文檔中的API “GpmSample.Push() / Pop()” 來進行操作。經過打點,無論是Lua、C++或者其他語言,都是可以支持的。
啟用「卡頓幀堆棧」功能是否會影響游戲性能?
A:幾乎不會產生額外性能開銷。
原理:
打點API在創建GpmSample對象時,僅調用一次Native函數傳遞函數名字符串,在后續的Begin/End調用時,只需傳遞一個地址參數,開銷極小;
Unity中的自動打點采用了Native Hook的機制,同樣具備極低的性能損耗。
驗證:
UWA進行了詳細的性能測試,對比了開啟與關閉該功能時CPU耗時、利用率的變化,測試結果顯示,該功能對游戲整體性能的影響可以忽略不計。具體的測試案例如下。
分別在正常場景(滿幀)和壓力場景(低幀)的環境下,進行1600次自動/API打點調用的測試,統計循環完成的耗時。
API 測試代碼如下,其中 gpmApiSample 為 GpmSample 類型。
int count = 0;
for (int i = 0; i < 1600;i++)
gpmApiSample.Push();
count++;
gpmApiSample.Pop();
自動打點測試,在一個 Prefab 上掛 1600 個實現了 OnEnable 函數的 Monobehaviour 組件。測試時統計其 SetActive(true) 的耗時。
正常場景下,平均每次打點調用,耗時在0.5~2微秒(千次調用約0.5~2ms);
壓力場景下,平均每次打點調用,耗時最高約4微秒(千次調用約4ms)。
以下是小米12上的測試數據。
正常場景下,單次調用增量,API調用均值<1微秒;自動打點均值<1微秒。
壓力場景下,單次調用增量,API調用均值<1微秒;自動打點均值<2微秒。
從實際測試結果看,兩類打點方式造成的額外開銷也在同一個數量級。當然由于每款游戲都各不相同,開銷也會有差異。
而在網絡層面,則確實會帶來一些網絡傳輸量方面的開銷。目前從我們接入的Case看下來,大約額外需要10KB/分鐘的上行流量。但如果某一時刻的代碼堆棧層數很深,內容很多,那么可能會再稍高一些。
為了控制性能和采集量,我們目前的堆棧功能在相鄰的2個采集點之間也加入了最少10秒鐘的間隔。后續我們可以開一些API出來,讓大家可以自由指定數據回傳的時機,在性能壓力較低的場景下再將所有堆棧數據全部回傳。
我能調整采集堆棧的深度嗎?
A:卡頓幀堆棧功能打開時默認的堆棧深度為1層,在「GPM設置」-「閾值設置」下可以對調用幀采集的最大深度進行更改,支持設置1-20層之間的任意數值。一般來說20層堆棧已經足夠定位出發生異常的函數堆棧,再者過深的堆棧采集也會導致開銷變大,因此UWA在這邊開放至最大20層的深度。
GPM 2.0「卡頓幀堆棧」功能為游戲研發團隊提供了精準、直觀的卡頓分析能力,讓開發者能夠快速鎖定卡頓根因,優化游戲性能。 無論是Unity還是其他游戲引擎,都可以通過自動或手動打點的方式,深入剖析各個環節的性能開銷。 如果你對游戲性能優化有更高要求,不妨試試GPM 2.0,讓你的游戲體驗更流暢!
關于GPM 2.0
GPM 2.0 是一款專為上線或測試階段的游戲項目打造的高效性能監測工具。它不僅深入捕捉宏觀性能數據,還通過其獨特的性能無損截圖功能,讓開發者在不影響玩家體驗的前提下,全面掌握玩家運行時的關鍵細節,從多個維度優化游戲的性能表現,提升整體用戶體驗。
如果您的項目也希望體驗GPM 2.0的強大功能,歡迎隨時與UWA取得聯系。我們將為您提供免費試用機會,并在試用期間全程支持服務搭建、數據分析與反饋,確保您能夠充分體驗GPM 2.0帶來的價值。
聯系UWA:
郵件:sales@uwa4d.com
微信號:17502188376
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.