服务器端:maxupdatarate(服务器传送给客户端数据包最大值)最大101
maxrate(服务器上传下载速率)经无数人测试,20000为最佳,与客户端的rate是一样的
客户端: updatarate(客户端下载数据包最大值)最大101
cmdrate(客户端上传数据包最大值)最大101
rate(速率)最大25000,由服务器决定你的最大值是多少,当然这个值越大越好,对于客户端来说
ex_interp(插值时间)越小越好,当然要看你是否能忍受,与updata有很大关系这些参数之间,或多或少都有着联系,合理的设置,不能使你马上变成高手,但是能为你创造最好的竞技环境。
其实服务器端与客户端之间,最重要的是,同步。同步,举例说明,比如说inferno的香蕉长廊(B通道),你是CT,用awp在B门口秒着那里,你的对手正准备出现在你的视野里,这时候,他移动一下,就会将数据传给服务器(cmdrate),服务器在收到数据包后,做出处理后,将数据包传送给你(maxupdatarate),你会发现对手出现在你的视野里,开木仓,然后你的数据又要从服务器到你的客户端来回走一遍,而服务器在这个过程中会判断你是否击中,但是,这一切的过程都是需要时间的,这个时间是无法消除的,但是服务器收到并且发送回客户端的数据包数量的多少,可以缓解这个差距,也就是说服务器的maxupdatarate值,越大越好。
完美的同步在CS中是不存在的,最佳的同步就是你自己建立主机游戏,这时候,你自己所获得的同步性是最好的,比如在浩方建立自己建立主机,也就是说这时候,你的操作是最符合服务器的,可以理解成你的反应速度比别人要快,你打出的子弹更有可能击中对手。一般的服务器供应商,总会在一台服务器上架设许多个 CS服务器端,这就导致了这些参数,不可能被设为最大值,所以尽管你的updatarate和rate都设置的很完美,但是你所进入的服务器的参数如果缩水了,那么对不起,人家的地盘人家做主,你没有办法,你唯一能做的就是把你的cmdrate设置为最大值,这样,你每做一个操作,都会有尽可能多的数据包传向服务器,这个是你自己能控制的,但是你送去了,人家服务器要不要,就不是你说的算的了,你把你的updata设置成最大,就好比你准备了一个超级大的碗去要饭,人家给你多少,和碗没关系。
ex_interp从服务器的角度来看,所有的数据对它本身来说是完全的,可以理解成一个正圆,而我们客户端在同一时间内,只能接收到一定量的数据包,永远不可能接收到全部,因为这个游戏不是你一个人在玩,服务器要考虑所有参加游戏的人,游戏本身决定的,所以就出现了这个参数,这个参数的意思就是,你所接收到的这些数据,多长时间插入一个,使你尽可能的与服务器同步。
这个图是引用别人的,很直观,外面黑色的圆代表服务器的数据,而我们接收到的数据就是里面的红色部分,红色与黑色的交点直接的距离,就是 ex_interp控制的,interp越小,交点越多,红色和黑色越接近,也就可以理解为越同步,在1.3~1.5时代,这个参数背后有一个bug,就是当人们理解了这个参数的实际意义之后,便将它改到很小,所以当时有人专门瞄着对手的后脑打,因为他用这个参数欺骗了服务器,让服务器以为他打的正好,传闻johnny.R就是这样,所以当你卡着一个点的时候,有对手闪过,你更容易被服务器理解为击中目标,你在别人眼里的反应速度要超乎常人,实际上都是骗子。进入1.6时代后,这个bug没有了,你可以设置的很低,但是你要忍受这个参数所带来的choke,直接效果就是你会发现你的对手和队友都在抖动,你很难瞄准。
下面引用别人的文章:
ex_interp:把这个值设成0。CS会自动把你的“ex_interp”设成“1/cl_updaterate”(你的命令台会告诉你“ex_interp”被强制设成XX毫秒。原文“ex_interp forced up to xxmsec”)。这是因为两个数据包之间的时间间隔就正好是1/(每秒更新次数),这就是你需要客户端做出插值预测的时间长度。调整 “cl_updaterate”会自动调整“ex_interp”(当“ex_interp”设成0的时候)。我建议你只修改 “cl_updaterate”,而让你的CS来自动修改“ex_interp”。你现在不能把“ex_interp”设置的低于 “1/cl_updaterate”,而把它设高则导致了你射击对手的时候不得不瞄准出现在你屏幕上的人的后方,这种行为通常被认为是作弊(原文 exploit,因为欧美比赛中exploit也算是作弊的一种,因此这里就直接翻译成作弊了)。比如,如果你的“cl_updaterate”是 101,你“ex_interp”的正确值就是“1/101=0.009”(9毫秒)。而使用默认值0.1就形成了前述的“作弊”(又是exploit,我ft)
推荐值:ex_interp 0 cl_updaterate很长时间以来的做法是让“cl_updaterate”从101开始下降,降到你可以接受的“choke”值。可以用命令“net_graph3”来查看“choke”。对我来讲,“choke”是我最后才关心的一个数值。事实上得到“cl_updaterate”的最优值是更为复杂的。CAL比赛服务器端设置都是“sv_maxupdaterate101”,所有有人可能会觉得“cl_updaterate”应该设成 101。理想状态下,这是对的,但现实中这并不正确。美国大部分的服务器并不能提供100FPS,这就意味着每秒钟服务器不可能发出100次更新。因此 “cl_updaterate101”除了让你的“ex_interp”变成0.009之外,并不能保证你每秒钟都收到100次更新,这就导致了玩家们的游戏感觉不断在变。既然没有(除非有远程控制权,“rconstats”)知道服务器FPS的方法,我们就不得不猜测“cl_updaterate”的最优值。你可能说:“不妨把“cl_updaterate”设成101,这样就保证了能尽可能多的接收到数据包”。这样做的问题是忽视了 “cl_updaterate”对“ex_interp”的影响,而实际上你的“ex_interp”应该设的更高。
为了找出最优的“cl_updaterate”值(记得把“ex_interp”设成0),将其值从101开始下降直到游戏中的人物只有非常轻微的抖动。 “轻微的抖动”的程度只是个人的偏好而已,只要你的“ex_interp”等于“1/cl_updaterate”,游戏中的人物就应该是在正确的位置上。你必须针对每个服务器来调整你的“cl_updaterate”。别害怕使用低于50的“cl_updaterate”值。预测机制会发挥它的作用。注意:大多数公众服务器会把“sv_maxupdaterate”设成30,这时“cl_updaterate 30”就是最正确的。
请注意“cl_updaterate”从低向高调整是行不通的。一旦你的“cl_updaterate”设置到了一个较高的值,“ex_interp”并不会自动调整,而你不得不一次又一次的手动输入“ex_interp 0”。
所以,对于97服务器来说,我现在都不知道它的maxupdatarate到底是多少,它的FPS是多少,但是我可以确定的是,绝对不到最大值 101,所以我自己感觉,在97服务器里cmdrate updatatrate都设置101,rate20000,让服务器去判定吧,ex_interp0.03是我能接受的最小值了,再小,我就受不了了,但是在我自己架设的服务器里,我可以设置到更低,也就是说,LAN比赛的时候,101 101 20000 0.009~0.025 都是我可以接受的。总之,网络参数的设置,只是追求尽可能的与服务器同步,让你所看到的敌人,尽可能的显示在正确的位置