服务器和客户端如何正常通信?

时间:2014-09-15 16:49:34

标签: networking

让我们以第一人称射击游戏为例,服务器必须跟踪玩家的位置,动作,健康状况等。客户如何向服务器发送此信息?那么服务器如何区分客户端是发送玩家位置还是玩家新的健康状况呢?

1 个答案:

答案 0 :(得分:0)

我目前正在开发自己的游戏,它是一款在线多人游戏农场游戏,但从概念上讲,服务器将以类似的方式处理它。

第一个问题是关于实施。例如,我使用套接字通道来区分各种玩家。例如,当玩家移动时,我将从客户端向服务器发送一个指示移动的数据包(在这种情况下,是新的坐标)。该信息通过该播放器的频道发送,并更新该播放器信息。

为了处理多种类型的数据,您需要某种标识符来隔离各种类型的信息......例如,switch / if语句。这不是很有用,但下面是一些sudo代码,仅供参考。

if (packetCode == "Players-Health-Change") {
  player.setHealth(newHealth);
} else if (packetCode == "Players-Location-Change") {
  player.setLocation(newLocation);
}

但是,您希望运行系统和体系结构是非常具体的。我建议你抓一本关于这个主题的书/教程。

有用的链接: http://docs.oracle.com/javase/tutorial/networking/sockets/