我对在单个设备上支持多个游戏中心用户的问题感到困惑。
特别是,我很困惑如何在具有整体持久性进度的游戏中做到这一点,例如冒险游戏或填字游戏。
也就是说,我认为有两种游戏。在其中,你开始一场游戏,直到你死去,然后游戏就结束了。使用 Game Center 多用户模型,这种游戏似乎很容易处理。当新的 Game Center 玩家登录后,我可以加载他们的 Game Center 统计数据,然后他们可以玩游戏,我会相应地调整他们的成就/分数。唯一的特殊情况是,如果 Game Center 玩家 A 正在玩,游戏进入后台,Game Center 玩家 B 登录,然后游戏进入前台,会发生什么情况?在这种情况下,结束正在进行的游戏并说“抱歉,您切换了 Game Center 用户。您需要开始一个新游戏”似乎很容易。
但另一种游戏是具有持续整体进度的游戏,通常是自动进行的。例如,假设我有一个包含 100 个谜题的填字游戏。假设玩家 A 已经完成了 8 个谜题,并且正在完成第 9 个谜题,然后 Game Center 玩家变为玩家 B。假设玩家 A 已经获得了“解决了 5 个谜题”的成就。既然玩家 B 已经登录,应该会发生什么?
一种“正确”的做法(苹果上面的文件似乎暗示了这一点)是游戏应该为每个 Game Center 玩家保持完整的保存状态。因此,当玩家 B 登录时,玩家 A 的状态应该自动保存到一边,并且应该清除谜题,以便玩家 B 可以从头开始处理它们。即便如此,当玩家 A 将游戏安装到新设备上时,仍然存在问题。新安装的游戏将完成零个谜题,但玩家 A 的游戏中心用户已经拥有“解决 5 个谜题”成就。那么我们应该重置玩家A的成就吗?我们是否应该以某种方式自动填充谜题答案以使玩家 A 的游戏与他的成就保持一致?
在我看来,Game Center 模型的设置并没有考虑到这种整体持续的进步。(而且事实上,如果一个游戏有自己的登录系统来管理多个玩家的状态,在我看来处理多个 Game Center 玩家变得更加复杂,因为需要有一种方法来匹配 Game将玩家置于游戏登录玩家的中心,据我所知,游戏必须提供一些匹配的界面才能使其正常工作。)
无论如何,这是我对如何处理这个问题的“穷人版本”的看法;也就是说,如何使您的普通单人游戏具有全局持久状态(再次,就像填字游戏),并使其与 Game Center 一起“足够好”地工作:
(1) 游戏不会尝试将游戏“同步”到您的 Game Center 统计数据。例如,如果您在一台设备上解决了 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) 我概述的穷人的解决方案是可行的吗?是常用的一种吗?