我正在使用Java中的UDP。我有一台服务器和多个客户端。客户端连接到服务器,并且每个客户端都有其播放器。当一个客户端移动播放器时,其位置将发送到连接到服务器的所有其他客户端。位置数据不会从客户端发送到服务器,然后再从服务器发送到所有客户端。它直接从将播放器移至连接到服务器的所有其他客户端的客户端发送。然后根据发送的位置数据在所有客户端窗口中移动播放器。我知道数据包丢失,并且接收数据包存在延迟。但是我不知道其他游戏如何使他们的多人玩家运动变得流畅。您能解释一下他们是如何做到的,以及我将如何自我实现。
底层代码发生在没有移动的客户端中。这是已收到HAS移动的客户的位置数据的客户。
// here is some pseudo code of how I manage my player movement.
// This packet contains the x and y position of the player who has moved.
Packet receivedPacket = new Packet(recievedData);
// this is the player which represents the player who has moved.
player.setX(receivedPacket.getX());
player.setY(receivedPacket.getY());
问题在于播放器动作非常缓慢,尤其是在客户端位于不同计算机上时。这很可能是由于网络上的数据包丢失和数据包延迟所致。我尝试将玩家的位置调整为客户端接收到的位置。但是仍然有些滞后。请帮助我。