遊戲 Lag 白皮書 › L9 伺服器遊戲程式
集中在單一目標的戰鬥(世界王) Hot entity / combat event fan-out
原因 ID sp-hot-entity · 主要負責 遊戲開發團隊(伺服器開發)
在含圖解與實驗的完整版中開啟卡片 →
數百人同時攻擊同一隻王時,這隻王的運算全集中在一處,打擊資訊也要傳送給所有看得到的人。
為什麼 數百人不停地對同一隻王施放技能、buff、debuff → 於是 王的血量、仇恨列表、debuff 計算集中在一處,每次打擊都要把傷害數字與特效封包傳送給所有看得到的人 → 畫面上 技能延遲命中,傷害數字一口氣跳出來,只有王的周圍出現慢動作
- 症狀
- 輸入延遲, 快轉, 慢動作
- 因素
- 停滯, 延遲
- 誰會遇到
- 特定地點/頻道
- 何時
- 人潮湧入時
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發)
- 遊戲開發團隊要做的事
- 其他玩家的傷害數字與特效合併或省略、限制單一目標身上的 debuff 數量上限、把打擊處理分散到多個 tick。
- 數值參考
- 800 人每秒各打 2 下,就是每秒 1,600 次打擊。全部通知給看著的 800 人,就是每秒 128 萬則訊息。
- 圖表上
- 隨人數/負載上升 · 伺服器 tick 時間、傳送訊息數
- 查看位置
- 把打王時段的 tick 時間與傳送封包數,和王周圍的人數一起看;可以的話再看各目標每秒的事件數(打擊、buff、debuff)
- 符合的跡象
- 王周圍的人數增加時,tick 時間與傳送量急遽上升,這隻王每秒的事件數是其他目標的數十倍
- 不符合的跡象
- 與王無關,只要人聚在一處就同樣變慢時,是視野計算或廣播量暴增
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- HED-GP Technical Retrospective: What a HED-ache CCP Games
即使只是一次攻擊,也必須通知所有看得到的用戶端,因此產生 n 人通知 n 人的 O(n²) 負擔;訊息量大的無人機攻擊會讓這個負擔增加得更快
相關原因
同一層:L9 伺服器遊戲程式
同一症狀(輸入延遲)在其他層的原因
查看含圖解與實驗的完整版卡片