警告安卓用户,应用程序更新可能会导致旧版本应用程序的数据丢失?

3
我正在为Android开发一个游戏。当用户完成一个关卡后,如果他们输了,他们可以从下一关重新开始(也就是我需要存储一个整数来记住他们到达的关卡)。如果在游戏过程中应用程序被中断,则将世界状态保存到磁盘上(这是一个复杂的状态,包括地图和游戏实体)。
我希望将来能够随时更改我的游戏代码以及保存/存储世界状态的方式。然而,我必须考虑这样一种情况:如果用户在玩游戏时有旧版本的世界状态,他们升级应用程序,现在应用程序无法加载世界状态。
如果我必须编写代码来迁移旧版本数据到新版本数据,这将会很麻烦,如果有办法避免这种情况,那就更好了。如果我可以在更新之前以某种方式要求用户完成当前进行中的游戏,那么这将是很不错的。是否可以这样做?还有其他选项吗?
我并不打算经常这样做。我想在早期获得一些反馈意见,对我的游戏进行迭代开发,但是如果我必须立即修复如何保存和恢复世界状态,这将是困难的。
我希望这不是一个愚蠢的问题,因为在PC或控制台上,有一些游戏不能在游戏过程中保存或只能在关卡之间保存。我只是发现在Android这里有点烦人,因为你必须为所有游戏都开发一个保存游戏策略。
1个回答

2

你无法阻止用户升级应用程序,而且在应用程序安装(或升级)之前无法执行任何代码。

坦白地说,由于升级而丢失数据是不可接受的。如果您使用SQLiteOpenHelper,则会自动获得帮助您处理升级过程的良好钩子。

我知道你有一个相当复杂的存档设置,但请尽可能保持灵活,以便轻松升级。有许多技术可帮助您实现这一点。

而且Android和PC完全不同-在PC上,你坐下来玩几个小时。在Android上,你很快就可以玩,然后做其他事情。或者,你在玩游戏时接到电话,并被迫离开游戏。


我知道你的存档设置相当复杂,但请尽可能保持灵活性,以便轻松升级。有很多技术可以帮助你实现这一点。你能指出你所说的技术吗? - RichardNewton
这取决于你的存档文件是什么样子的。它们是二进制的吗?ASCII的吗?它们有什么样的数据?它们如何存储数据?数组的值?键/值对?等等等等...你需要展示你认为在升级后可能会出现问题的存档文件的具体部分。 - EboMike
那么,您认为可能会导致不兼容性的可能情况是什么? - EboMike
顺便说一下,我一直在测试一些最受欢迎的Android游戏,其中90%的游戏会在放入后台并使用任务管理器杀死它们时丢失您的数据(即,当内存不足时会发生这种情况)。我并不是说这是可以接受的,但这就是我的竞争对手正在做的事情,他们没有收到任何关于此方面的投诉。 :-\ 我花了很多时间来规划我的保存/加载策略,所以这相当让人恼火。 - RichardNewton
这不是PC vs Android的问题 - 这是“我是否允许在任何时候保存”的问题。在PlayStation上,我曾经添加了一个快速保存功能,将整个状态保存到内存中,以便在出错时重新启动。这对用户来说是非常好的服务,这样做可以给你带来优势。当然,你不必这样做,但请把自己放在玩家的位置上 - 如果你接到一个随机电话,你想失去所有的进度吗?那会很糟糕。 - EboMike
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接