遊戲 Lag 白皮書 › L9 伺服器遊戲程式
尋路運算暴增 Pathfinding storms
原因 ID sp-pathfinding · 主要負責 遊戲開發團隊(伺服器開發)
在含圖解與實驗的完整版中開啟卡片 →
數百隻怪物同時追擊玩家並計算路徑時,會耗用大量 CPU。
為什麼 拉一大群怪或大量生成時,許多怪物同時追擊玩家 → 於是 每隻怪物各自計算尋路 → 畫面上 只有那個練功區出現慢動作
- 症狀
- 慢動作
- 因素
- 停滯
- 誰會遇到
- 特定地點/頻道
- 何時
- 人潮湧入時
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發)
- 遊戲開發團隊要做的事
- 快取路徑、限制計算次數上限、分散到多個 tick 處理。
- 圖表上
- 隨人數/負載上升 · 伺服器 tick 時間、各 zone 的怪物數
- 查看位置
- 各 zone 正在追擊玩家的怪物數與 tick 時間。沒有另外計數時,用 perf top -p 看遊戲處理程序各函式的 CPU 占比
- 符合的跡象
- 拉一大群怪或大量生成時 tick 時間增加,尋路(路徑搜尋)函式占了很大比例的 CPU 時間
- 不符合的跡象
- 怪物少、只有玩家多時 tick 增加,是視野計算或廣播
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- AI.NavMesh.pathfindingIterationsPerFrame Unity
每個畫格只處理固定數量節點的尋路,分散到多個畫格;即使路徑很長或請求同時湧入,遊戲也能保持流暢 - perf-top(1) — Linux manual page perf
依函式(symbol)即時顯示執行中處理程序(-p)的 CPU 使用占比
相關原因
同一層:L9 伺服器遊戲程式
同一症狀(慢動作)在其他層的原因
查看含圖解與實驗的完整版卡片