使用Game Center的回合比赛,如俄罗斯方块或宝石迷阵



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

  • 玩家1挑战朋友
  • 播放器1开始播放。玩家2可能在开始游戏,也可能不在同时。他可能会立即或几天后开始打球
  • 当两者都完成后,会比较分数,看看谁是赢家。两人都收到了警报

我认为Game Kit的回合制是最好的选择。但这并不是一个真正的回合制游戏,所以它并不完美。

由于我不希望球员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完成比赛时,对2个分数进行比较,并确定获胜者。这里唯一的问题是,当我不想创建后端时,我必须创建后端。

无论如何,我们都非常感谢您的建议!非常感谢。

我不是Game Center的专家,但基于回合的比赛支持听起来不适合这份工作。

你的异步多人游戏听起来有点像你在Jetpack Joyride中看到的,就像在WWDC 2012 Session 500(游戏技术启动——视频开始大约10分钟)中演示的那样。他们使用了Game Center新的"得分挑战"功能,但通过提供其他玩家的幽灵来增强它。他们通过记录你的比赛来做到这一点,当你挑战另一名选手时,他们会将记录上传到他们的服务器,在那里,记录由他们存储在GKScorecontext字段中的64位值标识。当你的朋友接受挑战时,他的游戏副本会从分数挑战中提取该值,并使用它从服务器上查找和下载记录的比赛数据。

最新更新