2

我正在构建一个类似于宝石迷阵的游戏。我计划集成 Game Kit 以允许玩家与朋友对战。我想要的流程是:

  • 玩家 1 挑战朋友
  • 播放器 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 完成时,比较两个分数并确定获胜者。这里唯一的问题是我必须在我不想的时候创建一个后端。

无论如何,建议表示赞赏!谢谢你。

4

1 回答 1

1

我不完全是 Game Center 方面的专家,但基于回合的比赛支持听起来像是适合这项工作的错误工具。

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

于 2012-10-04T05:26:40.240 回答