關(guān)于csgo的cl_interp和cl_interp_ratio參數(shù)的說明
鑒于有很多人還不明白這兩個參數(shù)的原理,關(guān)于這兩個參數(shù)的理解和解釋并不太準確,所以發(fā)個專欄說明一下。
首先貼一個鏈接,關(guān)于這兩個參數(shù)以及其他的一些參數(shù)(如net_graph欄的各個參數(shù))的詳細說明見https://pastebin.com/2bBFijFY該鏈接。
簡而言之,這兩個參數(shù)實際上都是用來控制插值時間(有關(guān)插值時間和延遲補償?shù)母拍钫垍⒖?a class='video-link' target='_blank' href='//www.bilibili.com/video/BV1tE411L7YF?from=articleDetail'>BV1tE411L7YF)。但不同的是,cl_interp是以秒為單位的,cl_interp_ratio是以幀為單位的。csgo的默認設(shè)置為interp 0.03125和ratio 2,在64tick下,ratio 2轉(zhuǎn)換為時間度量應(yīng)該是1/64*2=0.03125,也就是說兩個參數(shù)默認設(shè)置是等價的,均使插值時間為0.03125s。但當兩個參數(shù)設(shè)置不等價時怎么辦?比如interp設(shè)置為0.03125,ratio則為1,此時ratio 1轉(zhuǎn)換為時間度量應(yīng)該是1/64=0.015625s,明顯為0.03125的一半,即只延后1幀。csgo的做法是使用一個max(cl_interp, cl_interp_ratio)函數(shù)(均轉(zhuǎn)換成時間度量)去選擇兩者中較大的,也就是說兩個參數(shù)中只有大的那個值會生效。那么前面的例子中,插值時間應(yīng)該由cl_interp 0.03125來控制,在64tick下還是延后兩幀。
需要說明的是interp的范圍為0.0078125-0.031。當interp設(shè)置為0時取下限0.0078,剛好對應(yīng)128tick下1幀的時間;interp為1時取上限。當cl_interp設(shè)置為0時,可以保證任意情況下起作用的都是cl_interp_ratio參數(shù)。實際上ratio這個參數(shù)就是恰恰是設(shè)計來替換interp的,以幀數(shù)來設(shè)置也更合理方便一些。
綜上所述,這兩個參數(shù)的通用調(diào)法應(yīng)該是cl_interp 0和cl_interp_ratio 1或2(視個人網(wǎng)絡(luò)而定),通常情況下推薦使用2。如此一來我們就不需要根據(jù)服務(wù)器的tick數(shù)調(diào)來調(diào)去,也能達到統(tǒng)一延后兩幀的效果。