【问题标题】:Multi-client multi instance centralised server using TCP protocol gaming system in JavaJava中使用TCP协议游戏系统的多客户端多实例集中服务器
【发布时间】:2012-03-24 20:18:26
【问题描述】:
我不是 Java 编程的新手。我想知道如何继续我的项目。
我想用 Java 开发一个使用 TCP/IP 协议套接字系统的集中式游戏系统。它应该获取玩家详细信息并在游戏窗口中显示信息。
这些是我的标准:
最多和最少的玩家可以参加??
服务器在给定状态的棋盘前的行为:应该邀请一个或多个玩家提供他们的击球,通知对手的打击还是一个玩家可以宣布一方结束?
玩家提供投篮时如何更新游戏???
我不是在这里寻找一个直接的答案。我正在寻找一些对我开始该项目有帮助的指导。有没有使用TCP协议的多客户端多实例集中服务器的工具???
【问题讨论】:
标签:
java
sockets
tcp
centralized
【解决方案1】:
首先是网络层
java、mina、netty有几个网络库..
借助这些网络库,您可以轻松解决网络问题。
还有逻辑层
您应该在服务器内存中维护所有user_context 对象,并将每个对象绑定到相应的tcp 连接。在大多数情况下,user_context 对象作为 RB-tree 的 hashmap/dictionary 维护。
所以,当某些事件发生时,您可以找到相应的用户/客户端并将消息发送给他们。
【解决方案2】:
我认为最小玩家人数是0;
最大值可能取决于;
- 你的带宽,你需要有一个显着的上传速度,你想要成千上万的用户。
- 管理每个用户需要做多少工作。你可以在一台服务器上连接到 10,000 个用户,如果他们做的不多,但是当你添加功能时,每台服务器的用户数将下降到 1000 个,可能只有 100 个。
当您拥有无限带宽和每个连接的琐碎工作(通常复制byte[] of zeros)时,IO 框架的选择会产生很大的不同。对于实际应用程序,它不太重要。如果您以后找到更好的解决方案,我建议您选择的任何解决方案都可以轻松替换。
有没有使用TCP协议的多客户端多实例集中服务器的工具???
常用的工具是 JMS,但游戏是您可能不会使用它的一个领域。我将从 ActiveMQ 开始,因为它可以让您快速启动并运行,只要确保您以后可以轻松替换它。