24

我是一名安卓开发者,我制作了一些棋盘游戏。现在我想让我的一些棋盘游戏成为多人游戏。我不想创建和托管自己的 Web 服务,所以我想到了 P2P。

我发现的第一件事是 XMPP 协议,但它不是真正的 P2P,但如果我可以使用现有的 google talk 服务,我就准备好了。在使用您现有的 google 帐户而不干扰您的 google talk 客户端的正常工作时,这是否可能?

然后我听说了 JXTA,一个真正的 P2P 解决方案,它已经从 J2ME 移植到 Android ( http://code.google.com/p/peerdroid/ )。

也许我在这里过于复杂了(就像我有时所做的那样)

我只想知道为棋盘游戏做简单 P2P 的最简单方法。

欢迎您提出所有意见!提前致谢

4

4 回答 4

4

Kristof, Did you get an answer to your question? I've been working on a multi-player application recently as well, though I've chosen to host the server (originally). I'm now reconsidering my choice, though, but the library I'm using fully supports peer to peer communications. The underlying protocol is built on top of Google Protobuf. It's essentially a full duplex RPC stack built on top of Netty, which can use Protobuf. Here's the URL to the RPC protobuf stack: http://code.google.com/p/protobuf-rpc-pro/

The author has been very helpful and I've found a couple of bugs, nothing major. I also had very little issues getting these libraries working on my Android phone, but they're not terribly "compact." Nothing extraordinarily large, just not small :). So far, I've had no issues getting the communications working both synchronously and asynchronously. As such, I may be moving my game over to a "peer to peer" style, and just provide the necessary location/registration server that would be used to find existing games/server.

于 2010-10-21T21:12:00.113 回答
3

根据我们所见,您无法使用现有的 Google Talk 服务/连接。你应该接受 Janusz 的建议并查看 smack 库,这是你最好的选择。要允许使用同一个 GTalk 登录的多个非干扰连接,请查看 XMPP 地址的资源组件,它允许您同时登录到两个客户端到同一个帐户。您可以有效地使您的游戏成为另一个客户端。更多信息:http ://code.google.com/appengine/docs/java/xmpp/overview.html#JIDs_and_Resources

最后,2.2 中似乎有一些与设备推送通信相关的新功能,但我还没有研究过。2.2 也尚未广泛部署,因此可能用途有限。

于 2010-06-30T03:40:12.023 回答
3

对于您的情况,应该可以使用 XMMP。从 igniterealtime看smack 。他们有一个很好的活跃的 java api,可以帮助你构建自己的 jabber 扩展包,可以用来传输游戏状态的变化。

我认为使用同一个帐户同时使用两个 google talk 客户端可能会很困难。但这会很棒,因为您可以直接从您的游戏中邀请您列表中的所有朋友与您一起玩。通过这种方式,您可以轻松吸引更多人玩您的游戏。

于 2010-03-05T08:45:59.510 回答
1

基本上,如果您想编写多用户游戏或基于 XMPP (Jabber) 构建的游戏,您应该认真研究 XMPP 的 pubsub 扩展。它旨在将数据从服务器推送到客户端,与 HTTP 正好相反。在 HTTP 中,客户端必须一直从服务器获取信息才能知道何时推送了一些新数据。虽然 XMPP 旨在将数据推送到客户端,但当发生某些事情时。在服务器和客户端上使用的资源更少。

您不应该使用 XMPP 的聊天部分,因为这会干扰用户的存在。

在 pubsub 中,您可以创建节点树,客户端可以在其中侦听在客户端订阅的树中的任何节点或子节点中发布的任何新数据。因此,如果某个客户端在一个节点上发布数据,则所有订阅该节点或任何父节点的客户端都会收到有关此数据的通知。

XMPP 的优点在于它是可扩展的,因此您可以使用自己的扩展来扩展协议。我还给你用户授权、认证和加密,你不需要自己调试。

您可以使用任何对 pubsub 有良好支持的 XMPP 服务器,也可以自己托管一台服务器。有很多服务器可用于此。我上次查看时 GTalk 不支持 PubSub。

于 2011-06-10T13:40:21.327 回答