Peer to Peer,Javascript Games

时间:2013-05-30 16:29:01

标签: javascript p2p tidesdk

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

  1. 这一般可行吗?这是套接字吗?你有没有用javascript代码完成这个的链接?
  2. TideSdk可以实现吗?你知道有关TideSdk的这个例子的链接吗?
  3. 玩家如何知道他们的机器所在的IP地址/端口是什么,以便他们可以将其提供给其他玩家?
  4. 我很抱歉这些是模糊和开放的问题,但我真的不知道从哪里开始寻找这些东西,因为我真的不知道我要找的东西是什么。

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

2 个答案:

答案 0 :(得分: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连接并找出它对我的游戏是否足够快。

答案 1 :(得分:1)

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

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

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

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

所以,如果你想建立一个游戏,那么你需要一台服务器。我建议 Node.JS 旁边Socket.IO