如果玩家可以在线和离线玩游戏,那么存储和获取玩家数据的最佳做法是什么?

What is the best practice to store and get the data of a player if he can play both online and offline?

我正在尝试制作一个 android 游戏,我希望玩家可以通过电子邮件身份验证自由地离线或在线玩游戏。如果在线,所有玩家的进度、金币和购买都将保存在 phone 的全局内存中,如果他通过电子邮件连接,则值将更新到帐户,每次玩家购买东西时将存储在那里。但是在用户在线玩并取得小进步然后离线玩另一个 phone 并取得大进步或购买一些物品的情况下,如果用户选择,我如何保留更大的进步和物品使用该帐户上网,因为我希望该帐户设置存储在服务器上的值,并且 phone 上的值将被服务器数据覆盖。当用户进入游戏时,我首先检查他是否已连接,如果是,我想再次设置这些值。避免此类情况的最佳程序是什么?

您所描述的内容需要相当复杂的后端服务器来维护所有这些信息。

您可以考虑调查 Nakama by Heroic Labs 看看是否满足您的需求,或者您可以找到类似的东西。

顺便说一句,我与他们无关,它只是开源的,我一直在考虑将他们的技术用于我自己的游戏。

无论哪种方式,要实现您所描述的内容,仅了解最佳实践是不够的。

此外,为了回答您关于解决冲突的问题,通常您会维护所有交易的时间戳(余额更改、物品收集等),并且您会将时间戳与您的本地信息进行比较以查看哪些数据更新。

您还可能会添加一些自定义逻辑以仅通过这种方式更新某些数据。例如,当您的本地设备余额高于在线账户时;如果余额对您的玩家经济不重要,您可能只想保持较高的余额而不是获取在线余额。

但您通常希望所有内容都是服务器权威的,例如减少玩家破解平衡的机会。