处理来自服务器的信息的最佳方式

时间:2012-10-30 11:16:36

标签: architecture xna client-server

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

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

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

首先,ServerLayer包含播放器实例,但过了一段时间,ServerLayer引用了Map和Bombs以及其他一些东西。所以我决定将需要服务器信息的对象直接传递给这样的方法:

在主循环中:

serverLayer.GetPosition(player);

在ServerLayer中:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

相关问题