用户退出 Google Play 服务后保存游戏的最佳做法?
Posted
技术标签:
【中文标题】用户退出 Google Play 服务后保存游戏的最佳做法?【英文标题】:Best practices for saving game when user has signed out of Google Play Services? 【发布时间】:2017-11-26 13:37:37 【问题描述】:Google Play 游戏服务指南规定如下:“登录后,玩家必须始终可以选择退出。”
想象以下场景:
-
我下载了一个手机游戏并在经过身份验证的情况下玩了几个星期
在此期间,我解锁关卡并积累游戏币(保存到云端)
我决定退出 Google Play 游戏服务,但继续玩游戏
我看到了管理玩家数据的两个选项: 1.将他们所有的云保存数据复制到本地设备存储 2. 重新启动用户,将数据保存到本地存储(如果他们重新登录,他们将再次访问他们的云保存数据)
第一个选项听起来最合乎逻辑,但这也意味着如果用户再次登录,我会将本地数据同步回云端。因此,用户可以退出,直接更改其设备上本地存储的首选项(例如添加 1000000 个硬币),然后重新登录并同步该数据。
我的问题是,尽管(某些)玩家有可能篡改他们的数据,但以两种方式同步数据是否是“正确”的解决方法?我已经找到了大量关于退出的信息,但没有找到之后该怎么做。
谢谢!
【问题讨论】:
【参考方案1】:我的问题是,是否以“正确”方式同步数据 去解决这个问题,尽管(一些)玩家有可能 篡改他们的数据?
不。将评分系统一分为二:
离线和在线得分。
当用户退出时,获取在线分数并将其保存到离线分数。用户的离线分数将从用户离开在线分数的地方继续。
如果您决定重新登录,请使用在线分数。同时使用在线分数更新他们的离线分数。
这样做,您只是让玩家更难修改分数。如果游戏是在玩家一方运行的,如果玩家了解基本的 APK 逆向工程,则可以始终更改分数。数据不必保存在其他文件中即可更改。它可以在内存中更改。也可以通过反编译、更改代码、编译和签署 APK 来更改它。
现在,如果您让游戏在服务器上运行但读取用户的输入,那么除非您的服务器被黑客入侵,否则无法更改游戏。
【讨论】:
感谢您的回复。因此,您是说在他们注销时将服务器状态应用于本地状态,但在他们重新登录时不将本地状态应用于服务器状态?我可以看出这是有道理的。我会尝试一些其他流行的游戏,看看他们是不是这样。 是的,这就是我要说的。虽然,如果您决定通过将本地数据加载到服务器来按照自己的方式进行操作,那么构建一个表格系统来存储 如何 玩家获得他们的本地分数,例如时间+每次给玩家的分数.当用户再次登录时将此发送到服务器。计算它,如果有意义,则接受分数。如果不拒绝分数并让玩家使用来自服务器的旧分数。我认为用户会更喜欢您获取他们的本地分数,因为那里有诚实的用户,但您必须进行此检查。【参考方案2】:这取决于游戏,如果它是基于故事的游戏,您可以通过使用保存菜单区分真实的云保存和离线保存来解决此问题,因为您不限于 API 的一次保存。如果它是基于高级货币的游戏,例如 1.00 美元换 100 颗宝石,您应该将所有交易记录保存在服务器上,因为让用户有机会更改这些值是不明智的。
“一个游戏可以为单个玩家写入任意数量的存档游戏,受用户配额限制,因此没有硬性要求将玩家限制为单个存档文件。...所有存档游戏都存储在您的玩家中' Google Drive 应用程序数据文件夹。此文件夹只能由您的游戏读取和写入 - 它不能被其他开发者的游戏查看或修改,因此有额外的保护以防止数据损坏。...保存的游戏不会被直接篡改让玩家无法修改个别存档游戏。...一般来说,避免数据冲突的最佳方法是在您的应用程序启动或恢复时始终从服务中加载最新数据,并以合理的频率将数据保存到服务中. ...您的应用程序应尽一切努力处理冲突,以便保留用户的数据并让他们获得良好的体验。”
这里是link,提供更多信息。
【讨论】:
感谢您的回复。关于保护的第二段是针对 Google Play 游戏服务的,我相信它指的是云中的文件夹,而不是玩家设备上的文件夹?我认为任何用户都可以更改本地游戏保存文件,如果他们已经植根了他们的设备。就我而言,我的本地保存将由 Unity 的 PlayerPrefs API 处理。我的游戏是一个休闲时间杀手(想想像 Color Switch 之类的东西),所以我真的不希望玩家需要选择要加载的保存。 Unitys PlayerPrefs API 似乎是针对玩家设置而不是保存。您可以将文件序列化为二进制格式,这样它至少不是人类可读的,并且谷歌建议加载最新的保存。只要它不是用于排行榜,我建议限制任何此类功能,除非他们登录。编辑:我发现这可能有助于link。 关于 PlayerPrefs 的要点。这是我的第一场比赛,所以我仍在寻找适合所有事物的最佳实践的方法。我确实计划在玩家退出时限制对排行榜和成就等内容的访问。以上是关于用户退出 Google Play 服务后保存游戏的最佳做法?的主要内容,如果未能解决你的问题,请参考以下文章