CS弹道的详细分析<3>!
3.
首先,肯定下面两点官方说明是正确的。
cl_cmdrate控制一秒钟内客户端向服务器提交的数据次数, 也就是客户端告知服务器玩家在一秒内干了什么
cl_updaterate控制一秒钟内服务器向客户端提交数据的次数, 也就是服务器告诉玩家现在整个地图中的变化情况(队友的行动, 敌人的行动)
那么在游戏中我们打开net_graph 3来测试。
很显然,IN和cl_updaterate有关,out和cl_cmdrate有关。
调低cl_updaterate,IN数据流量降低。
调低cl_cmdrate,IN和OUT数据流量同步降低。
调低FPS,IN和OUT数据流量同步降低。
第一种情况很正常。
第二种情况我想应该是由于客户端向服务器提交数据次数降低,那么服务器判定客户端
的带宽比较低,因此也降低了对客户端的传输数据频率。
第三种情况也很容易理解,每秒客户端画面刷新率降低,相应要求的数据量肯定要降低。
我想所有的玩家关心这些参数的原因是这些参数改动是否能够影响自己CS的水平,会不会改变弹道?会不会增大延迟?会不会。。。?
按骗人不眨眼兄的说法,9发子弹有可能只起到3发的效果,我觉得是不可能的,从我掌握的情况来看,U-DRAGOON的说法是基本正确的。
U-Dragoon 在 Re:....updaterate和cmdrate的实验报告------!!!看不得!!! 中提到:
我认为cmdrate控制的每次发送数据都相当于一个关键帧,而子弹的发射都是存在于关键帧上,那么,cmdrate降低带来的数据流量减少应该是
游戏细节的损失,子弹发射这样的关键数据不应该被省略掉。损失的细节则由服务器来进行插值计算。
为什么呢?我想大家应该有注意到这一点,CS中主木仓开一发(甚至两发)以最快速度切换到手木仓,你再切换回来,会发现你的子弹“没有打出
去”,弹夹中的子弹数量和你开木仓前是一样的。而你打的那一木仓有没有效呢?事实证明,那棵子弹完全有效。这种情况只出现在别人做SERVER
,你加入的情况下。如果你做了一个listenserver,几乎不会出现这种情况。因为你自己是SERVER,自己和自己传输数据,不用那么曲折吧?
但这里为什么说几乎呢,因为我试了20次,还是有一次成功了(如果不是我看花眼的话)
如果你JOIN到别的SERVER,那么这个试验成功率高达70%。很遗憾,在cl_cmdrate 10和
cl_cmdrate 100的情况下成功率差别不大。
造成这个BUG的原因,我想应该是由于有关数据包是先后发出的,1.打出子弹.2.切换.3.换成手木仓4.子弹数目-1。前三个步骤的数据包都发出去
了,第四个数据包被忽略了。由此看出,计算子弹数目的数据包优先级是很低的,而有关子弹发出的数据则是关键的。
再看另外一个BUG,如果你在别人的SERVER里,用USP+AWP对着墙打就可以发现。如果以尽量快的速度猛扣3木仓USP再马上切换出AWP开一木仓,你会
发现AWP一木仓打出了2-3发子弹,墙壁上有5-6个弹孔。而实际上应该发出了4发子弹。原因呢,请各位思考一下,但和上面的例子不尽相同。
我举这个例子是为了说明子弹发射作为关键帧的重要性盖过了其它的数据。
再举一个证明服务器进行了插值计算的例子,如果你有录过DEMO就会发现,如果cl_cmdrate和cl_updaterate比较低的话,虽然你玩的时候感觉
画面是平滑的,但用playdemo播放你录的DEMO就会发现,DEMO一顿一顿的。但是你用VIEWDEMO播放呢,感觉如何了?又变平滑了。这就是因为
VIEWDEMO对DEMO的播放过程进行了插值计算,使其变的平滑。
同理,你打的时候之所以平滑也是因为服务器进行了插值计算。实际上,你的DEMO才真正反映了你当时的情况,只不过你被“幻象”所蒙蔽了
。那么由此可想而知,你的木仓瞬间在你眼里是指在他身上的,但是在服务器的“眼里”是吗?那就难说了。
而如果cl_cmdrate和cl_updaterate足够高,你的DEMO也会达到正常的平滑程度。也就是说,你可以做到更精确。
说了这么多,其实以最简单的思路来看。以上两个参数低,则每秒接受和发出的数据量都低,那么就必定有数据被忽略,就必定会影响游戏的
效果和精确度。
而现在你也知道FPS对你CS水平的影响不仅仅在于准心回复的速度了吧?
所以我建议cl_cmdrate和cl_updaterate还是在100的好,fps_max呢,如果你的显卡和CPU足够好(MX400至少要搭配athlon 1600xp,显卡再高档
呢,CPU就可以降),设置为100,但如果不够好,比如你是tnt2那就60好了,MX200用71比较合适,否则得不偿失哦。
4.
cs的网络参数调整指南!
一,512/64ADSL:
cl_updaterate和cl_cmdrate的差是要看网路的特性来调整,当你在开net_graph时你应该会看到有几个跳动非常快的数字in、out,你会看到in
后面的数字跳动的非常快!!而out比较稳定比较少变动,in就是你看到其它人传给你的资料(敌人的位子敌人开木仓),out就是你传给其它人的资
料,(你开木仓你的位子);你一定会想说那HL几乎都是"射击"游戏应该out要比in多,不可能敌人走路比我开木仓还快吧!!造道理来说应该是这样不过
以"电脑的特性""网路的特性"来说不太一样.
512/64ADSL我的设定
fps_max 100
rate 16383.999023
cl_latency -71.000977
cl_updaterate 30
cl_cmdrate 30
ex_interp 0.05
其实cl_updaterate和cl_cmdrate要设定成一样的数字,如果cl_updaterate设的稍低一点的话,你net_graph里面的out就有可能大过in,当上
面的情况发生就是你网路接受的资料不足!!(接受的资料就是敌人的位子)这也就是LAG。
像56k在HL里是传输很慢的网路(几乎都是在下载),所以cl_updaterate和cl_cmdrate要设定一个"差"才可以让56k有一点上传,所以56k的设定
是20和30。
但是ADSL是一个高速传输的网路,虽然台湾特有64ADSL把上传限制的很低64k,不过整体上下传是很快的,所以如果你照的56k的设定20和30你会
发现,很多时候你的out会大过in,所以应该要补正成30、30。
cl_cmdrate这个参数是控制你整体网路的上下传,如果你是56k的话设定成30而512ADSL上传也只有64k(事实上是不到),所以512/64ADSL的
cl_cmdrate设定成30然后为了要补正ADSL的网路特性所以把cl_updaterate加大到30(跟cl_cmdrate一样),因此得出:
512/64ADSL:cl_updaterate 30、cl_cmdrate 30
________________________________________
二,1.5M ADSL:
上传好像可以达到384k(还是一样实际上是不到)就可以把cl_updaterate和cl_cmdrate设定到40,但是以ADSL特性的话顶多到40如果是Cable就
可以设定的更高50 50 (甚至再更高)....LAN的话就可以像CPL设定到101 101。
________________________________________
三,教你怎么在有设sv_maxrate的server上面玩进量不得到choke!
再来是如何上有设定sv_maxrate的server尽量不得到choke,有设定sv_maxrate几乎都是设定在8000以内。
之前就有提到过rate后面小数点设定成0.000521这是一个会自动改变的数字,我测试的结果在rate 8100上下....后面的0.000521会改变成不同
的数字,像我的电脑rate 8100以上的话0.000521会改变成0.000977,如果是以下的话0.000521会变成0.000488;
所以当一个server sv_maxrate是8000的话把rate设定成7999.999521,7999.999521会自动改变成7999.999512。
0.000521 + 0.000488 = 1
刚好补正到8000满server最大的rate你就会得到最少的choke,记住小数点后三位要是0.999后面的521才会变成512;我实验的解果是没有0.999
的话7999.000521就会变成7999.000488,因为server有调节/限制!!....所以就算别人传给传给你最大的资料也只会有8000。
如果你还是有得到choke的话.....不是server有特别另外设定过,不然你就要调整你的cl_updaterate降低。
如何在有限定的服务器调整参数:
如果你512/64ADSL有设定好的话你会"非常明显"!!!的看出一个server有没有动过手脚和有没有超出负荷,你把ex_interp 设定成
0.05..........等server人数全满+一个回合的一开始(就是每有一个人死每一个人都在动作)时,你就会看出不同的异状@@
net_graph下面蓝色一直跑的杠应该都要在标准以下,不应该有突出变成红色的!!一个红"越凸出"代表LAG越严重
像我看到有些动过手脚的server,就算server只剩两个人那个红色大丁(LAG)特别凸出还是持续着,这样的一个很小的LAG方式是在游戏中感觉不
到的,如果那红色的凸出比较小的话
一个红色的LAG代表的是...........ping突然变高一点,进来的资料in变少一点!!这是很严重的!!
因为HL server要收集server上每一个玩家的资料,在传送到每一个玩家的电脑,所以你看到其它人的资料都是经过server再传送给你,HL的网路
新技术server已经占了很重要的地位,以前的HL server就只是像proxy server,现在的hl server会处理一个玩家们的资料,让ping比较高的玩
家(如ADSL玩家)得到更公平的Game,一般server是比较不会有很严重的大丁LAG(就算是有超出一点server负荷)..........会有很严重的大LAG
几乎都是有人在server上动手脚。
如果你的cl_updaterate和cl_cmdrate没有设定好的话,你是"绝对"绝对看不出一个server的网路状况。
------------------------------------------------------------------------------------------------