Java网络-客户端和服务器
我对Java非常陌生,刚刚开始联网,所以我为任何愚蠢的问题提前道歉。我有一个基本的游戏,玩家(或机器人)可以在地图上移动,直到找到物品和出口,但通过网络,我希望玩家和机器人能够通过服务器同时在同一地图上玩 我有5门课:Java网络-客户端和服务器,java,sockets,networking,Java,Sockets,Networking,我对Java非常陌生,刚刚开始联网,所以我为任何愚蠢的问题提前道歉。我有一个基本的游戏,玩家(或机器人)可以在地图上移动,直到找到物品和出口,但通过网络,我希望玩家和机器人能够通过服务器同时在同一地图上玩 我有5门课: 游戏规则-控制游戏逻辑/规则 地图-包含地图 玩家-代表一个玩家 机器人-以机器人的身份玩游戏 PlayGame-通过CLI控制与游戏的交互。 我很确定游戏规则和地图会在服务器端,PlayGame会在客户端,但是我不确定机器人和玩家类在哪里?还有,我是将GameRule和Ma
- 游戏规则-控制游戏逻辑/规则
- 地图-包含地图
- 玩家-代表一个玩家
- 机器人-以机器人的身份玩游戏
- PlayGame-通过CLI控制与游戏的交互。
非常感谢。客户端-服务器游戏中的大多数模型都应该同时驻留在客户端和服务器上
- 客户需要模型来可视化他们所持有的数据李>
- 服务器需要他们根据业务逻辑对其进行修改——然后将中间结果发送给客户机以更新其模型。服务器必须这样做,因为这就是它存在的原因:通过成为唯一可以改变游戏状态的节点来保持游戏状态的一致性李>
请注意,在更高级的实现中,如实时游戏,客户端还实现了一些预测行为来隐藏客户端-服务器延迟,从而临时改变游戏状态,但服务器命令总是推翻客户端的决定。您还可以对客户机进行编码,使其始终能够继续播放,即使他尚未收到服务器对之前“移动”的确认-当服务器拒绝某些移动时,您必须实现回滚/更正功能 根据业务逻辑的复杂性和所需的同步时间,完全可以将大部分内容保留在客户机级别,只需将服务器用作更新的代理。想象一个两人在线象棋游戏。规则是如此标准,时间是简单的来回,所以这个游戏的“服务器”只需要将每个动作从一个玩家来回传递给另一个玩家。就像用一个插座替换你祖父象棋比赛中的邮件一样。每个(客户端)都确切地知道如何处理移动以及哪些新的移动是有效的。无论如何,您最终必须在两个项目之间共享代码。这就是服务器-客户机体系结构的命运。