如何在JavaScript中处理多人游戏?


12

我只是对用于移动多人游戏的技术进行了一些研究。

目前,这只是一个实验,因此,玩家唯一需要了解的就是其他玩家。

如果这是一个典型的Web应用程序而不是一个游戏它只会一直触发HTTP请求-但是由于这是一个游戏,因此性能和准确性将成为一个问题。

由于该游戏针对多个电话平台,因此可以说客户端将使用JavaScript或基于JavaScript的框架编写。服务器技术是完全开放的。

每个玩家都需要做一个HTTP帖子,并且只能使用更快的协议。基于网络的多人游戏的原因是,跨蓝牙或其他本地网络的多人游戏在平台之间的差异太大,可能会引起问题。

因此,问题归结为可用于JavaScript多人游戏的良好协议/技术是什么?关于服务器端的东西有什么建议吗?有什么理由我应该放弃这种两层体系结构并直接进行电话到电话的连接?

Answers:


15

您想要一个比HTTP更好的通信协议。您可能需要UDP或TCP。浏览器无法进行UDP通信,因此唯一的选择是TCP。

对于TCP,您可能希望使用WebSocket,但是浏览器对websockets的支持不稳定。

这意味着您将需要使用COMET技术来仿真TCP,一种流行的仿真是嵌入在Flash应用程序中的websocket。

Socket.IO是一个库(用于node.js),它支持websocket,并在不兼容的Web浏览器上使用适当的后备方式对其进行仿真(它使用Flash和其他COMET技术)。

对于多人JavaScript游戏,我建议使用socket.io和node.js


1
这是使用HTML5和WebSockets制作的实时游戏的示例:rawkets.com。源代码可以在这里找到:github.com/robhawkes/rawkets
Elisée

1
这里有2个 更多的例子
Raynos

4

问题和已接受的答案均于2011年发布,自:)以来,时代已经发生了很大变化。

Websocket非常流行,但是WebRTC甚至是一种更好的技术,它允许不可靠的UDP流。这些对于游戏来说要好得多。

除了交流以外,编写多人游戏时还需要克服许多其他障碍,例如游戏状态协调,客户端预测,序列化等。

<shameless self promotion>

我是lance.gg的原始开发者之一,lance.gg是一个基于node.js的多人游戏服务器/库,在其中我们解决了许多提到的问题(以及许多其他问题!)。我们的目标是使JavasScript游戏开发人员更容易进行多人游戏开发。我热烈地邀请您使用它作为制作游戏的起点。

</shameless self promotion>


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.