cl_interp_ratio 1 和 2 之間的區別
有很多關於“完美”的論壇文章,
cl_interp
但沒有人真正提到過cl_interp_ratio
。大多數玩家將其設置為1
或2 (default)
,但沒有多少人解釋原因。這背後的原因是什麼?價值觀之間有什麼區別?
cl_interp_ratio
甚至做什麼?
要完全理解
cl_interp
andcl_interp_ratio
,您需要了解這些數字在幕後的實際作用。隨機設置它們實際上會使您的連接比預設設置更糟。我將簡要概述插值,這對於 Source 引擎(例如 TF2)上的遊戲意味著什麼,不同的值
cl_interp
和cl_interp_ratio
含義,以及如何測試您的連接以找到適用的值你的連接。插值
插值是一個數學術語。它是一種基於先前數據點猜測數據點的方法。作為一個非常簡單的範例,假設您正在等待接收八個數字,但實際上您只收到五個:
4, 8, ?, ?, 20, 24, ?, 32
現在,根據您收到的數據,您認為缺少的 3 個數字是什麼?如果您說
12
、16
和28
,那是因為您認識到該模式正在上升 4,並且能夠假設該模式將保持不變。當我們談論與遊戲有關的插值時,它通常是作為對失去數據的滯後補償的一種形式。遊戲不斷從伺服器接收數據,但可能會在此過程中失去一些數據包。根據閥門:
多人客戶端通常需要在接收到的每個伺服器更新時渲染三個或更多幀(假設 60fps+ 和
cl_updaterate 20
)。Source 的插值系統通過緩沖伺服器更新然後在播放它們之間平滑插值的間隙來防止通常會導致的抖動運動。它還可以防止因丟包引起的故障。
這在 Source 遊戲 (TF2) 中意味著什麼
如果沒有插值,其他玩家在執行時似乎會在螢幕上“結結巴巴”或“抖動”,尤其是在經常丟包的不良連接上。然而,Interpolation 的實現增加了玩家對遊戲世界的看法的人為延遲,因為它需要緩沖一些更新以插入失去的更新並平滑地顯示它們。因此,擺弄這些值是正常延遲(不良連接)與人工延遲(插值)之間的平衡
那麼這對
cl_interp
and意味著什麼cl_interp_ratio
?
cl_interp
應該(幾乎總是)為 0,因為這將確保您的客戶端調整到伺服器的精確更新速率。更改此值會影響最小插值延遲(“lerp”),提高它會增加 lerp,因此會增加人工延遲。預設情況下,它設置
cl_interp 0.1
為 100 毫秒的延遲,是撥號網際網路時代的遺留物。
cl_interp_ratio
可能會有所不同,並且是您想要調整插值設置的設置。通過設置
cl_interp_ratio
為 1,您僅使用來自伺服器的一個更新來猜測下一個(缺少的)更新是什麼。如果您碰巧連續刪除兩個更新,則客戶端將被迫隨機猜測(這會導致“抖動”位置)。所以這個值真的取決於你的連接質量。你應該使用什麼
cl_interp_ratio 1
如果您幾乎沒有丟包。這會緩沖一個伺服器更新以進行插值。cl_interp_ratio 2
用於輕包失去的連接。這緩衝了兩個更新,並有助於可能定期丟棄多個數據包的客戶端。cl_interp_ratio 3
(甚至 4 個)用於嚴重的封包遺失。這將緩衝 3(或 4)個更新,用於丟包率非常高的客戶端。例如,您還可以使用實數,而不僅僅是整數,
cl_interp_ratio 1.6
但這只是增加了 interp 時間,而實際上並未使用更多更新。大多數人堅持使用整數。如何測試
net_graph 1
您可以使用開發人員控制台在 TF2 中打開您的網路圖。這將顯示您目前的 lerp 值:
- 如果您沒有調整任何設置,您的網路圖將在 100 毫秒報告您的 lerp。
- 如果您設置
cl_interp_ratio 1
它應該說大約 15 毫秒。- 如果它是橙色的,這意味著您將比率設置為低於 2。
- 如果它變成黃色,它只是警告您它可能低於伺服器。
- 如果文本保持白色,則 TF2 認為這是一個安全設置。
當然,您也可以通過花時間在不同的設置上進行測試並在遇到任何問題時對其進行調整,但 netgraph 將為您提供更精確的概述。您應該在玩一些遊戲時將其保持打開狀態,並註意其價值。
結論
直接回答您的問題:緩衝來自伺服器的一兩個更新之間的區別
cl_interp_ratio 1
和cl_interp_ratio 2
區別是為了補償不良的網路連接和失去/失去的數據。您應該只使用
cl_interp_ratio
(notcl_interp
),通常cl_interp_ratio
應該是 1 到 4 之間的數字。參考