将 Google 回合制多人游戏与 Google App Engine 集成
Posted
技术标签:
【中文标题】将 Google 回合制多人游戏与 Google App Engine 集成【英文标题】:Integrating Google Turn-Based Multiplayer with Google App Engine 【发布时间】:2014-10-11 04:22:47 【问题描述】:我现有的 android (Java) 游戏让玩家与多达 8 个 AI 对手对抗。我现在决定实现一个异步在线回合制多人模式。由于我目前通过 Google Play 游戏服务支持排行榜和成就,因此我希望使用他们的回合制多人 API,但由于该 API 中存在以下限制,事实证明这远非理想 -
每个玩家都必须在游戏期间留在应用中 一次只能玩一个多人游戏我的游戏属于这样一种类型,您可能会玩一个回合然后关闭游戏,直到收到通知说又轮到您了。此外,对于八人游戏,所有八个实例都不太可能在整个游戏期间保持运行。玩家也可能希望同时参与多个不同的游戏。 (虽然游戏不像 Draw Something,但他们的多人模式与我需要的类型相似)。
在排除了使用回合制 API 的可能性后,我一直在研究其他可能性并遇到了 App Engine。不幸的是,我 99% 的开发人员经验都与客户端编码有关,因此其中一些问题可能看起来很幼稚......
是否可以将 Google Play 游戏服务与 Google 集成 应用引擎?理想情况下,我希望将所有内容与每个内容联系起来 玩家的 Google 帐户,因为我已经在使用 Google Play 游戏 成就和排行榜服务。
App Engine 是否适合允许多个实例 异步回合制游戏?
我能否使用多人游戏 API 的某些部分,例如大厅 还是需要从头开始编写?
设置 后台系统?我需要什么资源?
我们将非常感谢您对上述任何建议。
【问题讨论】:
【参考方案1】:正如之前的回答所指出的,实时 API 和回合制 API 有所不同 - 回合制 API 确实允许您异步进行游戏,并且 - 据我所知 - 您还可以运行多个游戏没有任何问题。
https://developers.google.com/games/services/android/turnbasedMultiplayer
该系统不适用于同时移动的回合制游戏,但根据您的描述,我认为它可以满足您的目的。
关于您的问题,我自己花了一些时间研究多人回合制游戏的解决方案,以下是我的观察:
一切皆有可能。但如果您的问题是 - Google Play 服务是否支持集成,那么答案是否定的。
它与您可能用来实现 Web 服务的大多数其他框架一样适用。尽管它确实取决于您在服务器端需要多少处理;请注意,请求可以运行多长时间等有一些限制。
你需要自己动手。
如果您是 Java 程序员,您应该考虑使用基于 Java 的后端框架;谷歌应用引擎支持这个OK。您还可以考虑在其他地方设置您自己的虚拟服务器,因为至少现在使用 Google App 引擎来处理这样的事情(至少是 IMO)并没有太大的好处。您需要明确两个关键要素:您的游戏状态如何保存在服务器端,以及用户如何进行身份验证。后者尤其重要。
如果您的游戏结构符合 Google Play 服务回合制框架,那么我肯定会在寻求自己的解决方案之前三思而后行 - 至少目前是这样。
【讨论】:
【参考方案2】:游戏 API 提供实时或回合制多人游戏。在实时游戏中,所有玩家都必须保持连接,这是真的。但是对于回合制游戏,他们可以退出、转动手机,甚至可以从不同的设备为每一回合付费。这听起来完全像你想要的。您是否将实时文档与基于回合的文档混淆了?
【讨论】:
以上是关于将 Google 回合制多人游戏与 Google App Engine 集成的主要内容,如果未能解决你的问题,请参考以下文章
Android Google Play 游戏服务回合制多人游戏不自动匹配
iOS-Google Play 游戏服务的可用性回合制多人游戏
带有 Google Play 游戏服务和 IntentService 的回合制安卓游戏