iphone - 将 Game Center 的回合制比赛用于俄罗斯方 block 或 gem 迷阵等游戏

标签 iphone objective-c ios game-center gamekit

我正在制作一款类似于 gem 迷阵的游戏。我计划整合 Game Kit 以允许玩家与 friend 对战。我想要的流程是:

  • 玩家 1 向 friend 发起挑战
  • 玩家 1 开始玩。玩家 2 可能会也可能不会开始玩 同一时间。他可能会立即或几天后开始演奏。
  • 当两者都完成后,比较分数,看谁是赢家。 两者都收到警报。

我认为 Game Kit 的轮流是要走的路。但这并不是真正的回合制游戏,因此并不适合这种用法。

因为我不希望玩家 2 必须等待玩家 1 完成才能开始,所以我想我可以让玩家 1 的“第一回合”只是将棋盘状态发送给玩家 2。我不希望玩家 1 必须等待玩家 2 完成才能开始游戏。

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

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

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

无论如何,我们将不胜感激!谢谢。

最佳答案

我不是 Game Center 方面的专家,但回合制比赛支持听起来不适合这项工作。

您的这种异步多人游戏听起来有点像您在 WWDC 2012 Session 500(游戏技术启动 -- 进入 video 大约 10 分钟)中演示的 Jetpack Joyride。他们使用 Game Center 的新“得分挑战”功能,但通过提供其他玩家的幽灵来与之竞争来增强它。他们通过记录你的比赛来做到这一点,当你挑战另一个玩家时,将记录上传到他们的服务器,在那里它由他们存储在 context 中的 64 位值标识。领域GKScore .当您的 friend 接受挑战时,他的游戏副本会从得分挑战中提取该值,并使用它从服务器中查找和下载记录的比赛数据。

关于iphone - 将 Game Center 的回合制比赛用于俄罗斯方 block 或 gem 迷阵等游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12718745/

相关文章:

iphone - API key 必须在每个请求中作为 API-Key header 传递

iphone - 调试/发布版本之间的 iOS 精度差异会扰乱 View 吗?

objective-c - 如何检测某些字符是否位于 NSString 的末尾?

ios - 如何在 Xcode 管理器中访问设备日志(不是崩溃报告)

ios - Swift2 iOS - 注销当前用户并创建新用户,为新用户保留旧用户的默认值

ios - 自定义 UIButton - IBAction 不工作

ios - 我的 bundel ID 与提供的应用程序 ID 完全匹配。为什么它不起作用?

iphone - 监控应用程序使用情况

ios - Objc - 以编程方式使用两个图像数组之一?

objective-c - 如何动态类型转换对象以支持应用程序的 ScriptingBridge 头文件的不同版本?