遊戲 Lag 白皮書 › 只有部分人遇到的問題
一個慢的隊友與王的機制 One laggy member in a synchronized mechanic
原因 ID pt-raid-member · 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)
在含圖解與實驗的完整版中開啟卡片 →
在所有人必須在指定瞬間一起反應的團隊副本機制中,一個慢的人反應太晚,就會讓整個隊伍失敗。
為什麼 「全員同時散開」、「由一人按下按鈕」這類共同機制 → 於是 慢的人較晚看到預兆,輸入也較晚抵達 → 畫面上 因為那一個人而團滅,其他隊友覺得「都是 lag 的人害的」
- 症狀
- 吃指令/回檔, 輸入延遲
- 因素
- 延遲
- 誰會遇到
- 特定地點/頻道, 只有特定角色看起來怪怪的
- 何時
- 人潮湧入時, 做特定動作時
- 負責單位
- 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)
- 遊戲開發團隊要做的事
- 伺服器:機制判定區間保留 ping 的餘裕,預兆以伺服器時間提前送出,設計成一個人失敗不會導致團滅。用戶端:把收到的預兆配合伺服器時間播放。
- 圖表上
- 只有部分偏高 · 造成機制失敗的各玩家 RTT
- 查看位置
- 在伺服器機制 log 記錄造成失敗的玩家、該玩家的輸入抵達時間、判定區間、該玩家的 RTT 與封包遺失
- 符合的跡象
- 導致團滅的輸入大多來自同一個人,該玩家的 RTT 明顯高於隊伍平均,且輸入在判定區間剛結束時才抵達
- 不符合的跡象
- 失敗平均分散在隊友身上時,是判定區間本身太短的問題(被 ping 吃掉的短判定區間)。慢的人的輸入在判定區間內抵達卻仍失敗時,是伺服器判定程式碼
- 確認方式
- 需要遊戲伺服器/用戶端的 log 與指標
出處
- NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
依伺服器時間排程事件,讓所有人在同一瞬間播放的方法 - Factors influencing the latency of simple reaction time (Frontiers in Human Neuroscience, 2015) Frontiers
簡單反應時間平均約 231ms
相關原因
同一層:只有部分人遇到的問題
同一症狀(吃指令/回檔)在其他層的原因
查看含圖解與實驗的完整版卡片