《求生之路2》服務(wù)器tickrate的作用與網(wǎng)絡(luò)參數(shù)的優(yōu)化
- 來(lái)源:百度貼吧
- 作者:請(qǐng)叫我蘿莉悾丶
- 編輯:宅黑真的騷

在《求生之路2》中,玩家能夠自己搭建服務(wù)器,這就不得不牽涉到服務(wù)器tickrate與各項(xiàng)網(wǎng)絡(luò)參數(shù)了,只有合理調(diào)整好這些,你的服務(wù)器才能夠盡善盡美。隨小編一起來(lái)看看關(guān)于服務(wù)器tickrate的作用與網(wǎng)絡(luò)參數(shù)的優(yōu)化吧。
首先,tickrate是服務(wù)端里一個(gè)非常關(guān)鍵的參數(shù),它影響了服務(wù)端與客戶端之間的更新頻率,理論上來(lái)說(shuō),tickrate越高的服務(wù)器,玩家之間各種操作的反饋和判定就會(huì)更加精準(zhǔn),但是同時(shí)也會(huì)對(duì)服務(wù)器和玩家的網(wǎng)絡(luò)有更高的要求。
畢竟tickrate越高,服務(wù)端與客戶端之間收發(fā)的數(shù)據(jù)包就會(huì)越多,所以產(chǎn)生loss的幾率就會(huì)變高,如果網(wǎng)絡(luò)帶寬不夠,就會(huì)產(chǎn)生choke,而loss和choke會(huì)嚴(yán)重影響游戲體驗(yàn)。
這里只是簡(jiǎn)單的介紹一下tickrate的作用,如果想要了解更多自己去網(wǎng)上搜索相關(guān)的資料。
然而,L4D2是一款09年的老游戲了,那個(gè)年代的Source引擎(Source2009)版本比較老舊,存在很多問(wèn)題,而且沒(méi)有開放接口對(duì)tickrate進(jìn)行修改。但是后來(lái)有國(guó)外的技術(shù)大佬開發(fā)了一款名為Tickrate Enabler的插件(并不是Sourcemod插件,也不是Metamod插件,準(zhǔn)確的說(shuō)是Source Server-Side Addons),這個(gè)插件可以讓我們修改L4D2服務(wù)端的tickrate,打破L4D2服務(wù)端默認(rèn)30Tick的瓶頸,嗨呀,發(fā)財(cái)啦發(fā)財(cái)啦
然后上面也簡(jiǎn)單介紹了tickrate的作用,這對(duì)于L4D2來(lái)說(shuō)是一個(gè)革命性的進(jìn)步,但事實(shí)并非如此。。。高tickrate的服務(wù)器往往存在著嚴(yán)重的choke,不僅如此,在高tickrate的服務(wù)器里也并沒(méi)有感覺到各種騷操作的判定變得精準(zhǔn),這就是服主和玩家經(jīng)驗(yàn)尚缺,對(duì)Source引擎網(wǎng)絡(luò)傳輸概念不了解的后果。
一些服主可能以為我把tickrate調(diào)高,整成100tick,我的服務(wù)器就會(huì)變得高大上起來(lái),對(duì)此我只能說(shuō)too young
實(shí)際上你的服務(wù)器只能說(shuō)是最高支持100tick,并沒(méi)有發(fā)揮出100tick的作用,同樣的,玩家的參數(shù)設(shè)置不當(dāng),也只能說(shuō)是在100tick的服務(wù)器里玩著30tick的判定。
所以,服務(wù)端不僅要將tickrate調(diào)高,同時(shí)還要修改一些網(wǎng)絡(luò)傳輸參數(shù)來(lái)達(dá)到對(duì)應(yīng)tickrate的配置,這樣才能100%發(fā)揮出高tickrate的優(yōu)勢(shì),同樣的,客戶端也要修改一些網(wǎng)絡(luò)傳輸參數(shù),才能享受到高tickrate帶來(lái)的優(yōu)勢(shì),而且服務(wù)端與客戶端的網(wǎng)絡(luò)傳輸參數(shù)要保持同步才是最佳效果。
打個(gè)簡(jiǎn)單的比喻,tickrate和網(wǎng)絡(luò)傳輸參數(shù)好比兩根一樣大的水管,tickrate的那根水管閥門全開,而網(wǎng)絡(luò)傳輸參數(shù)的那根水管閥門只開了一半,所以你tickrate再高,經(jīng)過(guò)網(wǎng)絡(luò)傳輸參數(shù)水管的也就那么多,所以毫無(wú)意義,而且還會(huì)產(chǎn)生較高的choke。
順便簡(jiǎn)單一句話解釋下loss和choke是什么意思,loss就是丟包,choke就是網(wǎng)絡(luò)帶寬不夠,導(dǎo)致的數(shù)據(jù)包被延遲送達(dá),網(wǎng)絡(luò)瓶頸和參數(shù)設(shè)置不當(dāng)都會(huì)產(chǎn)生choke,服務(wù)器與客戶端的網(wǎng)絡(luò)連接質(zhì)量有問(wèn)題就會(huì)產(chǎn)生loss.
根據(jù)Valve Developer Community的解釋以及自己的理解和實(shí)際調(diào)試結(jié)果,我來(lái)分別介紹下客戶端和服務(wù)端的網(wǎng)絡(luò)傳輸參數(shù)(這里只是介紹作用,后面再給出設(shè)置建議)。
首先,先說(shuō)下客戶端的幾個(gè)參數(shù):
1、rate - 客戶端每秒最大可以接收多少字節(jié)的數(shù)據(jù)包,默認(rèn)值為10000(約等于9.76k),在L4D2這個(gè)版本的引擎里最大支持30000(約等于29.3k)。這個(gè)參數(shù)控制著游戲客戶端的帶寬,取值范圍受服務(wù)器對(duì)應(yīng)參數(shù)sv_minrate/sv_maxrate的限制。
2、cl_updaterate - 客戶端每秒向服務(wù)器請(qǐng)求多少次刷新,這個(gè)參數(shù)控制著客戶端的游戲世界更新頻率,理論上設(shè)的越高,那么你在游戲里看到的東西就會(huì)跟服務(wù)器更為同步。默認(rèn)值為20 (也就是20Tick),最大值受服務(wù)器Tickrate的影響,如果超過(guò)了服務(wù)器的Tickrate,那么毫無(wú)意義而且會(huì)浪費(fèi)帶寬,取值范圍受服務(wù)器對(duì)應(yīng)參數(shù)sv_minupdaterate/sv_maxupdaterate的限制。
3、cl_cmdrate - 客戶端每秒最大可以向服務(wù)器報(bào)告多少次動(dòng)作,玩家在游戲里移動(dòng)、射擊、推猴、秒牛等等都屬于一種動(dòng)作。因?yàn)榉?wù)器Tickrate的概念,服務(wù)端在收集捕獲這些動(dòng)作的時(shí)候都有個(gè)頻率,不可能實(shí)時(shí)將各種細(xì)微的操作都立即計(jì)算出來(lái)反饋給客戶端,所以這個(gè)參數(shù)和Tickrate控制著游戲里各種判定的精準(zhǔn)度。默認(rèn)值為30(也就是30Tick),最大值為100并且受服務(wù)器Tickrate的影響,如果超過(guò)了服務(wù)器的Tickrate,那么毫無(wú)意義而且會(huì)浪費(fèi)帶寬,取值范圍受服務(wù)器對(duì)應(yīng)參數(shù)sv_mincmdrate/sv_maxcmdrate的限制。
4、這里還要提到兩個(gè)參數(shù)cl_interp_ratio和cl_interp,也就是我們常說(shuō)的lerp,國(guó)內(nèi)L4D2對(duì)lerp這個(gè)東西有著非常嚴(yán)重的誤解,甚至還有很多人無(wú)腦跟風(fēng),所以我要重點(diǎn)并且簡(jiǎn)單明了的介紹一下lerp的作用,以及如何根據(jù)自己的情況去設(shè)置合理的lerp值。
5、Lerp的作用:我上面介紹了服務(wù)器Tickrate的概念,以及cl_updaterate參數(shù)的作用,所以看懂了的人都知道,服務(wù)端游戲世界與客戶端游戲世界的同步都有個(gè)頻率,這個(gè)頻率受Tickrate和cl_updaterate參數(shù)的影響,并不是實(shí)時(shí)的。因此,在兩次更新的間隔時(shí)間里(1000ms/Tickrate=?ms),客戶端沒(méi)有收到來(lái)自服務(wù)器的數(shù)據(jù),就不知道該顯示什么,所以就有了lerp這個(gè)概念。lerp用于預(yù)測(cè)和補(bǔ)償兩次更新的間隔時(shí)間里該顯示什么,也就是說(shuō)lerp相當(dāng)于在你原有延遲的基礎(chǔ)上再給你手動(dòng)增加了個(gè)延遲,比如你現(xiàn)在的延遲(ping)是100ms,你的lerp值也是100ms,那么你真正的延遲是100ping+100lerp=200ms,那么你在游戲里看到的都是0.2秒(200ms)前發(fā)生的事情,所以就產(chǎn)生了為什么我看hunter離我還有這么遠(yuǎn)就撲中我了,我charger撞出去模型都碰撞了為什么沒(méi)有判定,tank拳頭賊J8長(zhǎng)等情況。。同樣的,在服務(wù)器刷新頻率不高(tickrate低或者網(wǎng)絡(luò)傳輸參數(shù)沒(méi)有優(yōu)化)的情況下,你設(shè)置了較低的lerp值就會(huì)看到其他玩家以及小SS移動(dòng)的時(shí)候模型一頓一頓的(一步一個(gè)小閃現(xiàn))。這就是tickrate/ping/lerp/updaterate/cmdrate的鍋在正規(guī)比賽中禁止選手在中途修改lerp值也是有原因的,因?yàn)樵谀承┣闆r下lerp值能給自己帶來(lái)優(yōu)勢(shì),屬于涉嫌作弊的行為。
6、所以lerp值要根據(jù)自己的網(wǎng)絡(luò)情況,以及服務(wù)器的網(wǎng)絡(luò)情況和參數(shù)設(shè)置來(lái)得到最適合自己的lerp值,一般情況下,只要你不是那種玩啥都卡的村里網(wǎng),而且服務(wù)器網(wǎng)絡(luò)和刷新頻率沒(méi)有問(wèn)題,那么我推薦lerp值都應(yīng)該設(shè)置為0,這樣才能最大程度的保證你看到的東西沒(méi)有延遲。如果服務(wù)器刷新頻率不夠或者你的網(wǎng)絡(luò)有點(diǎn)毛病,那么在盡可能低的原則下(個(gè)人建議),找到一個(gè)能流暢游戲的lerp值才是最適合你的,lerp值也跟你的反應(yīng)速度和習(xí)慣有關(guān),用慣了一個(gè)lerp的玩家可能需要一定時(shí)間才能適應(yīng)新的lerp值。(以上均為個(gè)人建議,僅供參考)
具體lerp值該怎么修改我這里就懶得BB了,網(wǎng)上到處都有教程。(其實(shí)lerp值的影響范圍跟tickrate和updaterate有關(guān),我這里就不細(xì)說(shuō)了,普通玩家可以不必關(guān)心這些,大概明白lerp的意思就行。一個(gè)合格的服務(wù)器都會(huì)設(shè)置好自己的相關(guān)參數(shù),因?yàn)榭蛻舳薼erp的實(shí)際取值范圍也受服務(wù)器參數(shù)的影響和限制,服務(wù)器上很多參數(shù)都是有關(guān)聯(lián)的)

玩家點(diǎn)評(píng) (0人參與,0條評(píng)論)
熱門評(píng)論
全部評(píng)論