现在没时间打CS了,但不时的也激情一下。回想起曾经跟兄弟们一起激情的那段时光,甚是怀念啊!
有时进入一个CS1.6 的F,弹道非常之差,枪械非常之难用,无奈任人蹂躏-_-!。实际上,网络参数对枪械的弹道影响非常之大:
ex_interp 0 (时刻保持为0)
rate 20000 (微调,直到没有choke为止。一般20000适宜,高于20000没意义?)
cl_cmdrate 105 (微调,net_graph 3观察choke)
cl_updaterate 101 (起始101,逐渐降低,net_graph 1观察,直到黄色的点线很少,30可能值)
cl_cmdrate
cl_cmdrate 每秒客户端向服务器端发送数据的次数。
理想状态下,这个值应该等于服务器的fps值,不是客户端的fps。先设置为105开始,看有没有choke(net_graph 3查看),并逐渐降低,使choke减小。
cl_cmdrate起始值可以设置的更大,如300、400。但cl_cmdrate越大,则占用的带宽就越大,会直接很明显的影响ping值。这就要在cl_cmdrate与ping之间有个权衡。
若cl_cmdrate设置的比客户端的fps值还小,则net_graph 2中的最底部会产生一条由细小的红点组成的直线。一般最好比自己客户端的fps值高5,这样会保证客户端向服务器端尽量发送更多的数据。于是得出了105.
cl_updaterate
cl_updaterate 每秒钟客户端从服务器端接收数据的次数。
理想状态下,这个值应该等于服务器端fps值,不能超过sv_maxupdaterate。但除了服务器的OP外,我们无法知道sv_maxupdaterate值。而很多服务器采用sv_maxupdaterate的缺省值为30。 所以,我们先设置cl_updaterate默认值101,然后net_graph 1,观察是否有很多黄色的点生成的点线。若有,则说明当前的cl_updaterate值,大于了服务器端的sv_maxupdaterate,即客户端准备接收的数据包比服务器端发送的大,则超出的数据包,CS只能通过预测引擎来预测。预测的越多,将使整体越不准确。
然后逐渐降低cl_updaterate值,直到黄色的点线很少,甚至消失为止。注意,这个过程中一定要保持ex_interp 0。
技巧:
由于有些服务器端采用的sv_maxupdaterate就是默认的30。所以此时cl_updaterate 30最佳。
ex_interp
interpolate为插值之意。服务器发送过来的两个数据包之间的这个间隔,成为一个真空期。客户端程序的预测引擎(prediction engine)在这个真空期间,会根据前面的数据包的数据(比如位置)来推断当前需要用来显示的数据(位置)。
ex_interp设置的是在两个连续数据包之间隔多长时间插值一次,其单位是秒。
时刻保持ex_interp 0
ex_interp = 1/cl_updaterate。当ex_interp 0 时,表示让程序根据cl_updaterate而计算ex_interp,这个值才是最准确的。
rate
rate为服务器端每秒钟可向客户端发送的最大字节数。
我们要逐渐增大rate ,直到没有choke为止。一般20000适宜,据说设成20000以上是没有任何意义的。
微调cl_updaterate 脚本:
//Updaterate Cycle Script
//Information
//Cycles updaterate from 101 to 30 in a loop.
//Everytime you press the bound key, your cl_updaterate is decreased by 10.
//Usage
//1. Put updaterate.cfg in your cstrike dir.
//2. Bind a key to updatexx.
//3. Type exec updaterate.cfg in console (or put it in your autoexec.cfg or userconfig.cfg).
bind j "updatexx"
alias updatexx "update101"
alias update101 "cl_updaterate 101; ex_interp 0; alias updatexx update90"
alias update90 "cl_updaterate 90; ex_interp 0; alias updatexx update80"
alias update80 "cl_updaterate 80; ex_interp 0; alias updatexx update70"
alias update70 "cl_updaterate 70; ex_interp 0; alias updatexx update60"
alias update60 "cl_updaterate 60; ex_interp 0; alias updatexx update50"
alias update50 "cl_updaterate 50; ex_interp 0; alias updatexx update40"
alias update40 "cl_updaterate 40; ex_interp 0; alias updatexx update30"
alias update30 "cl_updaterate 30; ex_interp 0; alias updatexx update101"
参考资料:
http://www.gotfrag.com/cs/story/30057/?spage=2
翻译:
http://bbs.pcgames.com.cn/topic-1932529.html
http://www.etcwiki.org/wiki/Counter_Strike_Source_lag_choke_loss_and_ping
http://www.overclock.net/pc-games/513495-info-counter-strike-1-6-net.html
http://forums.steampowered.com/forums/showthread.php?t=781721
[2011.09.09]
又去逛了下这个帖子,找到一个SK-Gaming论坛发的帖子,一个叫“spleen ”的同学说,他们找到了CS1.6弹道不好的根本原因,是“Client.dll”这个文件的问题,他们用“Condition Zero Deleted Scenes”(CS零点行动) 里的Client.dll替换了CS1.6中的文件,发现解决了弹道不好的问题:
http://www.sk-gaming.com/forum/2-CounterStrike/2305968-GAME_PLAY
先确保麦克风没有被静音:
首先显示麦克风音量选项: 双击小喇叭,选项—属性,打钩“麦克风音量”。且没有被静音。
然后双击小喇叭,高级,一定要选中“麦克风加强”。之后,CS中的麦克风声音就很大了,效果非常明显!
原因是无法连接steam在美国的服务器以获取列表,而IP列表文件为platform\config\MasterServers.vdf。我们只要更新最新的IP列表即可。到以下网站可以更新最新的IP地址:http://css.setti.info/masterserver/masterserver-instructions/
使用Hamachi创建好网络,与对方建立连接后,更改VPN alias,将对方的IP改到自己Hamachi 网络连接的IP段内,这样将会把对方Hamachi 的IP映射到自己Hamachi 的IP地址段中,于是就组成了虚拟局域网。否则, CS1.6在连接局域网服务器时,会弹出错误“LAN servers are restricted to local clients (class C).”。因为局域网服务器IP与连接端CS的IP在不同网段中。修改步骤:
右键点击对方连接名 - 详细信息 - 设置 - VPN alias 更改,填入自己Hamachi网络连接自动分配的IP的地址段即可。
启动CS1.6后,使用IP命令设置CS程序的IP(默认localhost),将CS设置到Hamachi网络连接的IP。否则,对方CS1.6无法在“局域网”中查看到自己建立的服务器。
若连接对方服务器显示“Invalid cd key”,则应为CS的内核版本问题,推荐使用相同的3266版本。