找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3978|回复: 3

[转帖]cs ping值参数优化

[复制链接]

该用户从未签到

发表于 2006-8-18 01:59:00 | 显示全部楼层 |阅读模式 来自 Reserved
关于准星扩散 弹道飘动的参数修改rate
cl_updaterate
cl_cmdrate
这三个参数是影响到你NET GAME时弹道问题的最大原因。

1.
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
有幾個參數是要調整的
fps_max
rate
cl_latency
cl_updaterate
cl_cmdrate
ex_interp
而台灣特有個512/64 ADSL(我SEEDNet)設定如下:
fps_max 100
rate 16383.999023
cl_latency -61.000977
cl_updaterate 30
cl_cmdrate 40
ex_interp 0.05
我不敢保證這個適用於每一個512/64ADSL玩家
但是這每一個數字設定都有我自己研究\推測而來的道理
fps_max 100
我想這參數大家應該都知道才對,這是HL引擎最高fps張數,這個跟你的螢幕更新率也有關
以前叫別人把顯示卡個"垂直同步"關閉....其實是錯誤的(會讓眼睛看不清楚)
rate 16383.999023
為什麼會有這麼奇怪的一個數字??就是你CS進入Internet Game選單右上角的下拉選單
這就是rate,HL預設只有幾個選項...而且都是整數...要調到像我一樣有小數點的請選擇Custom
再到console裡面自己輸入
cl_latency -61.000977
這是一個到HL引擎開發出網路新技術之後才有的一個參數(前身好像是有兩個參數組成的)
這個參數請使用"負"(不問為什麼)很多人都說這個數字是ping的負一或是負一半事實上是ping的最小值
是怎麼會有這一些數字的
首先你先連上一個internet server但是在連那一個server之前先點server info看看sv_maxrate 0是不是為零
確定進入遊戲裡面之後就要開始做一堆的反覆動作...
ESC
滑鼠點Resume
按 ~ 輸入新的數字
cl_cmdrate 40適用DSL
cl_cmdrate 50適用在區域網路LAN
大家都知道CPL的設定是cl_cmdrate 101大家也知道HL最高fps也只有100
所以這代表了你在CPL區網的電腦所做的每一個動作的完全的傳送出去,就算是達到fps 100,這也代表了你電腦的fps不會被網路"牽制住"
有在家玩CS的玩家都感覺我的電腦配備明明很高檔
但是為什麼用512adsl在家連到internet為什麼fps會依下子掉到很低一下子又可以保持100,滑鼠都移動的不怎麼順暢,準心都回縮的很慢
這時候你就要用cl_latency參數來補正你的game
fps_max + 1 - cl_cmdrate 就是這樣 101 - 40 = 61
但是記住cl_latency -要使用"負數"
也讓滑鼠接到網路牽制的影響降到最低!!
再來是cl_updaterate和cl_cmdrate
cl_cmdrate就已經提過了DSL就是用40所以不改變
開啟net_graph 3記住數字是三
你會看到loss和choke看到如果有choke就是降低cl_updaterate而最高也只能到40就是跟cl_cmdrate同樣的數字
512/64 ADSL下載可以高達50k但是上傳只有6k.......這麼大的一個差距我想大概也跟isdn差不多了
台灣好像沒有isdn但還是說說isdn的設定就是不對稱的類似56k數據機
isdn的設定是下面
cl_updaterate 31
cl_cmdrate 35
dsl
cl_updaterate 40
cl_cmdrate 40
如果是1.5M的ADSL我想就是定成40 40如果是512adsl我實驗的結果是cl_updaterate 30可以""和一個敵人對射擊時""不會得到choke 1
但是在平常,每一回合的一開始,死亡後,走動間,不瞄人實.....都會得到不等的choke
HL引擎真的利害只要你一接近敵人時你的choke就會停止,,,,真正和對方對射時才會開始計算你會不會得到choke
ex_interp 這個參數預設值是0.1你把他修正/改成0.05你打開net_graph 1你會看到下面藍色一直跑的槓會變的比較整齊且接近填滿/但不會超過
下面這個網址有好壞網路的圖表,把網路設定完成後...再去參考一下圖表...你就會知道為什麼要輸入0.05
http://guides.barrysworld.com/cs/tweaking/
至於要怎麼把設定好的資料保存,讓每次啟動就是自動套用設定好的數值
fps_max
rate
cl_updaterate
cl_cmdrate
這四個參數設定好後就會固定在config.cfg裡面不會任意改變
cl_latency
ex_interp
這裡個參數則是會關閉遊戲後又會回覆預設值
你必須把
這裡個參數你必須另外寫一個.cfg讓autoexec.cfg啟動或是直接寫在autoexec.cfg
-----------------------------------------------------------------------------
2.
这个问题本来就不是新问题了,如果是lan的话,cl_updaterate和cl_cmdrate
在Ethernet lan中的标准设置都为101
如果是Ethernet lan的话则可以设置为
rate "25000"
cl_cmdrate "101"
cl_updaterate "101"
如果说cl_updaterate=fps=101,
那么
服务端传送到client中的数据报率=client的刷新率
那么,服务端对client的响应是刷新率所决定的。
如果是lan, cl_cmdrate作为客户端传送到服务器中的速率与cl_updaterate相同,那么网络条件好的情况下,我们打cs是最流畅的
我所说的cl_cmdrate=cl_updaterate=fps只是其中的一种情况(其实就是指lan,没有说清楚,引起误会,不好意思)
如果针对不同的网络条件对服务器进行连接,那么可以有不同的设置情况。
ADSL 64/128
rate "9999"
cl_cmdrate "35"
cl_updaterate "45"

