每日最新頭條.有趣資訊

《求生之路2》伺服器及網絡參數優化指南

第1頁:tickrate的作用

展開

  《求生之路2》中許多玩家在聯機遊戲中總是煩惱於網絡的卡頓與延遲判定,但真正影響我們遊戲體驗的東西也許大家並不知道。下面給大家帶來的就是玩家“請叫我蘿莉悾丶”分享的《求生之路2》伺服器及網絡參數優化指南,希望能幫到大家。

tickrate的作用

  首先,tickrate是服務端裡一個非常關鍵的參數,它影響了服務端與客戶端之間的更新頻率,理論上來說,tickrate越高的伺服器,玩家之間各種操作的反饋和判定就會更加精準,但是同時也會對伺服器和玩家的網絡有更高的要求。

  畢竟tickrate越高,服務端與客戶端之間收發的數據包就會越多,所以產生loss的幾率就會變高,如果網絡帶寬不夠,就會產生choke,而loss和choke會嚴重影響遊戲體驗。

  然而,L4D2是一款09年的老遊戲了,那個年代的Source引擎(Source2009)版本比較老舊,存在很多問題,而且沒有開放接口對tickrate進行修改。但是後來有國外的技術大佬開發了一款名為Tickrate Enabler的插件(並不是Sourcemod插件,也不是Metamod插件,準確的說是Source Server-Side Addons),這個插件可以讓我們修改L4D2服務端的tickrate,打破L4D2服務端默認30Tick的瓶頸,嗨呀,發財啦發財啦。

  Tickrate Enabler下載地址:點擊進入

  然後上面也簡單介紹了tickrate的作用,這對於L4D2來說是一個革命性的進步,但事實並非如此。高tickrate的伺服器往往存在著嚴重的choke,不僅如此,在高tickrate的伺服器裡也並沒有感覺到各種騷操作的判定變得精準,這就是服主和玩家經驗尚缺,對Source引擎網絡傳輸概念不了解的後果。

  一些服主可能以為我把tickrate調高,整成100tick,我的伺服器就會變得高大上起來,對此我只能說too young。實際上你的伺服器只能說是最高支持100tick,並沒有發揮出100tick的作用,同樣的,玩家的參數設定不當,也只能說是在100tick的伺服器裡玩著30tick的判定。

  所以,服務端不僅要將tickrate調高,同時還要修改一些網絡傳輸參數來達到對應tickrate的配置,這樣才能100%發揮出高tickrate的優勢,同樣的,客戶端也要修改一些網絡傳輸參數,才能享受到高tickrate帶來的優勢,而且服務端與客戶端的網絡傳輸參數要保持同步才是最佳效果。

  打個簡單的比喻,tickrate和網絡傳輸參數好比兩根一樣大的水管,tickrate的那根水管閥門全開,而網絡傳輸參數的那根水管閥門隻開了一半,所以你tickrate再高,經過網絡傳輸參數水管的也就那麽多,所以毫無意義,而且還會產生較高的choke。

  順便簡單一句話解釋下loss和choke是什麽意思,loss就是丟包,choke就是網絡帶寬不夠,導致的數據包被延遲送達,網絡瓶頸和參數設定不當都會產生choke,伺服器與客戶端的網絡連接品質有問題就會產生loss。

遊民星空

更多相關內容請關注:生存之旅2專區

責任編輯:永不追憶

文章內容導航

第2頁:客戶端參數

展開

