降低cs1.6网络延迟

2024-11-20 01:55:21
推荐回答(5个)
回答1:

S 1.6 网络参数详细解释
esai_8tree留言: ESAI被你感动!年度感动ESAI人物-------玉米!!!

原文的版权归作者本人和Gotfrag Prime!所有,翻译整理版权由本人以及Esai论坛所有,转载请联系本人或者Esai论坛管理员

(IMG:http://images.esai.cn/img/20040423180950_sz.jpg)

这是Gotfrag的周刊Gotfrag Prime!的文章。作为免费的文章,我们可以不用注册成为会员。如果想成为会员,获得最新的Gotfrag资讯,请加入Gotfrag Prime!

CS 1.6 网络参数详细解释

原文作者: Jon Mellin
(原文需要加入Gotfrag Prime!的会员才能浏览,译者就不在这里加入链接了)
-----------------------------------------------------------------------------------------------
在这篇文章中,我希望能让大家了解一下CS中的一些网络上的参数。在1.3时代,当欧洲和美洲的玩家在CS上强烈碰撞的时候,网络参数在当时是一个全新的主题。1.5里,玩家们开始尝试从这些命令当中研究,发掘某些特性。事实上,大多数人都采用了正确的设置。当我们都以为对于网络参数的争论结束的时候,一个看似神秘的参数ex_interp在1.5中被重新提出,引起了一系列的风波。然而,在1.6出现之后,Valve修正了网络参数的这个错误(指的是 ex_interp),同时也制造了更多的混淆。如果没有混乱的话,正确的设定早已经有效的被Valve反作弊系统(VAC)所锁定.到了现在,却仍然是一个混乱的局面。

在文章中,我的观点是积累了2年的经验和长期观察的结果。最近,一些参数的问题又引发了我的兴趣:管理员强制性地设置了错误的数值,玩家们在LAN中使用正确的参数却被硬性地踢出等等。有些人可能会记得我,我就是当年发表那篇"ex_ cammands explained(ex_ 系列参数详解)"的人。在这篇文章中,有很多信息是我与Valve的员工用Email交流之后获得的。(大家可能会奇怪,他们正在解决一些demo的问题。)我想再次提出,文章不会让你成为下一个SpawN,不过能帮助消除一些错误的监控(译者注:主要指管理员和一些软件的监控错误)并让大家有一个更具说服力更具准确度的游戏环境的理解。

下文中,我将首先说明一些个人认为重要的命令的大体介绍,并带出他们的实际功效。然后我将会推荐一些数值,并解释其中的原因。

------------------------------------------------------------------------------------------------
首先说明:

sv_ 以及sys_ 系列参数,是服务器端的命令,如果是在非本地服务器上修改这些系列参数的命令,你需要获得服务器管理员的权限、

ex_interp和cl_updaterate的关系是非常紧密的,这两个参数的说明都请必须阅读。

文章中假设玩家的网络都在宽带接入的方式下进行。

------------------------------------------------------------------------------------------------
参数介绍:

cl_cmdrate:

这个命令决定了客户端向每秒钟服务端发送数据包的数量。很明显地,这个参数的数值设定得越高,那么服务器就能相应客户端处理信息的速度越快,基本上数值设定得高是没什么错的。如果你与你的朋友都在局域网中游戏,而延时非常严重,那么很可能就是这个参数没有设置好。事实上,大多数的宽带接入没有提供足量的上行带宽,这也恰好是这个命令需要的。

cl_updaterate:

cl_updaterate与 cl_cmdrate是类似的,不过方向是相反的。它控制的是客户端每秒钟从服务端接收数据包的数量。因此,它和你的下行带宽是紧密相连的。 cl_updaterate的数值设定得越高,你和服务器的同步率就越高。因为只有服务器才会决定你开枪是否命中,所以你需要足够的更新数据包(upadates)。

sv_maxupdaterate:

cl_updaterate控制客户端每秒接收来自服务端的数据更新包数量(只对客户端本身控制),而sv_maxupdaterate就指定了服务端每秒发送多少数据包到客户端上(对服务端进行控制)。因此,客户端cl_updaterate的数值设定比服务端sv_maxupdaterate的数值要高,是不能增加客户端接受的更新数据包数量的。

sys_ticrate:

这个命令设定了服务器每秒能处理的最大数据“帧”数。默认设定下,这个参数设置为100。为什么服务器的fps那么重要?这个参数决定了服务器的感应能力。我敢肯定我们都觉得服务器好像在TI-83 Plus(图形计算器)上工作一样,而我们就是在LAN上进行这些图形计算器的处理。

sys_ticrate只是指定你的服务器所能计算的最大fps。默认设定下,服务器不会达到你所设定的数值,因为运算系统可能在处理某些其他的进程。市面上有不同的加速("boost")服务器fps的软件,不过大多数(如果不是全部的话)服务器加速软件是靠网络服务器供应商处理的,记住,这样的加速会加重服务器CPU的负荷。(出于某些原因,在 de_inferno和de_aztec上用服务器加速软件的话,会剧烈增加CPU的负荷,大家可能曾经有过这样的体验。)在默认设置下,Half- life服务器,基于Win32的服务器一般在64fps,而基于Linux的服务器一般在50fps。如果使用加速软件的话,可能可以提升到 512fps或者更高。这么高的服务器fps是受到争议的,不过我感觉如果在200fps左右就能感觉到明显的改进了。

一致性才是关键的。Fps从100飙升到512,这样可能会带来一个更差的游戏环境,因为sys_ticrate只在150左右,150是大多数服务器硬件所能承受的了的。

如果你有一个服务器的权限,而且想测试一下服务器的fps,那么在控制台输入rcon stats,看看你的服务器是否加速了:暂时地把sys_ticrate调到10000,然后在看看服务器的fps是否超过100,如果超过100,那就是加速了的。

ex_interp:

在解释这个参数之前,我们看看Webster字典对interpolate(添加,改写)这个词的解释.
(以下是Webster字典的解释,译者这里不将原英文去掉,是让大家容易看到原有的解释)
Main Entry: in·ter·po·late
主要条目: in·ter·po·late
3 : to estimate values of (a function) between two known values
3 : 评估两个已知值之间的量的关系
intransitive senses : to make insertions (as of estimated values)
不及物动词:进行插入(到已评估的值之中)

每一秒你只能从服务器获得有限的更新,因此是不可能每次都那么精确地及时地与服务器达到同步。举个例子:

下面的图形显示的是圆的线性内插法。当数据点(更新数据包)的数量增加的时候,则插入的量则变得更加地准确。在CS中,你可以将这个比喻成在一秒内一个人物位置变化所跨越的范围。在服务器看来,这是一个精准的圆圈,而从客户端就需要在两个“真正”的数据包中插入一定的数据。

(IMG:http://bbs.esai.cn/uploads/post-7-1082714891.jpg)

这就是ex_interp作用所在。在每一个更新包之间都会有一个很小的时间增量存在,这个时间由half-life的预处理系统计算。ex_interp 设置了在每两个连续的更新之间的插入数(时间单位是秒)。在上面所看到的图象中,这些小的时间间隔会表示为图象的直边。因为插入值的处理是在客户端进行的,所以在服务器看来并不是完全的同步的。没有什么可以代替从服务端发出的真实的数据更新包,不过插入值的计算在大体上还是能达到要求。(译者注:感谢 inbremen找到的图片)

------------------------------------------------------------------------------------------------

对线上游戏(互联网对战)的推荐值:

rate
我之前已经假设rate的数值为20000。把它调到20000以上不会有任何的改善,还可能会造成更不好的影响。

推荐值:
rate 20000.

sv_maxrate:
这个值在大多数的情况下设置为0。我会解释一下为什么在线上游戏时这并不是个理想的数值。sv_maxrate 0 会检测每一个客户端rate的设置,并尽量满足每一个玩家的需求。假设对half-life引擎来说每一秒允许玩家使用的rate参数的数值超过 20000。如果有一个玩家将这个数值设定为一个超高值(比如:999999999),那么服务器会尽量的去满足这个玩家的需要。那么这样会潜在的浪费带宽,并且会对服务器造成更多的负担,也许会超过服务器所能承受的范围。因此,我提出一个比较安全的建议,sv_maxrate在20000的时候会有比较好的表现。在现实中,sv_maxrate 0和sv_maxrate 20000的效果对游戏的进行而言可能都是一样的,不过提高一些预防的范围总是好的。

推荐值:
sv_maxrate 20000.

cl_cmdrate:在理想情况下,这个数值应该和服务器的fps是相等的(不是有些人所认为的客户端的fps)。如果你对服务器的更新超过了在同一时段内服务器所能处理的帧数的话,多余的更新包会被服务器所丢弃。因此,cl_cmdrate设置得太高会有不好的效果,直接造成带宽的浪费。

推荐值:
cl_cmdrate与服务器的fps值相等或者稍高。

ex_interp:
把这个参数设为0或者什么都不写。CS会自动的把ex_interp设置为1/cl_updaterate(比如你的console窗口会显示 “ex_interp forced up to xx msec")。这就是你想你的客户端要进行插入的时间长度。改变cl_updaterate会自动地改变ex_interp(当ex_interp=0时发生)。因此我推荐只改变cl_updaterate,让CS去设置你的ex_interp。现在已经不可能把ex_interp设定得比 1/cl_updaterate更低了,把它设定得高一些却会产生错误。设置一个比1/cl_updaterate更高的值会造成你开枪的时候打在屏幕中人物的后面(译者注:就是实际上你并没有打中人物,而只打在他的后面)。举个例子,如果你用cl_updaterate 101,那么ex_interp应该是1/101=0.009(9毫秒),那么使用默认的ex_interp 0.1,而cl_updaterate还是这么高的话,那么之前所说的错误就会产生。

推荐值:
ex_interp 0

cl_updaterate:长期以来,大家都认为cl_updaterate的规定是在101,这样能使你获得少量的"choke(阻塞)"。Choke可以用命令net_graph 3看到。个人认为,choke是我不会考虑的东西。其实cl_updatarete的最佳值是很复杂的。CAL的服务端的config提供 sv_maxupdaterate为101,那么很多人会总结为我们也应该把cl_updaterate设置为101。在理想的状况下,这是正确地,不过在实际情况下,并不是那么有用。在北美,大多数的服务器都不能负荷每秒100帧的运算,这就意味着服务器无法发出每秒100个更新包,而玩家们就会觉得很 “卡”了。由于我们从客户端如果没有远程控制密码(远程控制权限)的话是无法窥探服务端的fps的,如何选择最适当的数值就像猜谜游戏一样了。你可能会说,“好吧,那就把cl_updaterate设置为101就不管了,我会获得服务器给我更新的最大值。”问题就在忽视了cl_updaterate对 ex_interp的影响以及两者之间微妙的平衡关系。寻找一个适当的cl_updaterate值(记住要把ex_interp先设为0),从101开始逐渐减小,你会发现人物只是“微小的闪动”(译者注:原文是“slightyly skip around”,从实际操作来看,我们可以看到人物的重影,就像闪动一样,我就把它翻译成“闪动”了)。“微小的闪动”是优先的选择,只要 ex_interp等于1/cl_updaterate,那么人物就会在应有的位置上出现。在不同的服务器中游戏你都要改变cl_updaterate。如果必要的话,把它设置低于50也不要担心。预处理系统会发挥好它的作用的。备注:大多数的公众服务器都会使用默认的sv_maxupdaterate 30,那么在那种情况下,cl_updaterate就最好了。

请注意,从一个低的cl_updaterate数值(比如说20)逐渐增加是不行的,一旦你把它设定得更高,ex_interp是不会重新设定的,你需要不断手动地将ex_interp置0。这里我提供一个简易的脚本给大家调整你的cl_updaterate。

点击这里下载config

推荐值:
cl_updaterate应该与服务器的fps相等,不应该超过服务器的sv_maxupdaterate数值

sys_ticrate:
找合适的sys_ticrate就需要进行一些实验了。首先,如果你的服务器没有被加速,提高这个数值并超过100就不会有任何效果。如果你正好租用了一个高性能的服务器的话(你的服务器可能已被加速),那么你就有空间这么做。总体上来说,服务端有更高的fps是一件好事,提高sys_ticrate超过 200(或者比200低)是毫无效果的。如果把sys_ticrate设为9999,你的服务器fps会根据现有的情况在150到1000之间不停的跳变,把sys_ticrate设定为低于200的数值会有一个更一致的环境,不过会对服务器的性能有所减弱。同样的,在一个物理服务器(一台电脑或者服务器主机)上都可能运行不同的HLDS(Half-Life Dedicated Server),那么如果每一个HLDS都把sys_ticrate设为10000的话,服务器的CPU的负荷就相当大了。这样的情况下,会潜在地造成在那台物理服务器上的性能的下降(也可能提高你每月的租用费用)。最后,服务器的fps只会在某几个数值上作用,举例来说,我的服务器fps只在85, 102,128,170,256等数值上,而不是在他们之间(比如91)。如果你把sys_ticrate设为100,你的服务器fps最大值就会在 100以下(比如85),因此,设定sys_ticrate大于目标fps数值约20到50左右比较合适。

推荐值:
sys_ticrate 110-180,结合你的服务器性能考虑。

------------------------------------------------------------------------------------------------
关于局域网对战的备注:

局域网对战,比如the CPL,cl_updaterate设置为101,这与局域网服务器的质量有关。通常在LAN上,只有一小部分的服务器会在虚拟盒中运行,因此服务器使用更少的资源。如果服务器都加速超过了100fps,那么cl_updaterate 101就是一个非常理想的数值。判断一个LAN服务器最快的方法就是看看玩家们ping的平均值。一个运行在50到64fps的默认服务器,在LAN下的平均ping值为15ms,而加速过的服务器会使ping值下降,大概在5ms左右。据我所知,the CPL,ESWC还有WCG都是使用加速过的服务器的。

------------------------------------------------------------------------------------------------
特别感谢:
Alfred Reynolds, Valve Software
Yahn Bernier, Valve Software
Zibbo, UDPSoft
The HLDS Mailing Lists
The server.counter-strike.net forums
―――――――――――――――――――――――――――――――――――――――
译者后记:
翻译实在是一件郁闷的事情,遇到了很多专业的名词,发觉自己的水平还是需要提高,如果大家觉得不好理解,那可能是本人的知识水平还是有限,希望大家指正。文中有很多知识可以让大家去参考,不过要记住,只是参考,因为这并不是一篇官方的文章,也是别人自己的经验总结,但愿我们很多朋友,尤其是管理服务器的OP 们能够看看这样的文章,这样我们的游戏环境会更好。非常感谢inbremen找到的图片和config。
再次声明,原文的版权归作者本人和Gotfrag Prime!所有,翻译整理版权由本人以及Esai论坛所有,转载请联系本人或者Esai论坛管理员。
有任何关于文章的问题,或者一些技术性的问题,可以发email给我
本人邮件地址:faq_ghostcorn@esai.com.cn

PING高原因有下面几点:

1。家庭使用的猫(ADSL),都是送的猫,质量不可靠,发热量大。现在网络升1M,送 的猫又不一样了。

2。个人--无-宽带路由器-连入网络,因为猫ADSL拨号要消耗你的CPU资源,所以机器不行的时候
就出现PING值变高,可以用优化软件优化ADSL猫,不懂可以参照 (www.167bt.com/bbs/viewthread.php?tid=3741)

3。建议购买-宽带路由器-,一台宽带路由器可以并联四台电脑,无需拨号,建议的品牌有
TP-LINK410--估价130元(标称可以带动150台电脑),我们局域网玩时PING在5-- 15。
4。由于ADSL连入网络时,都由服务器自动分配IP地址,服务器的更新换代并不是所有的机器,有时给你连入的是老机器,PING值就忽高,也许你连入的服务器用户太拥挤,也会产生这种现象。
5。使用宽带路由器或者ADSL猫,本身都有软件在运作,长时间的连入会导致包丢失,解决的办法就是关掉猫的电源1-2 分钟,重新插上,会使猫初始化,相当于机器重起。
6。多尝试连接几次,由于IP的接入并不是都最快的。对于固定IP可以申请快速通道。
以上个人见解,无需技术性指导,通俗易懂,如有好的建议请发贴,希望大家玩得愉快。 -zhenji
em02.gif em02.gif

回答2:

PING实际上界于跟服务器上的速度连接,,其实并不是网速快了延迟就一定下降,相反,服务器会根据网速的平均速度来加以调整,换言之,512KB/S的ADSL架设的服务器,相对于同等网速的玩家延迟不会很大,反而,1M/S的会相对增加一些,不信你可以再找个服务器试试,服务器网络速度一样的,PING会很低,你的网速太高或者太低也会导致PING的上升。建议你找个网速快点的服务器连,这样PING会低的

回答3:

如果从新接入网络,ip就会改变。除非你买下了一个固定的ip,即使这样,ip也有出错的时候,比如被别人非法占用等,你可以联系一下网络运营商,让他们给你解决。网速慢原因很多,我估计是你的光模块信号转换模式设置错误或者就是上端机房的原因。

如果是猫上或者有路由器,那设置自动获取救行了,不过你的本机要设好网关,子网掩码和dns,如果你有了固定ip,那就要手动填写ip,子网掩码,网关,dns.以上操作需要你在网上邻居中新建连接方式,然后在连接方式的属性中设置.

如果你没设定IP,那你上网的时候就是被随机分配一个IP地址,这个地址是会变的,玩CS延迟高是很正常的,不过如果你那都是500多就不太正常了吧?

回答4:

你的状况我也出现过,我家原来1M 现在是2M 进服务器原来20-30 现在60+ 如果不是平台的跳PING问题,那估计就是:512K一般很少人用,所以网络不拥挤,1M-2M也是一样,我家原来1M现在2M,比1M时候掉线率大,这就是网络拥挤的原因,这个是听给我按款待那人说的,其实你要玩网络游戏512K和2M没多大区别,网速快只占了小部分的延迟,网速主要是为了下载东西速度能快点,其实玩游戏512K和2M几乎是没有区别,如果觉得卡,那就是电脑的配置问题...本人知道不多,只能帮到你这些,不要笑我,呵呵~~

回答5:

专业的CSer的讲解你看看吧一定有帮助。
http://games1.sina.com.cn/cgi-bin/games/downgames/download.pl?col=movie&aid=78216&title=%A1%B6CS%BB%A8%CA%BD%BC%BC%C7%C9%A1%B7%D6%AE%D6%D5%BC%AB%BD%C5%B1%BE%D3%C5%BB%AF&author=%D0%C2%C0%CB%D3%CE%CF%B7&filename=http://202.102.249.57/down/11.wmv&size=26,200