ADSL 256
rate "9999"
cl_cmdrate "50"
cl_updaterate "46"
ADSL 512
rate "9999"
cl_cmdrate "100"
cl_updaterate "60"
ADSL 2MB
rate "9999"
cl_cmdrate "100"
cl_updaterate "100"
3.
首先,肯定下面两点官方说明是正确的。
cl_cmdrate控制一秒钟内客户端向服务器提交的数据次数, 也就是客户端告知服务器玩家在一秒内干了什么
cl_updaterate控制一秒钟内服务器向客户端提交数据的次数, 也就是服务器告诉玩家现在整个地图中的变化情况(队友的行动, 敌人的行动)

为什么呢?我想大家应该有注意到这一点,CS中主枪开一发(甚至两发)以最快速度切换到USP,你再切换回来,会发现你的子弹“没有打出去”,弹夹中的子弹数量和你开枪前是一样的。而你打的那一枪有没有效呢?事实证明,那棵子弹完全有效。这种情况只出现在别人做SERVER,你加入的情况下。如果你做了一个listenserver,几乎不会出现这种情况。因为你自己是SERVER,自己和自己传输数据,不用那么曲折吧?但这里为什么说几乎呢,因为我试了20次,还是有一次成功了(如果不是我看花眼的话)
如果你JOIN到别的SERVER,那么这个试验成功率高达70%。很遗憾,在cl_cmdrate 10和
cl_cmdrate 100的情况下成功率差别不大。
造成这个BUG的原因,我想应该是由于有关数据包是先后发出的,1.打出子弹.2.切换.3.换成USP4.子弹数目-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也会达到正常的平滑程度。也就是说,你可以做到更精确。
  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;
  四,如何在有限定的服务器调整参数:
如果这两个参数选择默认值(也算是最小值吧) (20,30),这时,你会发现,cs里面所显示的ping值最低,但打起来的感觉却跟高ping没两样。比如。我的adsl(2.5M)用ping命令ping一个服务器,其平均在4X左右,如果用这两个值的话,cs里面竟然显示2x~3x的ping值,但这明显是不是实际值,打起来也感觉画面粘滞感很厉害,跟ping高时差不多,因此这肯定不是正确的适当的值。
下面我就给大家讲讲详细值的设定方法。
首先把这两个值设定为101,然后连入服务器。使用net_graph 3查看网络状况,如果loss 和 choke都为0,那么,你尽可以使用这两个值玩!
当这两个值经常大于0时,就开始把这两个值改小:cl_updaterate 对应的是 choke,cl_cmdrate对应的是loss!!
也许是由于网络状况的原因吧,我所去的服务器loss绝大部分都是0,因此cl_cmdrate 也就大部份时间使用101;但choke就不同了,不同的服务器,变化很大。这时,你会发现,调整cl_updaterate可以明显改善choke值。具体值的设定方法,,比如,你用101有明显choke,你可以降到50试试,如果还有,就-5 这样一点点减少,如果降到50 choke一直为0了,就试着+5这样一点点增大,直到偶尔出现choke这样就最好了。因此,这两个值,谁大谁小,实际没有什么绝对对应关系的,真正确定谁大谁小的是你本身的网络状况。
最后,给大家说明的是:这两个值的设定,以最小的loss和choke,最大的数值为最好。换句话说,在尽量使得choke和loss为0的情况下,cl_cmdrate 和cl_updaterate的值越大,玩起了的感觉最顺畅

该用户从未签到

发表于 2006-10-16 19:08:00 | 显示全部楼层 来自 Reserved
<>顶啊。CS达人/。</P>

该用户从未签到

发表于 2006-11-5 12:58:00 | 显示全部楼层 来自 Reserved
???<BR>

该用户从未签到

发表于 2006-12-24 17:41:00 | 显示全部楼层 来自 Reserved
用户已经被屏蔽。。。晕
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表