[反恐精英]ex_interp參數(shù)中文最詳解釋
- 來源:Pacifichawk
- 作者:不死鳥
- 編輯:ChunTian

已知:
1. ex_interp設(shè)置為0即為一個開關(guān),作用是ex_interp開始根據(jù)你的cl_updaterate數(shù)值進行全自動調(diào)校,我們可以認為,此時的ex_interp實際值即為valve的推薦值,也是理論上最適合的值。
2.cl_updaterate 的概念為每秒從服務(wù)器接受的數(shù)據(jù)包數(shù)量。這個數(shù)值能否正常發(fā)揮其作用,取決于2個方面,一個是服務(wù)器的FPS是否大于你的cl_updaterate數(shù)值,一個是服務(wù)器端是否設(shè)置了sv_maxupdaterate 大于或等于你的cl_updaterate數(shù)值。
3.ex_interp的實際數(shù)值決定了插值運算的強度,ex_interp越小,在你看到一個人的完整運動軌跡之中,由插值運算所產(chǎn)生的比例越小。
4.ex_interp的數(shù)值(0.1,0.01等)實際上可加上一個單位s,其實0.1就代表0.1秒。
我們來對比一下兩種情況下cl_updaterate和ex_interp的關(guān)系。
當cl_updaterate 為100時 ,ex_Interp最佳值為0.01 即0.01s=10ms
當cl_updaterate 為10時, ex_interp最佳值為0.1即0.1s=100ms
我們可以注意到,第一種情況,100X10=1000ms,第二種情況10X100=1000ms。
而1000ms=1秒。你可以試一下別的數(shù)值,最后的乘積一定也是1000ms。
注意到cl_updaterate為每秒從服務(wù)器接受的數(shù)據(jù)包數(shù)量。
所以我們可以這么解釋,當客戶端每接收到一個數(shù)據(jù)包之后,可以確定一次你的對手的真實位置。自你接收到第一個數(shù)據(jù)包開始xxms之內(nèi),你看到的對手運動軌跡為插值計算所得,這個xx=ex_interp的數(shù)值。舉例說明,當clupdaterate 為100時,每隔1/100=10ms你接收到一個數(shù)據(jù)包,所以ex_interp 設(shè)置為10ms為最合適的數(shù)值;因為剛好10ms之后你又能收到第二個數(shù)據(jù)包,從而完美的實現(xiàn)銜接過程。同理cl_updaterate為10時,ex_interp=0.1就是最佳的數(shù)值。
現(xiàn)在我們來用目前爭議最大的wNv和Fnatic的戰(zhàn)斗過程來舉例:
Fnatic 的設(shè)置:
cl_updaterate=100,ex_interp=0.01=10ms
wNv(或者說wNv-Kin'z)的設(shè)置:
cl_updaterate =100,ex_interp=0.1=100ms
兩者都是每秒接收到100個數(shù)據(jù)包,但由于wNv的ex_interp設(shè)置為100ms,所以當kin'z接收到第一個數(shù)據(jù)包后,客戶端根據(jù)插值運算虛擬計算出了100ms內(nèi)對手的可能行為。
而此時Fnatic隊員的cs客戶端只虛擬計算出了10ms內(nèi)對手的可能行為。
現(xiàn)在有人會想當然的認為,這樣wNv隊員不是"提前"90ms預(yù)知對手的行為了?實際上這也是John Mellin和被其影響的相當多數(shù)外國人的想法。然而我要說這種想法是錯誤和主觀的。首先,客戶端雖然“預(yù)知”了對手未來的行為,但是操作客戶端的玩家卻無從知曉,客戶端要想反應(yīng)出敵人未來100ms的情況,同樣需要花100ms的時間。其次,上面所說的情況其實根本不會產(chǎn)生。
我們注意到此時雙方的cl_updaterate 都為100。這意味著,在接收到第一個數(shù)據(jù)包之后10ms,客戶端將接受到第二個數(shù)據(jù)包。對fantic這一方而言,第二個數(shù)據(jù)包處于剛好銜接上的狀態(tài)。對wNv這一方而言,雖然在第一個數(shù)據(jù)包到達之后,客戶端虛擬出了未來100ms內(nèi)對手的行為。但是10ms后,第二個真實反映對手位置的數(shù)據(jù)包到達了。
我們可以想象出此時程序的2種處理方式,如下:
第一,忽略多出的90ms虛擬計算數(shù)據(jù),采用到達的真實數(shù)據(jù)。
第二,忽略第二個數(shù)據(jù)包的內(nèi)容,繼續(xù)采用虛擬的計算數(shù)據(jù),直到第10個數(shù)據(jù)包到來。
第二種情況是不科學(xué)的,也不可能是valve實際采用的,因為如果按第二種情況處理的話,其實cl_updaterate 10和cl_updaterate 100在ex_interp為0.1的情況下沒有任何區(qū)別。你可以去一個服務(wù)器里把cl_updaterate 改成10 ,試下你的感覺……
那么我們可以認為程序是按第一種模式運行的。
于是我可以提出我的結(jié)論:
在cs1.6中,當cl_updaterate數(shù)值足夠且網(wǎng)絡(luò)狀況良好的情況下,ex_interp為0.1或ex_interp為“1/cl_updaterate數(shù)值”這2種設(shè)置并沒有實際區(qū)別。采用其中任何一種設(shè)置均獲得近似相等的效果,并不存在所謂的不公平性因素。
那有人要問,為什么valve把最佳值設(shè)為"1/cl_updaterate數(shù)值"而不統(tǒng)一設(shè)定為0.1?
我想,那是一個最優(yōu)數(shù)值,使用這個數(shù)值,可以避免cpu時間被無謂的浪費要知道cpu計算數(shù)據(jù)量的不同耗費的時間也不同,在這里也存在一個"延遲",而且可能還會略微的影響FPS。所以我在結(jié)論中用了一個"近似相等"。至于影響的大小是可以完全忽略不計還是可以微微感覺的到,這就不在本文研究的范圍之內(nèi)了。在平時進網(wǎng)絡(luò)服務(wù)器打比賽或混戰(zhàn)的時候,使用ex_interp 0.01等參數(shù)可能會導(dǎo)致人物一跳一跳,這是由于互連網(wǎng)絡(luò)連接狀況不穩(wěn)定, 如果產(chǎn)生了lost(丟包),choke(阻塞),那么使用ex_interp 0.01等參數(shù)就有可能出現(xiàn)插值運算結(jié)束后不能銜接上下一個數(shù)據(jù)包,這樣反映出來的效果就是人物會跳動。
最終我依然推薦平時將你的ex_interp設(shè)置為0,而cl_updaterate設(shè)置為60-100,比賽時設(shè)置為ex_Interp 0.01,cl_updaterate設(shè)置為100。
另外,有人抱怨在國內(nèi)的大多數(shù)服務(wù)器中無法修改ex_interp,這里呼喚一下所有粗心的服務(wù)器架設(shè)者們,請到服務(wù)器安裝目錄下的cstrike\addons\wwcl子目錄下修改下wwcl的配置文件。具體過程:首先查看wwclconfig.cfg確定你現(xiàn)在用的wwcl模式。注意前面沒有//注釋的就是目前你采用的wwcl模式,然后修改該模式對應(yīng)的config文件,以ex_interp做關(guān)鍵字查找到鎖定ex_interp的那一行將其刪除,并把brightness參數(shù)由原先鎖定的1修改為3。
而對于玩家而言,也不必過于擔(dān)心此事,如果你能習(xí)慣ex_interp=0.1,那么你就能習(xí)慣ex_interp=0.01 。
關(guān)于ex_interp,我想以上已經(jīng)解釋的足夠清楚了。

玩家點評 (0人參與,0條評論)
熱門評論
全部評論