4

我目前有一个用 Java 开发和工作的多人纸牌游戏,它正在控制台中工作。该游戏的格式类似于桥牌和黑桃,但没有竞标过程。这是一个四人游戏,玩家轮流玩牌。

我目前正在努力将其转换为基于浏览器的 web 应用程序,并添加 Spring MVC,并使用 HTML、JavaScript 和 AJAX 进行 UI 和与后端的通信。我有一个很好的想法,我想让它在单人游戏中对抗 AI,允许用户使用他们的卡片并使用 AJAX 调用从服务器获取接下来的三个游戏。

但是,我想知道我需要采取什么样的方法才能使它成为多人游戏。我看到了一些我不熟悉的对“套接字编程”的引用,但这些似乎围绕 Java 小程序,而不是基于浏览器的应用程序。

基本上,我正在寻找一种方法来确保当用户开始游戏并且其他人加入时,我如何确保他们连接到同一个游戏,并且能够看到彼此的游戏?我现在在为单人游戏完全开发 UI 之前问这个问题,因为我想避免完全重新设计以支持多人游戏功能。

4

1 回答 1

6

由于您正在创建多人游戏,因此您需要至少有一台服务器供您的客户端连接。由于您希望基于此浏览器,您很可能需要自己的服务器(而不是让其中一个客户端成为服务器)。当用户加入游戏时,它会登录到该用户所在的服务器上。当玩家执行动作时,服务器会处理该动作,然后向连接到该房间的每个其他客户端发送通知。此时客户端 UI 会更新。

过去,您无法使用纯 HTML / JavaScript 执行此操作,因为您无法打开套接字。这意味着,服务器无法通知客户端。但是在 HTML5 中,您应该能够使用 WebSockets 来实现您在中间使用服务器所做的事情。WebSocket API

但是,如果您不想使用 HTML5 WebSockets,还有另一种在 JavaScript 中模仿 Sockets 的技术。也就是说,服务器可以与客户端对话。这种技术称为长轮询。客户端向服务器发送请求以请求更新,如果没有可用的更新,服务器将保留该请求,直到有可用的更新并将其发送回客户端,此时他们再次发出更新请求。简单的长轮询示例

另一种选择,如果您非常熟悉 Java,您可能希望查看Google Web Toolkit。GWT 是 Java 的一个子集,它被编译为前端的 HTML 和 JavaScript,如果需要,可以创建一个服务器端 java 可执行文件,您可以将其与 TomCat 或其他 Web 服务一起使用。在此选项中,您有一些库允许您编写将编译为长轮询 JavaScript 的套接字样式代码。

祝你好运!

于 2012-11-05T17:49:48.193 回答