【发布时间】:2010-11-20 03:19:47
【问题描述】:
我正在用 Java 编写一个回合制纸牌游戏,但需要一些关于使其成为多人游戏的建议。玩家可以创建一个多人游戏,然后其他人可以加入该游戏,轮流玩他们的动作。我花了几个小时研究实现这一点的所有不同方法,但确实可以提供一些帮助。我将列出要求以及到目前为止我发现的内容:
- 它完全是 Java 游戏,因此使用 RMI 之类的东西不是问题
- 玩家移动,这个移动被发送到服务器,服务器发送这个移动到游戏中的其他玩家(客户端)。
- 服务器需要存储所有正在进行的游戏以及其中的玩家(目前使用
HashMap<UniqueGameID, GameObject>进行此操作。
到目前为止,我一直在尝试使用套接字和 RMI,看起来:
RMI:
+ 处理多线程和对 hashmap 的访问
-要么必须轮询服务器以查看玩家是否已移动,要么使用无法通过防火墙的回调
套接字:
+ 允许异步回调(?)
- 无法从产生的多个线程轻松访问 hashmap(?)
-比RMI更复杂
我也一直在研究 JMS、JINI/JavaSpaces、JGroups 以及我能找到的任何其他东西,但我不知道哪个最适合。我已经启动并运行了 RMI 的客户端->服务器部分,但服务器->客户端似乎不可能,因为轮询效率低下且不可扩展
非常感谢您的任何建议。
非常感谢
编辑:我后来发现了 ConcurrentHashMap,我认为它可以解决我的一个问题。
【问题讨论】:
标签: java networking rmi