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

问题描述

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

解决方法

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

您可以考虑研究Nakama by Heroic Labs,看看是否符合您的需求,或者您可以找到类似的东西。

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

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

另外,为回答有关解决冲突的问题,通常您将维护所有交易的时间戳(余额发生变化,项目已收集等),并将时间戳与本地信息进行比较以查看哪些数据较新。

您还可能会添加一些自定义逻辑,以便仅以这种方式更新某些数据。例如,您的本地设备的余额比在线帐户的余额高。如果余额对您的玩家经济状况并不重要,那么您可能只想保留较高的余额而不是在线余额即可。

但是您通常希望所有内容都由服务器授权,以减少玩家窃取余额的机会为例。