新浪游戏 | 新浪首页
新浪首页 > 游戏世界 > 游民论谈 > 文章内容
用小猫的悲哀~~~~~~~~~~~~
游民部落网友卖菠萝的

      CS与DF的网络延迟对比分析:

      DFer知道网络延迟越大,射击目标的提前量就越要加大。但是在CS里面不用打提前量,至少是子弹飞行时间是不用考虑的。这是为什么?我从数据处理来分析:

      网络游戏需要服务器与玩家自己的客户机通过网络来交换数据,有些数据是服务器提供给玩家的,比如游戏人数、比分等,有的数据是玩家向服务器提供的,比如行动的位置等,也有的数据无须交换。这里详细对比CS与DF的数据交换。

      CS中,玩家更换武器是要向服务器申明的,就是说你要换刀,先按下1键,然后你的机子通过网络告诉服务器要把刀,服务器听到后,同意给你把刀用用,也同时告诉其他玩家你换刀子了。要是有网络延迟就会造成短暂的停留,所以你感觉INTERNET上换武器没有LAN里快。买武器也是这样,你不是在自己机子上得到的,那是服务器“传”给你的。CS里面还有好多事情都要先给服务器提出申请才能进行…………为什么要这样设计?最好的答案:防止作弊。

      但是,你的跑动和开火数据是自己机子处理后才给服务器的。要是你按了W,还要像上段所讲的那样交换数据那么行动绝对不会流畅,所以你的机子只是告诉服务器自己在那个XYZ座标就行,然后服务器就像中介机构一样把你的XYZ数据给其他玩家,其他玩家的相应数据也通过服务器给你。要是你与服务器传输延迟=300ms(毫秒),其他人与服务器的传输延迟=50ms,会造成什么要的情况?你看见的人是300+50ms前的,别人看见的你也是350ms前的。要是有人突然出现在自己的屏幕上,那是300ms前的事了,他所在的位置是350ms前的了,此时你看见他向你开火那也是350ms前的事了……人眼神经感知目标——>大脑确认——>手部肌肉按键开火的反应时间最快也要200ms,要是你移动老鼠去瞄准又要耗去300ms……只要2人实力相当,这300ms的差距足以干掉你!

      最不公平的是死亡验证数据的处理!你击中对方的伤害值数据是在自己的机子上完成的,然后传给服务器,再中转给对方,告诉对方“你被我打中了,减了XX的HP”。双方同时开火的时候,数据同时向服务器传递,当你机子向服务器传输“我减了他40HP”,同时对方的机子向服务器传输“我干掉他了”,由于你的传输延迟大于对方,对方的数据先行一步到达服务器,服务器马上判断——“你死了,当GHOST去!”同时中断你向服务器传输的一些数据(可怜的伤害值数据就包括在内!!天啊)……啪,你倒下……对方踩着你的尸体过去了,你此时在想“不可能,怎么不死啊?”,对方却在暗笑“呵呵,这个家伙好笨,半天才开火,那么近居然还没有打中。”“55555555555,冤枉啊~”你的GHOST在大喊。作者语:“兄弟算了,回去打BOT吧。”

      DF中,许多数据处理都在本机上完成,再传输给服务器中转。但是经常出现打的人冒血就是不死的情况,这是怎么回事?呵呵,那也是网络延迟带来的结果,子弹是否命中对方不是在自己的机子上判断的,也是交给服务器处理。但是处理方式与CS不同:判断式为自己机子上子弹的XYZ数据是否与对方机子上人的XYZ数据符合命中判断方程式,要是符合则告诉服务器,并转达。所以你根本不能按照延迟=0ms来打移动目标,要附带计算延迟提前量才行。要是服务器告诉你被对方打中了,子弹的数据不会马上中断,还是要处理的。因此你又会看见一个奇妙的现象:你先被对方K,过零点几秒后,对方也被你K了。呵呵,这个比CS好——公平!

      我们以后设计的网络游戏就应该注意网络延迟的处理,在CS与DF中取其长处,在加入网络延迟补偿与预测技术,做中国最好的网络射击游戏是我们的梦想。

      请参阅相关游戏专区:三角洲部队(DF)

    【发表及查看评论】【关闭窗口】



游戏世界意见反馈留言板 欢迎批评指正 游戏咨询电话:请与各公司客服热线联系

新浪简介 | About Sina | 广告服务 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2004 SINA Inc. All Rights Reserved

版权所有 新浪网
北京市通信公司提供网络带宽