对于一个学校项目,我们应该创建一个Java游戏(它应该是客户端/服务器),可以通过互联网进行多人游戏(我们在学校编程,所以这不是作业)。游戏是基于回合的,但应该有一个聊天,这是实时的。然而,我们都没有网络编程方面的经验,而且我对它的了解越多,我似乎也有更多的问题。Java多人游戏 - 网络概念
我的第一个想法是使用套接字API来实现多人部分。服务器等待来自客户端的新数据。但是,有多种类型的数据可供接收,如聊天消息,移动等。另外,一旦与服务器建立连接,应发送一些初始数据(如播放机的名称)。服务器应该能够看到它收到的是什么类型的消息,但是如何?我正在考虑用字符串字段type
创建类Message
。但在我的服务器代码,我会得到这样的代码:
在有很多不同类型的数据的发送(会有),这看起来并不像最有效的方式。此外,这意味着服务器和客户端都应该有这个消息类/接口(重复代码)。
其他游戏的东西呢?例如,玩家1将他的角色移动到击败另一个角色的位置。玩家1的客户计算这种失败并应用正确的动作。但是应该发送给服务器的是什么?只是新玩家的位置或失败?有了第一个选项,这意味着所有其他客户都应该进行计算。这不会造成什么麻烦吗?由于我之前没有网络编程经验,所以我对如何完成所有这些事情感到困惑。
我也读过另一个线程在这里Stackoverflow RMI可能是一个更好的选择。阅读了一些有关这方面的信息后,我了解了RMI是什么,但我仍然无法确定它是否适合此项目。任何提示为此?
正如你所看到的,我对如何从这个项目的网络部分开始有点困惑。我搜索了一些游戏编程书籍(对于Java而言),但他们都不关注网络部分。我还搜索了Java网络书籍,但是这些似乎集中在技术上,而不是良好的代码实践。
如果有人知道一本好书或在正确的锻炼方面有一些建议,将不胜感激。
感谢
“...在学校编程,所以它不是功课” 。经典。 – CPerkins
至少他不想要代码。 –
@ CPerkins:我们应该在学校为这个项目工作,是的。我并没有要求任何人做我的工作,只是询问如何实施这一点。 – Bv202