游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2977|回复: 9

[讨论] 【求教】关于网络延迟,以及相关的比较无力的软性处理

[复制链接]

9

主题

97

帖子

97

积分

注册会员

Rank: 2

积分
97
发表于 2010-7-29 22:06:00 | 显示全部楼层 |阅读模式
由于天朝地大物博网络状况复杂.导致网络游戏伺服器延迟较高现象普遍存在.
在我们无论改变网络状况的时候我们可以从我们的程序上做出哪些优化呢.
使得延迟对于游戏的影响尽可能的降低.
比如拿经典的WOW来讲.我常常听到这样一句话.那就是用这种天赋输出对于网速要求很高/不是很高.这是为什么呢?比如我的延迟是300毫秒我的技能 比如火球术或者寒冰箭吧是1.5秒施法时间 那么我实际上 加上网络延迟 释放技能的频率为1.8~1.9秒一次.
而又为什么有些天赋对于网速的需求不是很高呢?
那是因为比如术士之类的具有依靠debuff持续性伤害输出的职业延迟对于他们的DPS的影响并不很大.
那么我就想了.我们能否降低我们技能释放的延迟呢?

我想出了2种解决方案.

方案1:客户端随机间隔30~60计算一次与服务器之间的延迟时间.取出平局值并减去一个固定值 比如100毫秒.得出一个延迟补偿值.
这样比如我们当前计算出的平均延迟是300毫秒.减去100毫秒后就是200毫秒的延迟补抄值.这个补偿值在当玩家的角色释放下一个非顺发技能的时候从施法时间中扣除. 这样 在同样是300毫秒延迟的情况下 玩家的技能释放频率就可以从1.8~1.9毫秒降至1.6~1.7秒 与技能的施法时间已经比较接近了.

方案2: 在游戏当中加入"技能队列"功能. 玩家按住相应快捷键比如Ctrl + 对应技能的快捷键.比如我的寒冰箭的快捷键是数字键1 那么 我按下 Ctrl + 数字键1 的组合键 就把寒冰箭技能加入了技能队列.如果当前没有技能正在释放则直接释放.如有技能正在释放则放在队列尾部.而你的技能队列的信息是直接传递到服务器上面的.当该技能排到队列头部时,服务器之间控制玩家的角色进行技能释放.    当然了这里要设计好 技能队列机制的细节.比如 在我直接按下技能键的时候 直接打断当前释放技能.立即释放我按下的技能.比如 我的技能队列正在释放寒冰箭.但是由于突发状况我需要 寒冰屏障技能来保命.于是乎我按下快捷键Z.直接打断当前释放的寒冰箭.释放冰箱进入无敌状态.
     可能有人会问你的设定只适用于释放法术时需要读取释放条的角色吧.
     那么我们可以注意下.有一种属性叫做公共CD.也就是我们在释放一个技能以后需要等待公共CD(网游中普遍设定为1秒)结束之后才能释放下一个技能.
这样 技能队列 设定对普遍使用瞬发技能的角色似乎也是适用的.
    技能队列 也还需要很多细节完善 比如 技能队列延时释放.比如在设置技能队列是 设置头一个技能按下后延时N秒释放.  技能队列一件清空 单个目标技能队列 多目标技能队列 无目标法术技能队列等等.当然啦 技能队列当中可存放的技能个数  或者总的 技能施法时间必须要有所限制.比如2秒施法时间的技能可以放5个而1秒施法时间的技能可以放10个. 有或者干脆设定队列当中最多有五个技能.
    另外两种方案并不矛盾.可以同时应用.
     可能大家会认为这样的设定会使游戏变的失去活力.其实我们只需要在设计游戏的时候使游戏中充满了各种各样的变数.使得玩家随时需要打断技能队列释放非预期的技能以应对突发状况.那么游戏的乐趣 或者说 游戏的难度依然会是存在的.这里只是减少延迟对游戏的影响以及稍微降低游戏操控难度使得更多玩家参与其中的一种解决方案.

额 大致的思路就是这样的.纯粹饭后无聊臆想.仔细琢磨似乎方案的目标比较狭小只适用于WOW以及防wow类的游戏.  ^_^
PS:本人并非暴雪的鉴定支持者.喷wow者随意.
   本人在此仅对相关设定可行性进行探讨.

