网络游戏 采用的是tcp协议还是udp协议? 您所在的位置:网站首页 udp协议速度 网络游戏 采用的是tcp协议还是udp协议?

网络游戏 采用的是tcp协议还是udp协议?

2023-03-29 02:01| 来源: 网络整理| 查看: 265

最近在搞这方面,分享点心得,不对请指正。

实时战斗游戏的话还是要用UDP了,因为TCP的特性,一旦丢包就会重发,阻塞住后续的数据包,因而可能会产生一个较大的瞬时延迟。

魔兽世界据说是用TCP。可能因为魔兽世界的游戏设计能很好的隐藏延迟,TCP用起来更简单些。

关于丢包检查,可以采用一个近似TCP的ack机制,可以给每个数据包都添加一个sequence ID,然后发送端就依次发送数据包,接收端收到数据包后就可以根据sequence ID来判断是否有丢包了。

接下来是重点,接收端需要发该sequenceID的ack给发送端,发送端才会知道这个包是否已经送达。但这是一笔不小的开销,而且,ack本身也有可能丢包。

可以这样,发送一个sequence ID的ack时,附加一个32bit的位序列,表示当前sequence ID之前的32个连续顺位的数据包是否已经送达,其实就是冗余的发送连续32个包的送达状态,如果bit为0说明这个包还没到,如果为1,说明已经收到了。这样一来,除非连续丢包30多次,ack是一定会送到的,这种几率已经非常小了。

相应的,在发送端设置一个超时机制,这个时间差不多比连续发30个ack的时间长一点,如果发送一个包后开始计时,达到超时还没有收到ack,这个包就丢失了。

但即使丢包了也不一定需要重发!是否需要重发,如何重发可以和游戏的逻辑结合起来,没有必要实现类似TCP那样的完全可靠的机制,毕竟战斗中的同步速率很高,丢一个一般也没啥事情。

语言组织能力欠佳,多包涵。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有