遊戲 Lag 白皮書 › L2 用戶端 OS 與裝置
overlay 程式干擾 Overlays and screen hooks
原因 ID co-overlay · 主要負責 外部(外部) · 協同 遊戲開發團隊(用戶端開發)
在含圖解與實驗的完整版中開啟卡片 →
通訊軟體、啟動器、錄影、FPS 顯示程式為了在遊戲畫面上疊加自己的 UI,會介入遊戲的渲染流程(hook)。每個畫格的工作量因此增加,偶爾還會與遊戲衝突,造成頓一下或遊戲被強制關閉。
為什麼 通訊軟體、遊戲啟動器、顯示卡工具、錄影程式的 overlay 開著 → 於是 每次把畫格輸出到畫面時,overlay 都會介入疊加自己的 UI → 畫面上 畫格一點一點變慢,通知跳出的瞬間頓一下,或出現畫面錯誤、強制關閉(玩家看起來像斷線)
- 症狀
- 卡頓, 定格, 斷線
- 因素
- 停滯
- 誰會遇到
- 只有我
- 何時
- 一直都有, 偶爾隨機發生
- 負責單位
- 主要負責 外部(外部) · 協同 遊戲開發團隊(用戶端開發)
- 遊戲開發團隊要做的事
- 在閃退報告與卡頓 log 中一併收集執行中的 overlay 清單。
- 外部要做的事
- 收到回報時,引導玩家關閉所有 overlay 再測一次。
- 圖表上
- 只有部分偏高 · 畫格時間、閃退次數(開啟 overlay 的玩家)
- 查看位置
- 關閉所有 overlay,比較同一場景的 PresentMon 畫格時間;有閃退時,查看事件檢視器中事件識別碼 1000 的錯誤模組名稱(Faulting module name)
- 符合的跡象
- 關閉 overlay 後頓一下、畫面錯誤消失,或閃退的錯誤模組是 overlay 程式的 DLL
- 不符合的跡象
- 關閉所有 overlay 後仍一樣時,是顯示卡驅動程式或「用戶端閃退」
- 確認方式
- 在玩家端環境確認
- 深入了解
- 只有特定的人卡頓或遊戲被關掉,又無法用配備解釋時,先懷疑 overlay 與遊戲安全模組的衝突。
出處
- Steam Overlay (Steamworks Documentation) Valve
Steam overlay 會自動 hook 到透過 Steam 啟動的遊戲中,這種方式有時會讓遊戲在渲染 API 使用上的記憶體錯誤浮上檯面而閃退 - PresentMon Capture Application (README-CaptureApplication.md) Intel
以 FrameTime(畫格之間的 CPU 時間)錄下每個畫格的時間 - The application or service crashing behavior troubleshooting guidance Microsoft
「應用程式」log 中的事件識別碼 1000 含有錯誤模組名稱(Faulting module name),有時其他模組的損壞會讓 Windows 模組被記為錯誤模組
相關原因
同一層:L2 用戶端 OS 與裝置
同一症狀(卡頓)在其他層的原因
查看含圖解與實驗的完整版卡片