Android P2P多人游戏(带有)XMPP / Google对话b)JXTA peerdroid c)其他方式)

我是一个Android开发人员,我做了一些棋盘游戏。 现在我想制作一些我的棋盘游戏多人游戏。 我不想创建和托管我自己的Web服务,所以我想到了P2P。

我发现的第一件事是XMPP协议,但它不是真正的P2P,但如果我可以使用现有的谷歌聊天服务,我已经准备好了。 这是否可以在使用现有的Google帐户时干扰Google Talk客户端的正常工作?

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

也许我在这里过于复杂的事情(我有时会这样做)

我只是想知道为桌面游戏做简单P2P的最简单方法。

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

克里斯托夫,你有问题的答案吗? 我最近也在研究一个多人游戏应用程序,虽然我已选择托管服务器(最初)。 我现在正在重新考虑我的选择,但我正在使用的库完全支持点对点通信。 底层协议建立在Google Protobuf之上。 它本质上是一个建立在Netty之上的全双工RPC堆栈,它可以使用Protobuf。 这是RPC protobuf堆栈的URL: http : //code.google.com/p/protobuf-rpc-pro/

作者非常乐于助人,我发现了一些错误,没什么大不了的。 我在Android手机上运行这些库时遇到的问题也很少,但它们并不是非常“紧凑”。 没有什么特别大,只是不小:)。 到目前为止,我没有遇到同步和异步通信工作的问题。 因此,我可能正在将我的游戏转移到“点对点”风格,并且只提供将用于查找现有游戏/服务器的必要位置/注册服务器。

对于你的情况,应该可以使用XMMP。 看看点燃时间。 他们有一个漂亮而活跃的java api,它有助于构建自己的jabber扩展数据包,可以用来传输游戏状态的变化。

我认为使用同一帐户同时使用两个谷歌谈话客户可能很困难。 但这会很棒,因为你可以邀请你名单上的所有朋友直接从你的游戏中与你玩。 通过这种方式,您可以轻松吸引更多人玩游戏。

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

最后,2.2中似乎有一些与设备推送通信有关的新function,但我还没有调查过。 2.2目前尚未广泛部署,因此可能使用有限。

基本上,如果你想编写一个多用户游戏或在XMPP(Jabber)之上构建的游戏,你应该认真看看XMPP的pubsub扩展。 它旨在以与HTTP相反的方式将数据从服务器推送到客户端。 在HTTP中,客户端必须始终从服务器提取信息,以便能够知道何时推送了一些新数据。 虽然XMPP旨在将数据推送到客户端,但有些事情发生时。 服务器和客户端使用的资源更少。

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

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

XMPP的优点在于它是可扩展的,因此您可以使用自己的扩展来扩展协议。 我还为您提供用户授权,身份validation和加密,您无需自行调试。

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