4

我玩过使用 GameCenter 制作回合制游戏。我理解默认情况下,GameCenter 假定在任何给定时间,在众多参与者中,只有一名玩家持有“接力棒”,并且该玩家是唯一可以影响当前游戏状态的玩家。游戏玩法是异步的,即轮到谁都可以慢慢来,一旦轮到其他玩家就会收到通知。

到目前为止,一切都很好。

现在我想使用 GameCenter 来实现一种类似但略有不同的回合制游戏:一种异步游戏,其中玩家不是连续的玩家连续,而是并行地进行回合,然后将它们合并为一个新的游戏状态一次所有玩家都“上交”了他们的动作。

一个很好的模型游戏是Rock, Paper, Scissors:两个玩家都秘密决定他们的动作(“ rock ”,或“ paper ”,或“scissors”)。然后将它们提交到服务器的顺序是任意的;即,当玩家尝试在正在进行的回合中提交移动时,任何玩家都不应该出现“不轮到你”类型的错误。一旦他们都上交了他们的动作,所有玩家的选择都会被揭示,并确定/宣布当前回合的获胜者。

问题是:是否有可能通过设计或变通方法将 GameCenter 基础设施用于此类游戏?如果是这样,什么是好的方法?

4

1 回答 1

1

无法按照您建议的方式使用 Game Center 来实现这一点,但您可以采取一种看起来好像您确实设法做到这一点的方法。

当您开始回合制比赛时,总是轮到本地玩家。游戏中心要么为您提供空白比赛,要么您将收到一场已经轮到其他人参加的比赛。没有办法控制这一点,因此您需要为两者做好准备。

您可以采取的方法是让玩家在向他们展示其他人的动作之前总是轮到他们。只有这样,您才能检查在您当地的情况下,每个人现在是否都轮到他们了,并且您会显示结果。这将提供您所要求的错觉。在石头剪刀布的情况下,您现在可以决定比赛结果。将通知其他玩家。

但是,如果不是每个人都轮到了这一轮,不要显示任何东西,也更新游戏状态,但告诉用户你现在正在等待其他人轮到他们。当您被通知再次轮到您时,您将能够显示结果,并且游戏状态已经指示结果。

于 2013-01-14T20:58:15.447 回答