Java客户端/服务器回合制帮助
我正在尝试制作基于客户端/服务器回合的游戏。 我希望这是一个2人游戏。 我将使用Java applet作为客户端,以便人们可以通过浏览器在线播放。
到目前为止我所知道的是,我可以创建一个接受所有传入连接的服务器,并创建一个线程来处理连接的客户端。 我也可以编写将连接到服务器的客户端。 我不知道的是如何让两个独立的客户互相交流。
小程序无法相互通信,因此必须通过服务器/线程进行通信(我假设)。
我不是Java新手,但我以前从未做过任何网络。 有人可以帮我吗?
在我看来,接近像这样的回合制游戏的最佳策略是决定一些基本的架构方法。 绘制出组件和一些基本的游戏流程图。
您应该将大部分游戏引擎逻辑放在服务器组件中。 客户应尽可能保持薄,主要关注
- 与游戏引擎通信
- 接受用户输入
- 解释游戏引擎响应
- 绘制屏幕
您的服务器/游戏引擎应该是相对无状态的,但仍保持当前正在进行的游戏会话列表。 有状态的SOAP Web服务甚至HTTP Servlet都是一个不错的选择,因为它们通过在请求中放置和读取会话cookie来为您维护会话。
万维网在请求响应上工作,因此它本质上是无状态的,但是某些技术(如Java servlet)将帮助您维护会话,以便您不必这样做。 无需物理创建单独的线程,每个请求都会导致应用程序服务器生成新的执行线程,而会话本质上是不稳定的。
在服务器端,我会在会话中保留特定活动游戏的所有数据。 通过这种方式,您的游戏引擎将保持两个玩家之间的有序沟通。
- 玩家1发送具有所有游戏状态改变信息的回合结束请求。
- 游戏引擎解释请求,对游戏状态进行必要的更改。
- 玩家2经常发送检查请求,看看是否还有玩家2转。
- 游戏引擎确认玩家2的转弯请求并发送新游戏状态作为响应。
- 玩家2接收响应,更新其游戏状态的副本,记录自上一回合以来的变化。
- 冲洗并重复。
您只需将服务器用作中间人。
- 客户端A向服务器发送(写入)消息,其属性表示客户端B为目标
- 服务器接收(读取)消息并将消息转发(写入)给客户端B.
- 客户端B接收(读取)消息。
- Spring问题:出现意外错误(type = Not Found,status = 404)
- 如何使用Talend Open Studio数据集成创建属性文件?
- 构建swing UI以实现方法编辑器
- 如何在JTable列中只选择一个复选框
- 在Spring的RequestMapping中,{parameter:。+}与{parameter}不同
- 为什么autoboxed整数和.getClass()值== – 相等,不仅.equals() – 相等?
- Java Swing:将鼠标hover在矩形上时,光标响应非常慢
- 使用JColorChooser在JTable的行上设置Color
- 如何将浮点数转换为由字节分子和分母表示的最接近的分数?