对qq堂的一些想法啦 |
cathy 发表于 2005/2/27 17:19:26 | 哈,刚去玩qq堂呢,玩的时候有时候会很卡的,但到底是自己卡还是别人卡,我也说不清楚,但是结果会导致游戏屏幕异常,不同玩家看到的游戏状态也不一样,比如说一个玩家放下一个泡之后,应该会在3秒之后爆炸,但当有异常出现是,那个泡可能到游戏结束都还在!!500)this.width=500'>
玩了这些天之后另我对它的通信编程部分有了点猜想:
1)、估计用的连接协议是udp,因为它数据包的丢失是不可恢复的错误。
引起异常的原因估计就是网络延时和数据包丢失。
如果是延时,泡泡会晚点爆炸,但这时屏幕已经有点混乱。
如果是丢失的话,屏幕上会都是泡泡,这样大家都不能走来走去了。太混乱了500)this.width=500'>
2)、估计在玩的时候一个玩家会和所有玩家建立udp连接,当然也和服务器保持连接(和服务器的连接我也不知道是不是udp的)。
一般在这种游戏时估计都会采用两种方案:
一种是游戏数据都先发送到服务器,再由服务器发给各个玩家,可是这样做的话,服务器的负担会很重,而且服务器的速度到成了瓶颈了
另一种就是玩家直接把游戏数据发送给其他玩家
考虑到qq堂是实时对抗的游戏,速度在游戏中取胜有着决定性的作用,所以我会猜它用的第二种方案
3)、估计它发送的是操作命令
发送的内容可以是两种:
一种是:发送当前游戏状态,就是把泡泡和玩家位置都发送一遍。
另一种是:发送玩家的操作命令
我猜测qq堂用的是第二种,因为一但数据包丢失后,错误是不可挽回的。
这个猜测和第二个猜测有一定的关联,因为一个玩家并不知道其他玩家在同一个时刻的状态,所以也没办法发送整体的状态。
哈,其实本人水平有限,如果有人有兴趣的话,可以截取它发送的数据包,那答案不就都知道了嘛,也不用我猜的那么辛苦的说500)this.width=500'>
哈,别忘了顺便告诉我一声呢500)this.width=500'>
|
|
|

.: 公告
|
« | July 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | |
|
.: 我的分类(专题)
|

.: 最新日志
.: 最新回复
|

blog名称: 日志总数:86 评论数量:357 留言数量:5 访问次数:432165 建立时间:2005年1月5日 |
|

.: 留言板
|

.: 链接
|

|