한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

遊戲 Lag 白皮書 › 同步設計

雙重 tick 等待 Double tick quantization

原因 ID sy-double-tick · 主要負責 遊戲開發團隊(伺服器開發)

在含圖解與實驗的完整版中開啟卡片 →

請求先累積到下一個 tick 才處理,結果又等到再下一個 tick 才送出時,tick 間隔會被加上兩次。

為什麼 收到的請求在下一個 tick 處理 → 於是 處理結果也累積到下一個傳送 tick 才送出 → 畫面上 線路 ping 很低,反應卻固定慢了約 tick 間隔的 1.5 倍。10 tick 伺服器平均 0.15 秒,最差 0.2 秒

症狀
輸入延遲
因素
延遲
誰會遇到
整個伺服器
何時
一直都有
負責單位
主要負責 遊戲開發團隊(伺服器開發)
遊戲開發團隊要做的事
在處理的那個 tick 立即送出回應、提高 tick rate、重要的回應立即傳送。
數值參考
10 tick 伺服器一個 tick 是 100ms,光是 tick 等待平均就多出 150ms,最差多出 200ms。只等一次的話平均是 50ms。
圖表上
一開始就一直偏高 · 從請求抵達到送出回應的時間
查看位置
在伺服器端的封包擷取中,讓測試帳號重複做同一個動作(例:使用道具),測量請求封包抵達時間與對應回應封包送出時間的間隔。有伺服器 log 的話,查看請求抵達時間、處理的 tick 編號、送出回應的時間
符合的跡象
伺服器內部花費的時間平均約為 tick 間隔的 1.5 倍、最多約 2 倍,且與 RTT 無關、固定不變
不符合的跡象
伺服器內部時間平均在 tick 間隔的一半左右時,tick 等待只有一次。比 tick 間隔長且忽長忽短時,要查超出 tick 預算
確認方式
用基礎設施工具確認(不需要遊戲程式碼)

出處

  1. Peeking into VALORANT's Netcode Riot Games
    抵達的輸入最多要等一個 tick 才到 tick 邊界,套用與傳送又要再花一個畫格。tick rate 越高越短
  2. VALORANT's 128-Tick Servers Riot Games
    延遲有一部分來自網路,一部分來自伺服器 tick rate
  3. NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
    NetworkVariable 的變更會累積到每個網路 tick 再一起傳送

相關原因

同一層:同步設計

同一症狀(輸入延遲)在其他層的原因

查看含圖解與實驗的完整版卡片