當前位置:陽光遊戲站 >

單機圖文攻略

> 求生之路2服務器tickrate的作用與網絡參數的優化

求生之路2服務器tickrate的作用與網絡參數的優化

在《求生之路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的實際取值範圍也受服務器參數的影響和限制,服務器上很多參數都是有關聯的)

  • 文章版權屬於文章作者所有,轉載請註明 https://ygyxz.com/twdj/0dmwx.html