本文将深入探讨一些CS中有争议的关于网络的参数。网络参数是一个相对新的课题,那些顶尖的选手也是从1.3时代欧洲与美洲的激烈碰撞中才开始注意到的。在1.5的时代,选手们开始认真研究特定网络参数的意义。事实上,大多数人直接采用了别人的正确设置。尽管如此,到了1.6,Valve修正了代码中的一个错误,反而造成了更多的混乱。原来正确的设置由于Valve的反作弊程序(VAC)而不能发挥其效力。你们中的有些人可能由于我很久之前的那篇“ex_参数解析”的文章而记得我。
这个观点是通过两年来试验和观察累计而成的。近来有些事情使我提起了对网络参数的兴趣:网管强迫玩家使用错误的参数,局域网赛事中选手由于使用正确的参数而被取消资格等等。最近我通过和一位Valve员工之间的一系列通信而确认了本文中的大部分内容。(对于你们关于demo问题的那些疑问,Valve确实在研究解决方案。)要声明的是,本文所含内容不会使你成为另外一个“Spawn”,但是可以消除错误的对他人关于网络参数的指责并提供一个更加平衡的竞技环境。
下面,我将对我认为重要的网络参数给出一个概述并介绍一下其背景。然后我会给出网络参数建议值,并解释为何如此建议。
请注意:
以“sv_”或者“sys_”开头的参数是服务器端参数,如需修改必须用远程控制命令“rcon”修改。直接修改该参数将导致本地机器的参数被修改,而不是服务器上的参数。
“ex_interp”和“cl_updaterate”两个参数之间的关系极端重要,阅读下文关于其中任何一个的时候,也请阅读关于另外一个的部分。
本文阅读对象主要是那些用宽带上网的读者。
一般信息:
cl_cmdrate:
这个参数决定了每秒钟你--即客户端发给服务器多少个数据包。很显然,这个值越高,服务器对你执行的命令的响应就越快。如果你拥有宽带网并且是其唯一使用者,把此值设高对你没什么坏处。如果你和你的朋友在一处上网打CS,并且能感觉到经常出现延迟的现象,那么这个命令就是罪魁祸首。大多数的宽带(主要是ADSL)并不提供足够的上传带宽,而这恰恰是“cl_cmdrate”所需要的。
cl_updaterate:
“cl_updaterate”和“cl_cmdrate”颇为类似,只是反其道而行之。它控制的是每秒钟你从服务器端接收的数据包的数量。因此,它依赖的是你的下(和谐)载速(和谐)度。你的“cl_updaterate”值越高,你和服务器的同步率就越高。既然只有服务器能决定你是否打中了,你当然希望收到足够多的数据包以保持和服务器同步。
sv_maxupdaterate:
如同“cl_updaterate”控制每秒钟客户端发给服务器端的最大数据包数量,“sv_maxupdaterate”就是每秒钟服务器端允许客户端接收的最大数据包数量。因此,把“cl_updaterate”设置的高于“sv_maxupdaterate”是毫无意义的。
sys_ticrate:
这个参数设定的是每秒钟服务器将计算出的帧数。默认值是100。为什么服务器的FPS(每秒钟的帧数)重要呢?这个参数本身决定了你在这个服务器上的感觉。我肯定我们都有过这种经验:有些服务器好像是架设在“深蓝”(或者曙光?龙芯?呵呵)上,而我们就好像是在局域网里打比赛一样。
这个观点是通过两年来试验和观察累计而成的。近来有些事情使我提起了对网络参数的兴趣:网管强迫玩家使用错误的参数,局域网赛事中选手由于使用正确的参数而被取消资格等等。最近我通过和一位Valve员工之间的一系列通信而确认了本文中的大部分内容。(对于你们关于demo问题的那些疑问,Valve确实在研究解决方案。)要声明的是,本文所含内容不会使你成为另外一个“Spawn”,但是可以消除错误的对他人关于网络参数的指责并提供一个更加平衡的竞技环境。
下面,我将对我认为重要的网络参数给出一个概述并介绍一下其背景。然后我会给出网络参数建议值,并解释为何如此建议。
请注意:
以“sv_”或者“sys_”开头的参数是服务器端参数,如需修改必须用远程控制命令“rcon”修改。直接修改该参数将导致本地机器的参数被修改,而不是服务器上的参数。
“ex_interp”和“cl_updaterate”两个参数之间的关系极端重要,阅读下文关于其中任何一个的时候,也请阅读关于另外一个的部分。
本文阅读对象主要是那些用宽带上网的读者。
一般信息:
cl_cmdrate:
这个参数决定了每秒钟你--即客户端发给服务器多少个数据包。很显然,这个值越高,服务器对你执行的命令的响应就越快。如果你拥有宽带网并且是其唯一使用者,把此值设高对你没什么坏处。如果你和你的朋友在一处上网打CS,并且能感觉到经常出现延迟的现象,那么这个命令就是罪魁祸首。大多数的宽带(主要是ADSL)并不提供足够的上传带宽,而这恰恰是“cl_cmdrate”所需要的。
cl_updaterate:
“cl_updaterate”和“cl_cmdrate”颇为类似,只是反其道而行之。它控制的是每秒钟你从服务器端接收的数据包的数量。因此,它依赖的是你的下(和谐)载速(和谐)度。你的“cl_updaterate”值越高,你和服务器的同步率就越高。既然只有服务器能决定你是否打中了,你当然希望收到足够多的数据包以保持和服务器同步。
sv_maxupdaterate:
如同“cl_updaterate”控制每秒钟客户端发给服务器端的最大数据包数量,“sv_maxupdaterate”就是每秒钟服务器端允许客户端接收的最大数据包数量。因此,把“cl_updaterate”设置的高于“sv_maxupdaterate”是毫无意义的。
sys_ticrate:
这个参数设定的是每秒钟服务器将计算出的帧数。默认值是100。为什么服务器的FPS(每秒钟的帧数)重要呢?这个参数本身决定了你在这个服务器上的感觉。我肯定我们都有过这种经验:有些服务器好像是架设在“深蓝”(或者曙光?龙芯?呵呵)上,而我们就好像是在局域网里打比赛一样。
