【问题标题】:peer-to-peer multiplayer game with xmpp使用 xmpp 的点对点多人游戏
【发布时间】:2011-04-30 09:49:07
【问题描述】:

我对多人游戏还很陌生。我为自己的乐趣做了一些,但没有什么深刻的。

无论如何,我想制作一款非常跨平台的游戏。客户将在我发布游戏的设备(很可能是计算机(通过闪存)、iPhone 和 android)上与他们的 Facebook 帐户相关联。我是一个预算有限的独立开发人员(实际上更像是没有预算)。所以,我想用点对点连接来制作游戏。由于维护服务器的成本,我想避免使用客户端/服务器设置。我遇到的问题是无法通过互联网连接对等方,而且游戏不适合通过本地 wifi 玩。

所以,我有一个想法。我可以使用 facebook 的内置 xmpp 聊天功能通过 Internet 发送游戏的多人通信吗?我以前有用于多人游戏的 xmpp 负责人。有没有人有任何其他想法?我知道 xmpp 可以点对点连接,但可以通过互联网以某种方式完成。我不希望用户必须弄乱路由器设置才能玩。

感谢您的帮助!

【问题讨论】:

  • 这取决于您是要添加多人聊天,还是尝试使用协议来同步游戏数据?
  • 恐怕我没有澄清。我用它来同步数据。

标签: facebook xmpp p2p multiplayer


【解决方案1】:

P2P 系统的主要问题是 NAT 和防火墙。防火墙可以在本地打开,NAT 在 99% 的情况下不能。在 IPv6 世界中将没有 NAT,因此 P2P 对所有人都是免费的。

现在您想将 Facebook 的 XMPP API 用于 P2P 多人游戏。嗯...由于上述原因,Facebook 的 XMPP 实际上是客户端/服务器。 Facebook 的所有 API 所做的只是对应用程序隐藏传输层,这意味着您可以在消息实际通过 Facebook 服务器传输时将消息发送给“另一个用户”。 Skype 是另一个P2P+服务器环境的例子。如果两个用户站在一个 NAT 后面,它会自动使用代理服务器。

这与 FB 的 XMPP 基本相同,因此您可以使用它,除非您的 facebook 用户会在他们的聊天窗口中看到很多奇怪的消息 :)

【讨论】:

  • Grr。我以前很怕那个。有没有办法在消息进入聊天窗口之前获取消息。可能不是。您对如何通过 Internet 进行点对点通信有任何想法吗?我想使用 facebook 的聊天服务器,以便使用他们的带宽 :P 我在某处读到,您可以使用服务器连接您的用户,之后游戏可以是点对点的。当然,我不知道该怎么做。感谢您的快速回答!
  • 对不起,我也不知道。您可以尝试自己尝试,也许聊天消息有一种被过滤的特殊格式。 XMPP 是一种协议,不仅仅用于聊天。我不是这方面的专家。我发现了你的 NATting 问题,并从这个角度回答了你。但我不是 Facebook API 方面的专家
  • 好的,谢谢。我刚刚意识到我还有另一个问题......游戏需要能够同时连接两个以上的人。
【解决方案2】:

我认为您不能仅使用 facebook jabber 服务器来构建多人游戏。您需要在您自己的服务器上安装一个自定义的 jabber 组件,以在游戏用户之间传输的 xmpp 数据包上强制执行您的游戏业务逻辑。

这将(可能)涉及在您的最后编写自定义 Jabber 组件协议 XEP-0114Bosh Connection Manager 组件。如果您希望使用 PHP 来开发您的应用程序,您可以查看 Jaxl 库(PHP 中的 XMPP 组件和客户端库)

【讨论】:

  • 好的,谢谢。我想我已经决定放弃使用 xmpp 同步游戏的想法(至少对于点对点)。一厢情愿,但我不认为我能成功。
  • 我想我会尝试构建一个使用非常少带宽的简单匹配服务器(至少,与完整的客户端/服务器设置相比)。其中一个用户将是超级对等点或本质上是服务器。我将看看 NAT 穿透,看看我是否可以引入对等体并让他们接管后记(消除对全功能专用服务器的需求)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多