我应该如何处理添加新的增量成就

How should I deal with adding new incremental achievements

我现在越来越熟悉 Google Play 游戏服务中成就的工作原理了。这是一个通用示例,我正在尝试弄清楚我将如何处理它。

我有这些成就: Kill 5 Zombies, Kill 15 Zombies, 25, 50, etc.

现在,我计划在杀死僵尸时增加每个成就。所以杀死1个僵尸,所有4个成就都增加1。

我的问题是,当我添加另一个成就(例如杀死 100 只僵尸)时,它的增量计数器将从 0 开始。假设我已经杀死了 49 只僵尸,那么 "Kill 50 zombies" 的计数器将是在 49。我怎样才能在保持计数器不变的情况下添加更多成就?

同时增加多个成就正常吗?其他游戏会这样吗?当我添加新成就时,我将如何克服这个问题?我想尽量避免在本地保存,因此任何有关如何充分利用 API 的建议都将不胜感激。

我担心在本地保存的原因之一是,如果我这样做,一个人可以登录,获得他们的成就,然后注销,然后另一个人登录并解锁相同的成就。

好的,这是我的解决方案和我所做的。据我所知,这是最好的选择,但我可能是错的。

我做了一个 "kill zombie" 事件并将该事件与不同的成就联系起来。每当触发 "kill zombie" 事件时,它都会增加所有 "kill X zombies" 成就。但是,如果我要在开发中期添加另一个成就,它会从 0 开始其中一个成就。只要用户登录,我就会调用这两个加载方法,因为在游戏中期做这个真的没有意义。

我解决了这个问题,首先用 AchievementsClient#load 加载成就,然后添加一个 on success 监听器,然后调用 EventsClient#load。如果与杀死僵尸相关的任何成就低于所述事件的计数器,它将增加它以与事件计数器保持同步。

这是一个不错的选择,因为它可以跨设备工作并确保每项成就都是最新的。