0

我正在开发一个 xna 游戏并遇到了一些问题。我开始只是从主循环中的服务器获取信息,如下所示:

player.X = client.GetInt32();
player.Y = client.GetInt32();
player.IsShooting = client.GetBoolean();

过了一会儿,我把这段代码移到了一个单独的类:ServerLayer。

起初 ServerLayer 包含播放器实例,但过了一段时间,ServerLayer 引用了地图和炸弹以及一堆其他东西。所以我决定将需要服务器信息的对象直接传递到这样的方法中:

在主循环中:

serverLayer.GetPosition(player);

在服务器层中:

public void GetPosition(Player player) 
{
    player.X = client.GetInt32();
    player.Y = client.GetInt32();
    player.IsShooting = client.GetBoolean();
}

这是正确的方法吗?一些方法(GetInit 等)需要很多参数。

4

1 回答 1

0

对我来说看起来是正确的方法,我唯一看到的是方法的名称,也许它应该是 UpdatePosition 而不是 GetPosition。

您使用套接字将数据从客户端传输到服务器?如果您在每个 GetPosition 调用中发送一个数据包(您在主循环中调用它,所以在每一帧)它可能在生产环境中非常滞后

也许你可以每 80/100 毫秒调用一次

于 2012-10-30T11:26:44.143 回答