【发布时间】:2016-10-12 03:02:40
【问题描述】:
背景
我编写了一款游戏,希望在多种设备(平板电脑、手机等)上运行。我已经实现了一种应用内货币,并且已经到了需要将货币存储在云中以便可以跨设备访问并处理冲突等的阶段。
我想选择最简单的选项,至少对我而言,这意味着使用某种可用的 API,例如由 Google 提供,而不是使用我自己的服务器。我遇到了以下可能性:
- Google AppState API(现已弃用)
- Google 保存的游戏 API
- Google 云端硬盘 API
- 谷歌云平台。
(1) 现已弃用,开发人员被指示改用 Saved Games API。
(2) 实际上似乎是一个很好的解决方案,因为它处理游戏成就、排行榜和自定义数据(例如应用货币)的存储。但是,我发现这有一个问题,在 Play 游戏应用程序中,有一个选项可以删除玩家的个人资料,这也会删除游戏内的货币!因此,虽然 (2) 看起来不错,但货币数据可能会被删除。也许这可以放在 T&C 中,例如“如果您删除您的个人资料,您将失去任何未使用的货币和任何购买的物品”...
(3) 使用Drive API似乎是一种选择,但是在网上阅读后似乎存在很多问题,例如文件名重复,用户可能删除文件等。
(4) 我不确定这个选项,但看起来我可能需要付费?
在某些 API 上似乎也有 these deprecation schedules。
我的问题
那么面对这些(可能还有其他未列出的)选项,在应用货币中实现基于云的良好解决方案是什么?我试图避免拥有自己的服务器来记录每个用户的货币/数据,但也许这是唯一好的解决方案?我想尝试降低欺骗系统的能力。
其他想法
我可以使用 Google Saved Games API 和 Saved Preferences(存储在设备上)方法。我会同时更新 Saved Preferences 和 Google Saved Games。我可以使两种数据存储方法保持同步,如果已保存的游戏数据与已保存的首选项不匹配,则将已保存的首选项与已保存的游戏数据合并(例如,将已保存的游戏和已保存的首选项设置为两者的最大货币)。这将使我能够在设备上保留货币备份,以防用户删除他们保存的游戏配置文件。但是,如果用户删除了他们的“已保存游戏”配置文件,并从所有设备上删除了该应用程序,这将失败......这么多选项......
相关/有趣的帖子
Ricket's answer here is interesting.
可能的妥协解决方案
由于 IAB 系统和可用 API 施加的限制,我想我会解决这个问题:使用托管项目进行永久购买,例如不同级别的主题,获得新角色等。这样,无论发生什么,这些都将始终可用。一旦购买,它们将永远购买,即我永远不会消费这些物品。拥有一个单独的虚拟货币(宝石)系统,最多可容纳 100 颗宝石,我会通过已保存的游戏对其进行跟踪。这样我也能获得排行榜/成就。如果玩家删除了他们的个人资料,那是他们的问题,但至少核心托管项目会继续存在。希望条款和条件能够弥补潜在的宝石损失,最多 100 颗宝石有望帮助减少任何损失。
【问题讨论】:
-
您真的很惊讶您需要付费才能让您的服务器在云中运行,在全球范围内以几乎完美的正常运行时间提供服务,而且根本不需要关心硬件和数据中心?
-
话虽如此,您还有什么理由不想为您的游戏实现后端?我不确定你的游戏没有它怎么能运行,如果你已经有一个,那为什么不把你的游戏货币和物品存放在那里呢?
-
不,一点也不奇怪。
-
我没有服务器,我得学习编写一个! Google Drive 和 Saved Games API 可用于我的目的,但两者都有与我的应用断开连接的风险,这意味着数据可能会丢失。我感兴趣的关键数据是玩家当前的货币数量。我想专用服务器是处理此问题的唯一方法,因为任何连接到用户数据存储区域的 API 都必须让用户在某处删除“他们的”数据!
-
拥有专用服务器是这里的唯一方法。其他一切都只是一个劣质的解决方法。您应该立即开始实施您的后端。除非您想浪费大量时间,否则您不能稍后再添加它。请务必在安全方面遵循最佳做法。
标签: android google-drive-api google-cloud-storage in-app-billing google-play-games