我正在使用 Slick2D 制作 Java 游戏,并使用 Kryonet 进行多人游戏。当玩家按下 W、A、S 或 D 时,他们会移动,并且 PlayerMovePacket 对象会通过网络(通过 UDP)发送到服务器。然后服务器将其发送给其他客户端,这些客户端根据数据包内的信息设置该玩家位置的本地副本。
这是 PlayerMovePacket 的代码:
public class PlayerMovePacket {
public Vector2f pos;
public int clientID;
public PlayerMovePacket() {
pos = new Vector2f(0, 0);
clientID = -1;
}
public PlayerMovePacket(Vector2f v, int id) {
pos = v;
clientID = id;
}
}
这样做,客户端/服务器会因过多的消息而过载,并崩溃。我看到的唯一其他选择是我只会每隔几毫秒发送一次玩家的位置。但是,客户端大部分时间都不会知道玩家的最新位置,并且动作会很跳跃
关于如何阻止服务器过载的任何想法?