多人在线游戏[Java]

4
我一直在开发一个小型纸牌游戏,名为“Tarneeb”。这个游戏看起来像桥牌游戏,但规则不同。无论如何,我已经完成了整个游戏作为Java 6的独立桌面应用程序。这是游戏的图片。现在,我需要将其转换为具有多人游戏功能的Web应用程序,以便用户可以创建新房间并加入正在进行游戏的现有房间。 不幸的是,我不知道Java中的网络编程,但我搜索了很多,发现了一些其他的Java产品可能会帮助我(JavaFX、JSP、GlassFish),但我仍然无法弄清楚我需要完成任务的确切内容。我现在所需要的就是指导方向,我会进行研究并学习所需的新技能。
7个回答

5

其他回答已经指向了一些资源。

但是你可能会遇到的最大问题是,如果你没有按照相应的架构规划来设计,通常情况下是不可能(或者非常耗时,需要完全重写代码)在之后“添加”多人游戏功能的。


1
使用Java NIO,它非常简单,如果你掌握了基础知识,就不需要所有这些无数的库...或者无论如何,你会知道它们的内部结构。然而,已经在这里提到的重要事情之一是,游戏结构必须从一开始就适应网络。在最坏的情况下可能需要完全重写。基本上,您将需要创建客户端数据库、套接字连接,并且从服务器端,每个连接(由SelectorKey对象表示)都应该封装成一个对象,表示“加入的客户端”。然后对键的套接字执行读/写操作。但还有更多。服务器将成为您的应用程序链接的中心,因此您将需要为游戏开发整个网络消息协议(在TCP上,这种游戏不需要UDP)。此外-阅读更多关于协议(TCP / UDP /套接字,以太网),您阅读的越多-越好。
另外!注意HTML5 WebSockets的内容。这是一件很棒的事情!!!

1

可能会有很多互动和很多更新,我认为 - 如果我错了,请纠正我 - 应该尽快将它们发送到客户端。我建议看一下Cometd,它可以保持与每个客户端的HTTP连接打开,并将更新从服务器推送到客户端。如果您正在使用Jetty作为Web服务器(因此使用其“continuations”),它甚至是高度可扩展的


1

问题在于,没有一种标准的方法可以做到这一点,你需要了解一下。

你想如何实现这个Web应用程序?作为小应用程序?使用标准的网页?作为一个人们必须下载的Web启动应用程序?

最后一种选择将允许您重复使用大部分现有代码。如果您选择这个选项,可能值得您研究一下RMI,因为它可能与您现有的架构相匹配。

但是,正如S.Lott指出的那样,在做任何其他事情之前,您需要学习如何制作Web应用程序。这些教程将是一个好的开始,此外,您肯定要学习(X)HTML、JavaScript和Java Web技术,例如JSPs、JSF或Struts。您需要什么完全取决于您的要求,没有更多的细节很难推荐一个。


使用这些不同的方式,对我和最终用户有什么区别? - Salem Sayed

0

0

Web应用程序非常不适合卡牌游戏中的实时交互。是的,它可以完成,但这将涉及到肮脏的黑客攻击,并且您将始终遇到高延迟和断开连接的问题。当然,您还必须完全重写大部分应用程序。

如果有可能将游戏作为Java小程序运行吗?这将使您的工作更加容易(启用更多的重用),并且最终结果更可用。


我不明白为什么它不能作为一个小程序,我没有小程序的经验,但你认为使用它们会出现什么问题?! - Salem Sayed
唯一的问题就是需要用户在计算机上安装Java。然而,自从Java 6u10引入了Java内核和部署工具包以来,这个问题已经不再是那么严重了:http://java.sun.com/developer/technicalArticles/javase/java6u10/ - Michael Borgwardt

0

无法快速将客户端应用程序移植到Web应用程序中。根据您想要采取的方式,听起来您需要追求JSP / JavaScript解决方案或JavaFX解决方案。 JavaFX实际上允许更平滑(比JSP / JavaScript更平滑,但仍需要超过一个下午= D)地移植基于客户端的应用程序,但它的学习曲线比JSP / JavaScript技术普遍更陡峭。有趣的是,JavaFX不仅是Web应用程序语言。如果您最初使用JavaFX编写了客户端应用程序,则已完成约50%的工作。

JavaFX


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接