多人浏览器游戏[Java]

多人浏览器游戏[Java],java,Java,我一直在开发一款名为“塔尼布”的小型纸牌游戏。游戏本身看起来像桥牌游戏,但规则不同。无论如何,我使用Java6作为一个独立的桌面应用程序完成了整个游戏。这是游戏的一个重要部分。无论如何,我现在需要将其转换为一个具有多人游戏功能的web应用程序,这样用户就可以创建一个新的房间,并加入游戏所在的现有房间。 不幸的是,我对Java中的网络一无所知,但我搜索了很多,找到了一些可能对我有帮助的Java产品(JavaFX、JSP、GlassFish),但我仍然无法弄清楚我到底需要什么来完成我的任务。我现在所

我一直在开发一款名为“塔尼布”的小型纸牌游戏。游戏本身看起来像桥牌游戏,但规则不同。无论如何,我使用Java6作为一个独立的桌面应用程序完成了整个游戏。这是游戏的一个重要部分。无论如何,我现在需要将其转换为一个具有多人游戏功能的web应用程序,这样用户就可以创建一个新的房间,并加入游戏所在的现有房间。
不幸的是,我对Java中的网络一无所知,但我搜索了很多,找到了一些可能对我有帮助的Java产品(JavaFX、JSP、GlassFish),但我仍然无法弄清楚我到底需要什么来完成我的任务。我现在所需要的只是前进的方向,我会做我的研究,并希望学习所需的新技能。

因为你可能会有很多互动和很多更新,如果我错了,我应该尽快在客户那里纠正我,我建议看一看,是哪一个保持http连接对每个客户端开放,并将更新从服务器推送到客户端。如果您使用jetty作为web服务器(以及它的“延续”),那么它是公平的。

首先,了解什么是“网站”和“web应用程序”

执行以下教程:

观看Glassfish教程:

完成所有教程后,您将构建一个web应用程序


构建教程web应用程序后,您就可以构建web应用程序了。

问题是,没有一种标准的方法可以做到这一点,您需要仔细阅读

您希望如何实现此web应用程序?作为小程序?使用标准网页?作为web start应用程序,人们必须下载哪些

最后一个选项将允许您重用大部分现有代码。如果您选择这个选项,它可能值得您研究,因为它可能适合您现有的体系结构


但是,正如S.Lott指出的那样,在做其他事情之前,您需要先去学习如何制作web应用程序。这些教程将是一个很好的开始,而且您肯定应该学习(X)HTML、JavaScript和JavaWeb技术,如JSP、JSF或Struts。确切地说,您需要什么取决于您的需求,没有更多的细节,很难推荐。

其他答案已经为您提供了一些参考资料


但你可能遇到的最大问题是,如果你没有相应地规划体系结构,那么事后“添加”多人游戏功能通常是不可能的(或者非常耗时,直到完全重写)。Web应用程序非常不适合你在纸牌游戏中的实时交互。是的,这是可以做到的,但这将涉及肮脏的黑客,你总是有高延迟和断开连接的问题。当然,你必须完全重写大部分应用程序


是否有可能将游戏作为Java小程序运行?这将使您的工作更轻松(实现更多的重用),最终结果更可用。

无法快速将基于客户端的应用程序移植到web应用程序中。根据您想要如何进行,听起来您要么需要使用JSP/Javascript解决方案,要么需要使用JavaFX解决方案。JavaFX实际上允许更平滑(比JSP/Javascript更平滑,但仍然需要一个下午的时间=D)移植基于客户端的应用程序,但它的学习曲线比JSP/Javascript技术总体上更陡峭。这里一个有趣的注意事项是JavaFX不仅仅是一种web应用程序语言。如果您使用JavaFX编写了最初的基于客户端的应用程序,您将完成大约50%的工作


使用Java NIO,它非常简单,如果您掌握了基础知识,那么在所有这些不计其数的库中就没有真正的需要了。。。或者你会知道它们的内部结构。然而,这里已经提到的一件重要事情是,游戏结构必须从一开始就适应网络。在最坏的情况下,这可能是一次彻底的重写。基本上,您必须创建客户端数据库、套接字连接,并且从服务器端开始,每个连接(由SelectWorkey对象表示)都应该封装到一个对象中,表示“连接的客户端”。然后对密钥的套接字执行读/写操作。但还有更多。服务器必须是应用程序链接的中心,因此您必须为游戏开发一个完整的网络消息协议(通过TCP,在这种游戏中不需要UDP)。另外-阅读更多关于协议(TCP/UDP/Socket、以太网)的信息,阅读越多越好


还有!注意HTML5WebSockets的内容。这是一件伟大的事情

我不明白为什么它不能作为一个小程序,我没有小程序的经验,但你认为使用它们会产生什么问题?!几乎唯一的问题是,它要求用户在计算机上安装Java。然而,自从Java 6u10引入Java内核和部署工具包以来,这就不再是一个问题:使用这些不同的方法对我和最终用户有什么不同?