客戶端參數

  根據Valve Developer Community的解釋以及自己的理解和實際調試結果,我來分別介紹下客戶端和服務端的網絡傳輸參數(這裡只是介紹作用,後面再給出設定建議)。

  rate - 客戶端每秒最大可以接收多少字節的數據包,默認值為10000(約等於9.76k),在L4D2這個版本的引擎裡最大支持30000(約等於29.3k)。這個參數控制著遊戲客戶端的帶寬,取值範圍受伺服器對應參數sv_minrate/sv_maxrate的限制。

  cl_updaterate - 客戶端每秒向伺服器請求多少次刷新,這個參數控制著客戶端的遊戲世界更新頻率,理論上設的越高,那麽你在遊戲裡看到的東西就會跟伺服器更為同步。默認值為20 (也就是20Tick),最大值受伺服器Tickrate的影響,如果超過了伺服器的Tickrate,那麽毫無意義而且會浪費帶寬,取值範圍受伺服器對應參數sv_minupdaterate/sv_maxupdaterate的限制。

  cl_cmdrate - 客戶端每秒最大可以向伺服器報告多少次動作,玩家在遊戲裡移動、射擊、推猴、秒牛等等都屬於一種動作。因為伺服器Tickrate的概念,服務端在收集捕獲這些動作的時候都有個頻率,不可能實時將各種細微的操作都立即計算出來反饋給客戶端,所以這個參數和Tickrate控制著遊戲裡各種判定的精準度。默認值為30(也就是30Tick),最大值為100並且受伺服器Tickrate的影響,如果超過了伺服器的Tickrate,那麽毫無意義而且會浪費帶寬,取值範圍受伺服器對應參數sv_mincmdrate/sv_maxcmdrate的限制。

  這裡還要提到兩個參數cl_interp_ratio和cl_interp,也就是我們常說的lerp,國內L4D2對lerp這個東西有著非常嚴重的誤解,甚至還有很多人無腦跟風,所以我要重點並且簡單明了的介紹一下lerp的作用,以及如何根據自己的情況去設定合理的lerp值。

  Lerp的作用:我上面介紹了伺服器Tickrate的概念,以及cl_updaterate參數的作用,所以看懂了的人都知道,服務端遊戲世界與客戶端遊戲世界的同步都有個頻率,這個頻率受Tickrate和cl_updaterate參數的影響,並不是實時的。因此,在兩次更新的間隔時間裡(1000ms/Tickrate=?ms),客戶端沒有收到來自伺服器的數據,就不知道該顯示什麽,所以就有了lerp這個概念。

  lerp用於預測和補償兩次更新的間隔時間裡該顯示什麽,也就是說lerp相當於在你原有延遲的基礎上再給你手動增加了個延遲,比如你現在的延遲(ping)是100ms,你的lerp值也是100ms,那麽你真正的延遲是100ping+100lerp=200ms,那麽你在遊戲裡看到的都是0.2秒(200ms)前發生的事情,所以就產生了為什麽我看hunter離我還有這麽遠就撲中我了,我charger撞出去模型都碰撞了為什麽沒有判定,tank拳頭賊長等情況。

  同樣的,在伺服器刷新頻率不高(tickrate低或者網絡傳輸參數沒有優化)的情況下,你設定了較低的lerp值就會看到其他玩家以及小SS移動的時候模型一頓一頓的(一步一個小閃現)。這就是tickrate/ping/lerp/updaterate/cmdrate的鍋,在正規比賽中禁止選手在中途修改lerp值也是有原因的,因為在某些情況下lerp值能給自己帶來優勢,屬於涉嫌作弊的行為。

  所以lerp值要根據自己的網絡情況,以及伺服器的網絡情況和參數設定來得到最適合自己的lerp值,一般情況下,只要你不是那種玩啥都卡的村裡網,而且伺服器網絡和刷新頻率沒有問題,那麽我推薦lerp值都應該設定為0,這樣才能最大程度的保證你看到的東西沒有延遲。

  如果伺服器刷新頻率不夠或者你的網絡有點毛病,那麽在盡可能低的原則下(個人建議),找到一個能流暢遊戲的lerp值才是最適合你的,lerp值也跟你的反應速度和習慣有關,用慣了一個lerp的玩家可能需要一定時間才能適應新的lerp值。

  其實lerp值的影響範圍跟tickrate和updaterate有關,我這裡就不細說了,普通玩家可以不必關心這些,大概明白lerp的意思就行。一個合格的伺服器都會設定好自己的相關參數,因為客戶端lerp的實際取值範圍也受伺服器參數的影響和限制,伺服器上很多參數都是有關聯的。

更多相關內容請關注:生存之旅2專區

責任編輯:永不追憶

文章內容導航
獲得更多的PTT最新消息
按讚加入粉絲團