2012-10-30 87 views
0

我正在开发一款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等)需要大量的参数。

回答

0

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

您使用套接字将数据从客户端传输到服务器?如果您在每次调用为getPosition发送一个数据包(你怎么称呼它在主循环,使每帧),它可能是很laggy在生产environement

也许你可以把它每隔80/100毫秒

相关问题