Iphone 使用游戏中心&x27;s为俄罗斯方块或Bejeweld这样的游戏轮流比赛

Iphone 使用游戏中心&x27;s为俄罗斯方块或Bejeweld这样的游戏轮流比赛,iphone,objective-c,ios,game-center,gamekit,Iphone,Objective C,Ios,Game Center,Gamekit,我正在制作一个类似于Bejeweld的游戏。我正在计划集成游戏套件,让玩家可以和朋友比赛。我想要的流程是: 玩家1挑战朋友 玩家1开始游戏。玩家2可能会也可能不会开始在 同时。他可能会立即或几天后开始演奏 当这两项都完成后,将对分数进行比较,以确定谁是赢家。 两人都得到了警告 我认为游戏装备的轮换是一条路要走。但这并不是一个逐回合的游戏,所以它并不适合这种用法 因为我不希望玩家2必须等到玩家1完成后才能开始,我想我可以让玩家1的“第一回合”简单地将棋盘状态发送给玩家2。我不希望球员1必须等到

我正在制作一个类似于Bejeweld的游戏。我正在计划集成游戏套件,让玩家可以和朋友比赛。我想要的流程是:

  • 玩家1挑战朋友
  • 玩家1开始游戏。玩家2可能会也可能不会开始在 同时。他可能会立即或几天后开始演奏
  • 当这两项都完成后,将对分数进行比较,以确定谁是赢家。 两人都得到了警告
我认为游戏装备的轮换是一条路要走。但这并不是一个逐回合的游戏,所以它并不适合这种用法

因为我不希望玩家2必须等到玩家1完成后才能开始,我想我可以让玩家1的“第一回合”简单地将棋盘状态发送给玩家2。我不希望球员1必须等到球员2完成后才能开始比赛

到目前为止,我正在考虑两种方法,但我希望其他人可能有更好的想法

方法1:玩家1的“第一回合”是将棋盘状态发送给玩家2。玩家1现在可以玩棋盘了,他的分数存储在本地,检索它的键是比赛号码。每当玩家2结束时,他的分数将在比赛数据中发送回玩家1。玩家1被通知轮到他了。当他重新开始比赛时,将检索他本地存储的分数并与玩家2进行比较。此时宣布胜利者。这并不理想,因为玩家1必须重新登录,即使他已经完成了游戏

方法2:和方法1一样,玩家1的“第一回合”是将棋盘状态发送给玩家2。玩家1可以玩棋盘,但现在他的分数被发布到Rails服务器(或者类似Parse.com的东西来简化它)。玩家2完成回合后,将进行api调用以查看玩家1是否完成。如果他有,则检索和比较分数,并确定获胜者。若并没有得分,则玩家2的回合结束,控制权传回到玩家1。当玩家1结束时,比较两个分数并确定胜利者。这里唯一的问题是我必须创建一个后端,而我不希望这样


在任何情况下,我们都非常感谢您的建议!谢谢。

我并不是游戏中心方面的专家,但基于回合的比赛支持听起来不适合这项工作


您的异步多人游戏听起来更像您在WWDC 2012 Session 500中演示的Jetpack Joyride(游戏技术启动——大约10分钟后)。他们使用了游戏中心新的“得分挑战”功能,但通过提供其他玩家的幽灵来增强它。他们会记录你的比赛,当你挑战另一名球员时,会将记录上传到他们的服务器上,在服务器上,记录由他们存储在
GKScore
context
字段中的64位值标识。当您的朋友接受挑战时,他的游戏副本会从分数挑战中提取该值,并使用该值从服务器上查找和下载记录的比赛数据。

这可能就是解决方法。。。但这听起来并不完美,因为如果我理解正确的话,你必须等到游戏结束后才能发出挑战。因此,只有在得分较大时,您才会发出挑战。那是另一种感觉。如果你俩在同一个房间,你也不能同时玩(这没什么大不了的,但会很酷)。不一定:你可以通过编程的方式为你发布到游戏中心服务的任何
GKScore
发出挑战。您可以截取挑战事件,使用自己的UI(或根本不显示)对收到的挑战作出反应。所以,从理论上讲,你可以在游戏过程中定期发布分数挑战,甚至在每个玩家领先时来回发出ping声。这是一种高带宽(特别是当每个挑战都包括服务器上的数据时),也是一种滥用系统的行为,但如果你能围绕它进行引人注目的游戏,也许它会通过审查你的问题是怎么解决的。我有一个类似的情况,你有没有想出一个有效的解决方案?很抱歉,我们都忙于其他事情,从来没有抽出时间来实现这个功能。至少我们还没有。在任何情况下,这就像试图把一个正方形的钉子放在一个圆形的洞里。这项工作似乎没有什么好工具。谢谢,似乎是这样。我在等着看WWDC 2013是否有任何方孔。!