【问题标题】:Peer to Peer, Javascript Games点对点,Javascript 游戏
【发布时间】:2013-05-30 16:29:01
【问题描述】:

我正在为网页编写一个简单的 javascript 游戏。我将使用潮汐dk将其转换为桌面。我想让不同机器上的玩家无需通过服务器进行通信。

  1. 这一般可以吗?这是插座吗??您是否有任何使用 javascript 代码完成此操作的链接?
  2. TideSdk 可以做到这一点吗?您是否知道任何指向使用 TideSdk 完成此操作的示例的链接?
  3. 玩家如何知道他们的机器所在的 IP 地址/端口,以便将其提供给其他玩家?

很抱歉,这些问题含糊而开放,但我真的不知道从哪里开始寻找这些东西,因为我真的不知道我要找的东西叫什么。

...哦,如果可以的话,我不想使用任何第三方的东西。也许是 jquery 的推送。

【问题讨论】:

  • 如果没有服务器,无论是您托管还是由第三方托管,我都想不出办法来实现这一点。如果您想要“实时”游戏玩法,您可能需要 WebSockets,但它需要一个服务器来管理连接。我从来没有用过 TideSDK,虽然它看起来很酷,所以他们可能有一些特别的东西
  • 第二个 Ian,WebSockets 是您可能的答案。在这种情况下,您将需要某种服务器,但至少您可以近似实时点对点。我建议查看 NodeJS 来构建您的 WebSocket 平台。
  • WebRTC 是你想要的。但是你仍然需要一个服务器来启动玩家之间的通信。但是一旦你有了它,它就会是 p2p。
  • 感谢您的回答。我调查了这些。

标签: javascript p2p tidesdk


【解决方案1】:

这对于 Web 浏览器提供的 API 是不可能的(正如其他人所说,您需要使用 Socket.IO 之类的东西并通过服务器进行通信)。好在你用的是TideSDK,只要你对网络效率的要求不高就可以了。您需要提供一个服务器,但它不必强大到足以承载实际游戏。

一般客户端和服务器方法

还有其他组织网络的方法,但如果您认为它们更容易实施,可以查找它们。

您的服务器将托管实际的游戏下载并提供匹配功能。人们下载的客户端会联系这个匹配服务器来寻找其他想玩的人。

匹配服务器应选择其中一个客户端作为其他客户端的主机。最后,匹配服务器将告诉被选为主机的客户端它是主机,并给它每个人的连接信息(端口和 IP 地址),同时向其他客户端提供所选主机的连接信息。主机将连接到其他客户端。

主机将是唯一真正对游戏进行任何处理的计算机,而其他客户端只显示主机发送给它们的任何信息。客户端在各自的计算机上从每个玩家的角度呈现游戏的当前状态,并捕获用户输入,然后将其发送到主机进行处理。

实施

TideSDK 提供了一个Ti.Network.TCPSocket 对象,它可以与 TCP 服务器建立原始 TCP 客户端连接。不幸的是,它也没有提供制作原始 TCP 服务器的方法。相反,TideSDK 提供了一个Ti.Network.HTTPServer 对象,它实现了基于 TCP 的 HTTP 协议服务器,以及一个 Ti.Network.HTTPClient 对象,它提供了一个 HTTP 客户端(它实际上只是对普通 AJAX 请求 API 的抽象)。您可以在主机上使用提供的 HTTP 服务器,并使用提供的 HTTP 客户端在客户端上直接连接到它。数据将使用 HTTP 协议进行交换。据我所知,这是您在这里唯一的选择。

我没有找到任何示例代码(除了 TideSDK 文档中的内容),但如果您真的感兴趣,可能会找到一些。

后续步骤

如果我想继续使用 TideSDK,我会执行以下操作:

  • 告诉 TideSDK 的开发人员您对 TCP 服务器套接字感兴趣。原始 TCP 连接会比 HTTP 快得多。
  • 测试 HTTP 连接,看看它对于我的游戏是否足够快。

【讨论】:

    【解决方案2】:

    是的,这通常是可能的,而套接字正是您所需要的。虽然我认为这在实践中是不可能的,但原因如下。

    通常在 P2P 游戏中,会有一个服务器知道谁在线,以及他们的 IP 是什么。当新玩家连接到服务器时,他们会看到其他用户的列表,他们可以选择他们想玩的人。

    如果没有服务器,用户将无法查看谁在线,也无法回答您的第三个问题:

    • 玩家如何知道他们的机器在哪个IP地址/端口,以便他们可以将其提供给其他玩家?他们是否可以找到自己的IP并不重要,他们无法找到对手的 IP(无需通过电话呼叫他们 :))。

    因此,如果您想开发一款游戏,那么您需要一台服务器。我建议 Node.JSSocket.IO

    【讨论】:

    • 感谢您的回答。这是非常有用的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 2011-04-30
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多