很多人都知道在1.5中,修改ex_interp是违规的,它的默认值为0.1。但是在最近的CPL冬季锦标赛上,
ex_interp的默认值却被改为0.01,这究竟是怎么一回事?
我用这篇文章尽量地把这个问题简明扼要的解释出来,不让玩家们太难理解这些信息。
那么什么是ex_interp呢
ex_interp的工作原理就好像这样。
首先,Interp的含义为interpolation(译者注:插入帧,下同)。
也就是说基本上,它往你的主机/网络之间插入数据包,这个东西的引入令使用连接状况比较差的用户们仍然
能够进行游戏。
插入帧发生的原理如下:
我们比如说有10个帧(显示帧或者说数据包)显示在你的屏幕上。如果你的ex_interp设置在0.1的话,
就只有4帧是实际出现的帧,而其他的帧为运算得出的帧(译者注:guessed,这里意译为运算帧,其含义为猜
测,由计算机模拟运算得出。下同)。
因此,它就象这样(RF=实际帧,GF=运算帧)RF GF GF RF GF GF RF GF GF RF etc.其作用就是来填补
破烂的连接状况,这样你才能从屏幕中看到平滑而漂亮的画面据我的了解,在旧一些的版本的Netcode网络代
码中(以前的1.3),LPB(低ping的混蛋)会有好的状况,因为他几乎能收到所有的帧,可以看到他因为能有
好的连接而有好的帧负载,然而HPB(高ping的混蛋)会得到少一些的帧,屏幕会看起来一顿一顿的,打游戏
也不那么容易。
所以,如果你想把你的ex_interp设定为一个更低的值,比如说0.01。这样你会把10个帧中的8个改变为
真实帧。RF RF GF RF RF GF RF RF GF
这样的形容不是很贴切,总体上也不是很精确,不过至少能基本解释是怎么发生的。
不过到底ex_interp是不是一个违规参数呢?
ex_interp在cs1.6里面不是违规和作弊参数。
你不再可能把ex_interp设定为违规的参数了(下面解释),原因是由于代码上的一些小bug,在1.5和之
前版本中是一个违规参数,你可以把它设定成很低的值,甚至你的服务器连接是不允许的(假设服务器默认它
为0.1,即使你有明显地企图也能修改!),这样会使hitbox产生不正确的表现,造就有利于一些修改
ex_interp的configger。
在1.6中,这将被修正,因此当你尝试把ex_interp改成0.01时,你会得到一个信息,你的设置会设定为
16ms或者15ms(你把net_graph设成3的时候可以看见)。这是因为你的cl_updaterate对ex_interp 0.01来
说设定得太低。
不过设置为0.01是最好的,因为Half-Life/CS会将它尽可能自动设定适合你的updaterate(也是发生在
对于最好的设定的情况下)
尝试把cl_updaterate设定为60,然后把ex_interp设为0.01,你会得到一个错误,表现为16ms。那么现在把
cl_updaterate设为100,然后把ex_interp设为0.01。
这是允许的,而不会给出一个错误的信息。
我的建议是把你的cl_updaterate,cl_cmdrate和rate尽量地与你的的连接相符,即你的连接方式能够
处理得了(比如cl_updaterate 101,cl_cmdrate 101和rate 20000就不会有任何的choke或者loss,译者
注:仅在lan比较适用)。
一旦你达到了你的连接的最佳方式,不论你的cl_updaterate如何,将把你的ex_interp设为0.01,cs然
后就会按照你的cl_updaterate的值而设定ex_interp而不管你把它(ex_interp)自行设定为多低。运算等
式是这样的(对你的updaterate而言进行ex_interp的限制)最低的ex_interp值=1/cl_updaterate.(译
者注:cl_updaterate是主变量,所以应该放在等式的右边。)
另外一点,如果你想你的cs更象“街头混战”一样的话,用另外的话说平滑而无顿挫感,那么我建议你将
ex_interp设定为0.1。
不过如果你想你增加你的准确度的话(子弹打在你所实际瞄准的位置),那么就把ex_interp设定到最低
值。