2

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

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

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

...哦,如果我能提供帮助,我不想使用任何第三方的东西。也许jquery一推。

4

2 回答 2

3

这对于 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 连接,看看它对我的游戏来说是否足够快。
于 2013-05-30T18:12:32.647 回答
1

是的,一般来说这是可能的,并且套接字是您所需要的。虽然我认为这在实践中是不可能的,但这就是原因。

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

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

  • 玩家如何知道他们的机器所在的 IP 地址/端口,以便他们可以将其提供给其他玩家?他们能不能找到自己的IP没关系,他们没有办法找到对手的IP(不用打电话给他们:))。

所以,如果你想构建一个游戏,那么你需要一个服务器。我建议Node.JSSocket.IO

于 2013-05-30T17:00:24.400 回答