Database 多人游戏服务器,客户端数据库结构

Database 多人游戏服务器,客户端数据库结构,database,unity3d,server,structure,multiplayer,Database,Unity3d,Server,Structure,Multiplayer,我有一个关于如何为多人游戏存储游戏数据的一般性问题。物品和角色有基本属性,然后是在游戏中通过升级等获得的属性 我希望将获得的统计数据存储在服务器端数据库中,但我不太确定基本值。特别是对于一款手机游戏,我认为来回传递的数据量应该尽可能减少 在客户端存储这些项目/字符的基本值,使用预制/脚本对象(我使用的是Unity)是个坏主意吗?战斗将在客户端进行,服务器主要处理对玩家游戏数据数据库的读/写操作。玩家之间的主要互动将不是玩家之间的实时战斗,而是类似于部族冲突的互动。在我看来,有两种方法可以做到这一

我有一个关于如何为多人游戏存储游戏数据的一般性问题。物品和角色有基本属性,然后是在游戏中通过升级等获得的属性

我希望将获得的统计数据存储在服务器端数据库中,但我不太确定基本值。特别是对于一款手机游戏,我认为来回传递的数据量应该尽可能减少


在客户端存储这些项目/字符的基本值,使用预制/脚本对象(我使用的是Unity)是个坏主意吗?战斗将在客户端进行,服务器主要处理对玩家游戏数据数据库的读/写操作。玩家之间的主要互动将不是玩家之间的实时战斗,而是类似于部族冲突的互动。

在我看来,有两种方法可以做到这一点:

仅在客户端存储基本项。如果您想稍后更新它们,则必须发布项目的新版本,但不需要进行web请求

将基本项存储在服务器端。您可以在数据库中维护它们,并让客户端在游戏开始时获取它们。这样,每个连接的玩家将始终拥有当前的基本统计信息


根据项目的范围,另一种可能性是有两个数据库。一个在服务器端,一个在客户端。然后,每次游戏开始时,你都会检查服务器上的更新(你可以使用某种校验和或版本号来简化)

我要做的是提供一个分散的或分布式的数据库,在全局复制的基础上(假设这很重要),有一个基本项始终可用的真实来源,然后让客户机也实现自己的本地缓存(就像React一样)所需数据存储在与远程数据库同步的本地数据库中。游戏客户端现在只与本地数据库进行对话,而同步等智能则留给数据库层,从而使应用程序代码更加简单