多人游戏在UDP "Chokes"互联网

本文关键字:quot Chokes 互联网 UDP 游戏 | 更新日期: 2023-09-27 18:16:49

我尝试着创造一款有效的PONG游戏,然后将其改为多人游戏。

你可以选择"游戏速度",这基本上是多少循环,直到球可以移动和发送位置数据。

每隔一秒(默认是200秒)服务器就发送这个到

pos:{0}:{1}&ballpos:{2}:{3}&gametick:{4}

(当然是字符串格式)

,客户端每次发送这个给服务器:

pos:{0}:{1}

,以便同步客户端位置与主机播放器。

它用以下函数发送消息:

public static void sendMessage( String message , UdpClient client)
{
Byte[] toSend = new byte[55];
toSend = Encoding.ASCII.GetBytes(message);
client.Send(toSend, toSend.Length);
}

现在当我们玩的时候,我们在skype上,skype的连接质量真的很低,而且非常延迟。那么游戏就会变得滞后。

是否有更有效的方法来发送数据到同步位置?

多人游戏在UDP "Chokes"互联网

以下是一些建议:

  1. 按时间发送,不按循环周期发送。循环周期受到PC上正在发生的其他事情的严重影响。这使您可以更好地控制更新的频率,并且不会根据系统性能而变化。200 微秒太快了。你不需要这个。
  2. 您的本地网络被数据包淹没,导致瓶颈。
  3. 减少发送报文的频率。每秒5次是一个很好的开始
  4. 如果更新速度不够快,就按照专业人士的做法去做。根据过去的更新插入球要去的地方。例如,你有一个方向和速度的概念,所以做一个有根据的猜测!

更新应该是定期的、确定性的(你知道它们何时会发生)和非易失性的(丢失一个不是问题)。尝试降低更新速度,看看会发生什么。