用户退出Google Play服务时保存游戏的最佳做法?

时间:2017-06-23 05:16:01

标签: android unity3d google-play-services google-play-games

Google Play游戏服务指南声明如下:"登录后,玩家必须始终可以选择退出。"

想象一下以下场景:

  1. 我下载了一款手机游戏,并在验证后播放了几周
  2. 在此期间,我解锁关卡并累积游戏币(保存到云端)
  3. 我决定退出Google Play游戏服务,但继续玩游戏
  4. 我看到两个用于管理播放器数据的选项:  1.将所有云保存的数据复制到本地设备存储  2.再次启动用户,将数据保存到本地存储(如果他们重新登录,他们将再次访问他们的云保存数据)

    第一个选项听起来最合乎逻辑,但这也意味着如果用户再次重新登录,我将本地数据同步回云端。因此,用户可以直接注销,更改其设备上本地存储的首选项(例如,添加1000000个硬币),然后重新登录并同步该数据。

    我的问题是,正在以两种方式同步数据"正确"尽管(某些)玩家有能力篡改他们的数据的风​​险,但这样做的方法是什么?我已经能够找到关于退出的大量信息,但之后无法做什么。

    谢谢!

2 个答案:

答案 0 :(得分:3)

这取决于游戏,如果它是基于故事的游戏,您可以通过使用保存菜单区分可靠的云保存和离线保存来解决此问题,因为您不仅限于API保存。如果它是基于高级货币的游戏,如100个宝石的1.00 $,您应该将所有交易记录保存在服务器上,因为允许用户有机会改变这些值是不明智的。

“游戏可以根据用户配额为单个玩家编写任意数量的已保存游戏,因此没有必要将玩家限制为单个保存文件。...所有已保存的游戏都存储在您的玩家中'Google Drive应用程序数据文件夹。此文件夹只能由您的游戏读取和编写 - 其他开发者的游戏无法查看或修改,因此可以防止数据损坏。...保存的游戏不会受到直接篡改玩家因此无法修改单个已保存的游戏....通常,避免数据冲突的最佳方法是在应用程序启动或恢复时始终从服务加载最新数据,并以合理的频率将数据保存到服务中.......您的应用程序应尽一切努力处理冲突,以保护用户的数据,并保证他们有良好的体验。“

此处是link,其中包含更多信息。

答案 1 :(得分:3)

  

我的问题是,正在以两种方式同步数据"正确"办法   尽管有(某些)球员能够做到这一点,但要解决这个问题   篡改他们的数据?

不。将得分系统分成两部分:

离线和在线得分。

用户退出时,将在线分数保存到离线分数。用户的离线分数将从用户离开在线分数的位置继续。

如果您决定再次登录,请使用在线分数。同时使用在线分数更新其离线分数。

通过这样做,你让玩家更难以修改得分。如果游戏在玩家的一侧运行,则玩家可以始终更改分数,如果他们了解基本的APK逆向工程。数据不必保存在其他数据中即可更改。它可以在内存中更改。它也可以通过反编译,更改代码,编译和签名APK来更改。

现在,如果你让游戏在服务器上运行但是从用户那里读取输入,那么除非你的服务器被黑了,否则不能改变它。