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