我目前有一个多人卡牌游戏开发和工作在Java,它正在工作在控制台。游戏的形式与桥牌和黑桃相似,减去了竞价过程。它是一个四人游戏,玩家轮流出一张牌。
我目前正在将其转换为一个基于浏览器的webapp,并添加了spring MVC,使用HTML、JavaScript和AJAX作为UI和与后端的通信。我有一个很好的想法,我想要采取的方法,使这工作的单人对AI允许用户发挥他们的牌,并使用AJAX调用从服务器获得接下来的三个玩法。
然而,我想知道我需要采取什么样的方法来实现多人游戏。我看到过一些关于“套接字编程”的引用,我对此并不熟悉,但这些引用似乎都围绕着Java的小程序,而不是基于浏览器的应用程序。
基本上,我正在寻找一种方法来确保当一个用户开始一个游戏而其他人加入时,我如何确保他们连接到同一个游戏,并且能够看到彼此的玩法?我现在问这个问题之前,我有一个完整的UI开发为单人,因为我想避免一个完全的重新设计支持多人功能。
由于您正在创建一个多人游戏,您将需要至少有一个服务器供您的客户机(一个或多个)连接到。由于您希望使这个浏览器基于,所以您很可能需要自己的服务器(而不是让其中一个客户端作为服务器)。当用户加入游戏时,它将登录到该用户所在的服务器上。当玩家执行某个动作时,服务器处理该动作,然后向连接到该房间的每个其他客户端发送通知。此时客户端UI更新。
在过去,您不能使用纯HTML/JavaScript完成此操作,因为您不能打开套接字。这意味着服务器无法通知客户端。然而,在HTML5中,您应该能够使用WebSockets来实现您在中间使用服务器所做的事情。WebSocket API
但是,如果不想使用HTML5 WebSockets,还有一种模仿JavaScript中套接字的技术。也就是说,服务器可以与客户端进行对话。这种技术称为长轮询。客户机向服务器发送请求更新的请求,如果没有可用的更新,服务器将保留该请求,直到更新可用,并将其发送回客户机,在此点他们发出另一个更新请求。简单的长轮询示例
另一个选择,如果你非常熟悉Java,你可能希望查看谷歌网络工具包。GWT是Java的一个子集,它为前端编译成HTML和JavaScript,如果需要,它会创建一个服务器端的Java可执行文件,可以与TomCat或其他web服务一起使用。在这个选项中,您有几个库,允许您编写套接字风格的代码,这些代码将被编译为长轮询JavaScript。
祝你好运!