Java客户端/服务器回合制帮助

时间:2011-04-13 13:56:53

标签: java client-server

我正在尝试制作基于客户端/服务器的游戏。我希望这是一个2人游戏。我将使用Java applet作为客户端,以便人们可以通过浏览器在线播放。

到目前为止我所知道的是,我可以创建一个接受所有传入连接的服务器,并创建一个线程来处理连接的客户端。我也可以编写将连接到服务器的客户端。我不知道的是如何让两个独立的客户互相交流。

小程序无法相互通信,因此必须通过服务器/线程进行通信(我假设)。

我不是Java的新手,但我之前从未做过任何网络。有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

在我看来,接近像这样的回合制游戏的最佳策略是决定一些基本的架构方法。绘制出组件和一些基本的游戏流程图。

您应该将大部分游戏引擎逻辑放在服务器组件中。客户应尽可能保持薄,主要关注

  1. 与游戏引擎的沟通
  2. 接受用户输入
  3. 解释游戏引擎回复
  4. 绘制画面
  5. 您的服务器/游戏引擎应该是相对无状态的,但仍保留当前正在进行的游戏会话列表。有状态的SOAP Web服务甚至HTTP Servlet都是一个不错的选择,因为它们通过在请求中放置和读取会话cookie来为您维护会话。

    所有Web都可以处理请求响应,因此它本质上是无状态的,但某些技术(如Java servlet)将帮助您维护会话,以便您不必这样做。不需要物理创建单独的线程,每个请求都会导致应用程序服务器生成一个新的执行线程,而会话本质上是不稳定的。

    在服务器端,我会在会话中保留特定活动游戏的所有数据。通过这种方式,您的游戏引擎将保持两个玩家之间的有序沟通。

    1. 玩家1发送包含所有游戏状态更改信息的回合结束请求。
    2. 游戏引擎解释请求,对游戏状态进行必要的更改。
    3. 播放器2经常发送检查请求,看看是否还有播放器2转。
    4. 游戏引擎确认玩家2的转弯请求并发送新游戏状态作为回应。
    5. 玩家2收到回复,更新其游戏状态副本,记录自上一回合以来的变化。
    6. 冲洗并重复。

答案 1 :(得分:0)

您只需将服务器用作中间人。

  1. 客户端A向服务器发送(写入)消息,其中属性表示客户端B为目标
  2. 服务器接收(读取)消息并将消息转发(写入)到客户端B
  3. 客户B接收(读取)消息。