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

遊戲 Lag 白皮書 › 只有部分人遇到的問題

一到就處理的伺服器造成快轉 Event-driven processing of bursty inputs

原因 ID pt-event-server · 主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)

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

封包一抵達就立即處理並通知的伺服器,會把慢的人成批湧入的動作接連立即執行。

為什麼 慢的人的技能、移動請求成批抵達 → 於是 伺服器一收到就依序執行,並立即通知所有人 → 畫面上 在其他人眼中,那個人在一瞬間放出好幾個技能,或像快轉一樣移動

症狀
快轉
因素
抖動
誰會遇到
只有特定角色看起來怪怪的
何時
做特定動作時, 一直都有
負責單位
主要負責 遊戲開發團隊(伺服器開發) · 協同 遊戲開發團隊(用戶端開發)
遊戲開發團隊要做的事
伺服器:依動作附帶的輸入時間間隔執行(時間只在容許範圍內才採信),或把成批湧入的動作按最小間隔(公共冷卻)錯開依序執行,不要直接拒絕;不要只看抵達時間做冷卻檢查(正常輸入會被吃掉)。用戶端:在動作上附上輸入時間再送出。
圖表上
只有部分偏高 · 各玩家的動作執行間隔
查看位置
在伺服器 log 記錄各玩家動作的抵達時間、執行時間、用戶端附上的輸入時間(若有),比較執行間隔與輸入間隔。同時在伺服器端封包擷取中查看該玩家封包的抵達間隔
符合的跡象
輸入間隔正常,伺服器的抵達與執行間隔卻擠在幾 ms 內,且擠在一起的時刻與其他人回報快轉的時間重疊
不符合的跡象
輸入時間的間隔本身就擠在一起時,是用戶端或巨集的問題。伺服器執行間隔均勻、只有在別人畫面上看起來擠在一起時,是觀看者的線路
確認方式
需要遊戲伺服器/用戶端的 log 與指標

出處

  1. Understanding Networked Movement in the Character Movement Component for Unreal Engine Epic Games
    伺服器每收到一次 ServerMove 就計算移動,並以與前一次移動的時間戳記差決定時間間隔。與伺服器時間差太多時就丟棄該次移動
  2. Deterministic Lockstep Gaffer On Games
    輸入一到就套用的話,即使以 60Hz 送出,間隔也不平均,結果忽快忽慢

相關原因

同一層:只有部分人遇到的問題

同一症狀(快轉)在其他層的原因

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