求生之路2伺服器tickrate的作用與網路引數的優化

來源:樂享遊戲吧 1.52W

在《求生之路2》中,玩家能夠自己搭建伺服器,這就不得不牽涉到伺服器tickrate與各項網路引數了,只有合理調整好這些,你的伺服器才能夠盡善盡美。隨小編一起來看看關於伺服器tickrate的作用與網路引數的優化吧。

求生之路2伺服器tickrate的作用與網路引數的優化

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

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

這裡只是簡單的介紹一下tickrate的作用,如果想要了解更多自己去網上搜索相關的資料。

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

然後上面也簡單介紹了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.

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

首先,先說下客戶端的幾個引數

1、rate - 客戶端每秒最大可以接收多少位元組的資料包,預設值為10000(約等於9.76k),在L4D2這個版本的引擎裡最大支援30000(約等於29.3k)。這個引數控制著遊戲客戶端的頻寬,取值範圍受伺服器對應引數sv_minrate/sv_maxrate的限制。

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

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

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

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

6、所以lerp值要根據自己的網路情況,以及伺服器的網路情況和引數設定來得到最適合自己的lerp值,一般情況下,只要你不是那種玩啥都卡的村裡網,而且伺服器網路和重新整理頻率沒有問題,那麼我推薦lerp值都應該設定為0,這樣才能最大程度的保證你看到的東西沒有延遲。如果伺服器重新整理頻率不夠或者你的網路有點毛病,那麼在儘可能低的原則下(個人建議),找到一個能流暢遊戲的lerp值才是最適合你的,lerp值也跟你的反應速度和習慣有關,用慣了一個lerp的玩家可能需要一定時間才能適應新的lerp值。(以上均為個人建議,僅供參考)

具體lerp值該怎麼修改我這裡就懶得BB了,網上到處都有教程。(其實lerp值的影響範圍跟tickrate和updaterate有關,我這裡就不細說了,普通玩家可以不必關心這些,大概明白lerp的意思就行。一個合格的伺服器都會設定好自己的相關引數,因為客戶端lerp的實際取值範圍也受伺服器引數的影響和限制,伺服器上很多引數都是有關聯的)

熱門標籤