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

时间:2018-09-08 08:19:56

标签: database unity3d server structure multiplayer

对于如何存储多人游戏的游戏数据,我有一个普遍的问题。物品和角色具有基本属性,然后在通过升级等玩游戏时获得了属性。

我想将获得的统计信息存储在服务器端数据库中,但是我不确定基本值。专门针对手机游戏,我认为应该尽可能减少来回传递的数据量。

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

2 个答案:

答案 0 :(得分:0)

我认为有两种方法可以正确执行此操作:

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

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

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

答案 1 :(得分:0)

我要做的是提供一个去中心化的或分布式的数据库,在全球复制的基础上(假设很重要)提供一个事实源,那里的基础项目总是在那里可用,然后让客户也实现本地缓存自己(就像React一样)将所需的数据存储在与远程DB同步的本地DB中。现在,游戏客户端只能与本地数据库进行对话,而同步等方面的智慧将留给数据库层,从而使您的应用程序代码更加简单。