Android两款游戏将在互联网上播放

时间:2011-06-07 10:35:32

标签: android android-c2dm

我在Android中开发了一个简单的双人棋牌游戏,可以使用蓝牙进行游戏。我希望通过互联网播放来扩展它。每当玩家进行移动时,移动应通过互联网传输给其他玩家。

如何实现这一目标?

我听说过C2DM机制。这对我描述的场景是否适用并且可靠吗?

感谢:)

9 个答案:

答案 0 :(得分:9)

是的,C2DM非常适合这种类型的游戏。这就是我用于自己的游戏(http://www.chesspresso.net),它是android的对应棋牌客户端。

使用C2DM时需要考虑的事项:

  • 您不会将信息发送到设备,而是通知设备已进行了移动。您不使用C2DM来传输数据,而是使用它来通知某些内容已发生变化。

  • 适用于2.2+ Android,这是大多数设备。但如果您想支持旧设备,则必须考虑替代方案。我正在使用旧设备进行轮询。

  • 您必须请求开发人员访问权限,然后一旦您的应用程序准备就绪,您必须请求生产状态。如果您不这样做,一旦发布,您将很快达到开发者状态配额!他们非常慷慨的生产配额,但你必须解释你使用它的原因,也可能需要几个星期才能被接受!

  • 您的用户必须拥有经过授权的Google帐户,否则其他C2DM将无效。大多数用户将拥有与其设备相关联的帐户,但有些用户不会这样,这意味着您可能需要验证是否存在帐户以通知用户。

  • 它可靠,但是一次又一次的设备将不得不等待消息。有时几分钟。通常是它的瞬间。

希望有所帮助!

更新: C2DM现已被弃用,取而代之的是Google的GCM

另外,我强烈建议您查看其他选项,因为将自己绑定到特定于Google的API意味着您将无法支持外部市场。对于替代方案,我目前正在评估Amazon SNS,我也将关注Urban Airship。可能还有其他我尚未考虑进行评估的替代方案。

更新: 非谷歌推送通知的评估更新: 亚马逊SNS不是这个任务的项目,而绝大多数应用程序的Urban Airship太贵了。不幸的是,所有其他选择都非常昂贵,特别是如果你的应用程序(像我的)非常依赖推送。

答案 1 :(得分:6)

这样做的好方法是在对等体之间使用简单的直接TCP连接。

如果您不熟悉Java上的套接字编程,请尝试以下方法:

All About Sockets

答案 2 :(得分:5)

另一种选择是使用某种IM作为app的通信媒介。例如。使用Asmack连接到XMPP我喜欢GTalk。提示用户在那里为您的游戏创建帐户。 并使用它通过IM发送和接收命令。这样您就不需要设置中介服务器了。

如果用户知道他正在玩谁,这是有效的。要收集用户数据并让他们搜索可用的播放器,您仍需要设置服务器。 IRC聊天室也可以选择避免这种情况。

  • GTalk只是一个例子。您也可以使用任何IM或IRC。

答案 3 :(得分:3)

C2DM它不是设计转移信息,即使它们很小,如“b4中的马”或类似的东西。它的目的是通知设备某些东西,可能是一个新版本的文档或网站上的更多文章。这样的东西..它不是为了将设备与设备进行通信而设计的。而且对于实时国际象棋游戏而言,它可能还不够快。

您应该通过互联网寻找更传统的沟通方式,或者搜索一些能够帮助您的图书馆(我很确定存在的东西......)。

答案 4 :(得分:3)

恕我直言,C2DM正是你想要下棋的那种东西;在oppo转弯时(可能是几分钟/小时/天以后?)通知。我已经与一些谷歌Android开发者讨论了我的游戏,他们已经说过C2DM非常适合这种情况。你需要通过一个集中的服务器(好吧,不是必要但非常可取),因为可能存在重新同步游戏状态等问题。担心“达到极限”?好吧,首先,我的c2dm帐户被限制为每天“仅”100,000封邮件。如果你碰到那个我猜你买的是饮料!

答案 5 :(得分:3)

国际象棋通常通过电子邮件播放。你可以这样做。

当然,任何集中式/联合邮件系统都可以使用。

可能更适合您使用的是将jabber客户端添加到应用程序,并让程序生成用于自动消息传递的帐户名称。您可以托管jabber服务器或在免费提供商上生成帐户。

答案 6 :(得分:2)

Google App Engine如果您了解Python或Java。

另外,目前有两种广泛使用的Web应用程序API样式:SOAP XML和RESTful Web服务。

如果您了解RoR我会建议您使用JSON / REST,因为您可以使用Phusion Passenger与Apache一起部署您的应用。免费,非常简单,使您的服务器非常可靠。

你可以,我只提这个,因为我的朋友一直这样做,使用twitter作为游戏之间的服务器。

我还发现了一个名为mages的lib,看起来很有希望。

祝你好运。

答案 7 :(得分:1)

我为我的在线2D rpg做了这个:http://developingthedream.blogspot.com

基本上,使用中间人服务器来协调所有客户端之间的数据。 您只需打开一个套接字并与中间服务器通信,它就会将信息传递给任何其他连接的客户端。

由于邮件限制,我不建议使用C2DM,因为延迟仍然很大。使用您自己的服务器,您可以优化它,而且您将是唯一一个使用该服务的服务器,因此您的数据将更快地交付。

答案 8 :(得分:0)

我认为C2DM不适合下棋,因为不保证会传递消息。您需要更可靠的数据传输方式