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

遊戲 Lag 白皮書 › 同步設計

沒有技能預輸入 No input/spell queue

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

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

必須收到伺服器確認前一個技能已結束才能按下一個技能時,每次連段之間都會夾著一段往返時間。

為什麼 只在「前一個技能確定後」才接受下一個技能的輸入 → 於是 每個技能之間都空出一段 ping 長度的時間 → 畫面上 連段之間出現空檔,ping 越高 DPS 越低

症狀
輸入延遲, 吃指令/回檔
因素
延遲
誰會遇到
只有我, 只有特定功能
何時
做特定動作時
負責單位
主要負責 遊戲開發團隊(用戶端開發) · 協同 遊戲開發團隊(伺服器開發)
遊戲開發團隊要做的事
用戶端:設定預輸入容許時間,冷卻結束前一段時間(例:0.3~0.4 秒)內的輸入也接受並立即送給伺服器。伺服器:稍微提早抵達的輸入不要拒絕,在冷卻結束的瞬間執行。
數值參考
冷卻 1 秒的連段在 ping 150ms 時,每個技能之間會空出 0.15 秒以上,同樣時間內施放的技能數減少超過 13%。
圖表上
一開始就一直偏高 · 技能之間的空檔、RTT(ping)
查看位置
在伺服器 log 中依角色記錄技能冷卻結束時間、下一個技能請求抵達時間與執行時間,把中間的空檔與玩家 RTT 比較
符合的跡象
從冷卻結束到下一個技能執行之間總是空出約 RTT 的時間,ping 越高的玩家空檔越長、同樣時間內施放的技能越少
不符合的跡象
空檔與 ping 無關、固定不變時,是公共冷卻或動畫長度的設計。空檔只是偶爾大幅飆高時,要查抖動、封包遺失或超出 tick 預算
確認方式
需要遊戲伺服器/用戶端的 log 與指標
深入了解
例如《魔獸世界》設有預輸入容許時間,並讓玩家可以在設定中調整。容許時間比往返時間長的話,連段之間就幾乎不會再夾著 ping 的等待。

出處

  1. Latency and Player Actions in Online Games (Communications of the ACM, 2006) ACM
    在《EverQuest 2》中,延遲越大,角色造成的傷害越少,戰鬥拖得越長(0→500ms 時約 2 分鐘的戰鬥多出 5 秒)

相關原因

同一層:同步設計

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

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