9

主题

97

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2010-7-30 22:44:00 | 显示全部楼层

Re:【求教】关于网络延迟,以及相关的比较无力的软性处理

额 被无视啦

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2010-7-30 22:52:00 | 显示全部楼层

Re:【求教】关于网络延迟,以及相关的比较无力的软性处理

预先提交操作是个可行的方案,但是逻辑上减掉延迟时间可能会有安全性问题

9

主题

97

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2010-7-30 23:15:00 | 显示全部楼层

Re:【求教】关于网络延迟,以及相关的比较无力的软性处理

哦 恩 第一种方案对程序的要求比较高.要不然很容易被有心人利用^_^

5

主题

57

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2010-8-2 19:55:00 | 显示全部楼层

Re:【求教】关于网络延迟,以及相关的比较无力的软性处理

第一种应该是肯定被外挂利用,第二种还不错。但有些同步的问题。比如客户端上看着要OT了,按键打断技能,但由于延迟,服务端在收到打断指令时,技能已释放完毕。

9

主题

97

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2010-8-2 21:18:00 | 显示全部楼层

Re:【求教】关于网络延迟,以及相关的比较无力的软性处理

额 同步的确是一个问题.不过如果你的延迟不大于1秒的话.
由于普遍存在的1秒公共CD还是有一定的可操作空间在里面的啊.

11

主题

166

帖子

180

积分

注册会员

Rank: 2

积分
180
发表于 2010-8-2 21:58:00 | 显示全部楼层

Re:【求教】关于网络延迟,以及相关的比较无力的软性处理

方案2:War3?

40

主题

1326

帖子

1355

积分

金牌会员

Rank: 6Rank: 6

积分
1355
QQ
发表于 2010-8-2 23:19:00 | 显示全部楼层

Re:【求教】关于网络延迟,以及相关的比较无力的软性处理

我想的1个方案:
按键后,直接播放技能动画,同时传输消息。消息往返的延迟超过技能动画播放时间的情况下,该次攻击无效,不进行伤害计算,同时降低技能动画播放时间。如此循环,直到速度匹配为止。

9

主题

97

帖子

97

积分

注册会员

Rank: 2

积分
97
 楼主| 发表于 2010-8-3 08:06:00 | 显示全部楼层

Re: Re:【求教】关于网络延迟,以及相关的比较无力的软性

螺旋状: Re:【求教】关于网络延迟,以及相关的比较无力的软性处理方案的可行性

方案2:War3?


额 明显是拿WOW以及类似的团队合作推BOSS的游戏为背景来做的方案么.

w4xxxx: Re:【求教】关于网络延迟,以及相关的比较无力的软性处理方案的可行性

我想的1个方案:
按键后,直接播放技能动画,同时传输消息。消息往返的延迟超过技能动画播放时间的情况下,该次攻击无效,不进行伤害计算,同时降低技能动画播放时间。如此循环,直到速度匹配为止。


这个.. 近战职业的技能动作都是很短暂的...提前在客户端上显示已经释放了技能毫无疑问会造成玩家的误判.和对相关游戏制造商的唾骂.
降低技能动画播放时间?你想说的该不会是 降低技能动画的播放速度从而延长技能动作的时间以达到和延迟时长同步的目的吧?
这样搞的话..那么是不是就相当于你开了个加速齿轮速率却调成了0.9倍 而别人确实正常的速度.对于即时类的游戏...这个是非常严重的问题吧...?

40

主题

1326

帖子

1355

积分

金牌会员

Rank: 6Rank: 6

积分
1355
QQ
发表于 2010-8-4 08:46:00 | 显示全部楼层

Re: Re: Re:【求教】关于网络延迟,以及相关的比较无力的软

柳下贤: Re: Re:【求教】关于网络延迟,以及相关的比较无力的软性处理方案的可行性



这个.. 近战职业的技能动作都是很短暂的...提前在客户端上显示已经释放了技能毫无疑问会造成玩家的误判...


我的方案是基于pve的延迟计算。
pvp的话,需要更复杂的算法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-15 22:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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