2012-03-31 61 views
5

我已阅读http://developer.apple.com/library/ios/#DOCUMENTATION/NetworkingInternet/Conceptual/GameKit_Guide/Achievements/Achievements.html#//apple_ref/doc/uid/TP40008304-CH7-SW13处理持续游戏中的多个iOS Game Center用户

我对在单个设备上支持多个游戏中心用户的问题感到困惑。

特别是,我对如何在具有整体持续性进展的游戏中如何做到这一点感到困惑,比如冒险游戏或纵横字谜游戏。

也就是说,我觉得有两种游戏。其中一个,你开始一场比赛,直到你死,然后比赛结束。这种游戏似乎易于使用Game Center多用户模型处理。当新的Game Center玩家登录后,我可以加载他们的Game Center统计数据,然后他们可以玩游戏,我会相应地调整他们的成就/得分。唯一的特例是,如果Game Center玩家A正在玩游戏,游戏进入后台并且Game Center玩家B登录,然后游戏进入前台,会发生什么?在这种情况下,仅仅结束正在进行的游戏似乎很容易,并且说“对不起,您切换了Game Center用户,您需要开始一个新游戏。”

但另一种类型的游戏是一个持续的整体进展,通常是自动的。例如,假设我有一个有100个谜题的填字游戏。说玩家A完成了8个谜题,并且正在完成第9个谜题,然后游戏中心玩家变为玩家B.假设玩家A已经获得了“解决的5个谜题”成就。 B玩家登录后应该发生什么?

一个采取“正确”的方式来做到这一点(似乎在上面的苹果文件中暗示的那个)是游戏应该为每个Game Center玩家保留一个完整的保存状态。因此,当玩家B登录时,玩家A的状态应该自动保存到一边,并且谜题应该清除,以便玩家B可以从头开始处理它们。即便如此,当玩家A将游戏安装到新设备上时仍然存在问题。新安装的游戏将完成零谜题,但玩家A的Game Center用户已经拥有“解决的5个难题”成就。那么我们是否应该重置玩家A的成就?我们是否应该以某种方式自动填充谜题答案,让玩家A的游戏与他的成就一致?

在我看来,游戏中心模型并没有设置这种总体持续进展的想法。 (事实上​​,如果一个游戏在自己的系统上登录系统来管理多个玩家的状态,在我看来,它甚至会变得更复杂,以处理多个Game Center玩家,因为需要有一个游戏中心玩家以便将Game Center玩家与游戏登录玩家相匹配,并且据我所见,游戏必须提供一些匹配界面才能完成此项工作。)

无论如何,这里是我对“穷人男人的版本“如何处理这个;也就是说,如何让你的普通单人游戏具有全局持久状态(再次像填字游戏一样),并使其与Game Center“足够好”:

(1)游戏不会试图将游戏“同步”到您的游戏中心统计信息。例如,如果您在一台设备上解决9个谜题,然后将该游戏安装在第二台设备上并使用同一个Game Center用户登录,则即使您的Game Center播放器仍然具有“解决了5个难题”的成就。 (2)如果你再继续完成5个谜题,没有什么变化,因为你已经获得了这个成就。但是当你完成25个谜题(或任何下一个成就等级)时,你将获得新的成就。(3)假设你(玩家A)完成了9个谜题,然后你从游戏中心注销,而其他玩家(玩家B)在同一台设备上登录。在这种情况下,我们会加载玩家B的成就,让我们假设玩家B目前在游戏中没有成就。在这个富人的版本中,我认为我们应该重置难题以匹配玩家B的成就。但是在穷人的版本中,我们立即(并且默默地)更新玩家B的成就以匹配游戏状态。所以玩家B会立即拥有“解决5难题”的成就(尽管玩家A是“赚取”它的)。

这个可怜的男人版的底线是:

(a)如果两个或两个以上的玩家都在一个装置,谁登录的玩家在登录和退出游戏中心是在当时的成就就会取得成就。另外,在登录时间内,如果状态较高,玩家的成就将会“赶上”游戏的状态。所以它就像所有玩家一起“共同进步” - 任何一个玩家的成就都会被任何其他登录玩家继承。

(b)如果您卸载/重新安装或安装在新设备上,谜题术语,但是你的成就会保持在他们所处的高点,一旦你开始超过这些数字,成就就会增加以跟上你的步伐。

总之,在我看来,任何拥有全球持续进步(冒险游戏,填字游戏)的游戏都将面临多个Game Center玩家的这些问题。在我看来,有两条路要走:正确的路和穷人的路。正确的方法似乎很复杂。例如,冒险游戏必须要求用户这样说:“我看到你刚刚登录了一个不同的Game Center玩家B.你想继续你的游戏并将所有进一步的进展与玩家B联系起来,或者做你想重置游戏,所以玩家B可以从头开始?“然后它必须准备好为任何数量的游戏中心用户保存完整的状态(库存,地图等)。

这位穷人的解决方案看起来并不理想,但对于仅仅希望“坚持”Game Center支持而不会自杀的现有游戏来说,这似乎是一个合理的选择,因为“正常”用例不适用于有多个Game Center玩家不断登录和注销单个设备。

所以我的问题是:

(a)是我的这种情况分析是正确的? (b)这位穷人的解决方案是否已经概括了一个可行的解决方案?这是常用的吗?

+1

这是一个有趣的话题,但我建议将它发布到Stack Exchange上的游戏开发站点。问题(和解决方案)是从编程层抽象出来的。 – jonsibley 2012-04-04 16:02:12

+0

@ m-katz你终于找到了答案? – fiddler 2013-03-06 09:24:39

+0

是的,但是我认为GC是为“假设”=“一个用户”而设计的。您不要在一台设备上使用多个帐户。许多人不使用同一个设备。对于iPhone和iPod触摸,这大部分都是如此。但它在家里的沙发桌上用iPad打破了速度。它也打破了iCloud帐户,这是另一个艰难的(呃)故事。 – Jonny 2014-09-22 07:50:44

回答