首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >点对点,Javascript小游戏

点对点,Javascript小游戏
EN

Stack Overflow用户
提问于 2013-05-30 16:29:01
回答 2查看 1.5K关注 0票数 2

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

  1. 一般情况下这可能吗?这是索克斯吗?您有使用javascript代码进行此操作的链接吗?
  2. 这与TideSdk是可能的吗?你知道用TideSdk做这件事的例子的链接吗?
  3. 玩家如何知道他们的机器在哪个ip地址/端口上,这样他们就可以把它给另一个玩家了?

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

..。哦,如果我能帮上忙的话,我不想用第三方的东西。可能是jquery推了一下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-30 18:12:32

对于web浏览器提供的API来说,这是不可能的(正如其他人所说,您需要使用类似Socket.IO的东西并通过服务器进行通信)。幸运的是,由于您使用的是TideSDK,只要您不需要很高的网络效率,这是可能的。您的需要提供一个服务器,但是它不需要足够强大来承载实际的游戏。

通用客户端与服务器方法

组织网络还有其他方法,但如果您认为这些方法更容易实现,则可以查找这些方法。

您的服务器将托管实际游戏下载,并提供匹配功能。人们下载的客户端将与此婚介服务器联系,以找到其他想玩的人。

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

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

实现

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

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

下一步

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

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

Stack Overflow用户

发布于 2013-05-30 17:00:24

是的,一般情况下是可能的,套接字是你所需要的。虽然我认为这在实践中是不可能的,但原因如下。

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

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

  • 玩家如何知道他们的机器在哪个ip地址/端口上,这样他们就可以把它给另一个玩家?--如果他们能找到自己的IP,他们没有办法找到对手的IP (不打电话给他们:)。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16841402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档