首先游戏开发不得不接触背包,而背包系统是一个游戏的核心。

这里我们之介绍一下我目前维护的游戏的背包数据的存储。在数据库是什么样的。

首先一件装备,他可以有固定数值,他也可以有其他随机数值。就比如原神的圣遗物,打本刷的圣遗物有着随机属性,正好我维护的游戏有类似的开发玩法。

数据库表

首先我们数据库中有一张表item表

这张表有着这么几个字段 roleid 、accontid(),背包类型,背包索引,有效时间等等。

mysql内的item表
itemid itemType roleid accontid 背包类型 背包索引 有效时间
111 300 101 0 roleEquip 1
222 400 1001 acconEquip 6

第一行表示,角色id101有着itemid为111的一件物品,这件物品的具体是(itemType)为300,在角色的roleEquip(角色装备背包)背包索引为1(比如我们游戏的背包是一行是5列,这个索引为1那么就表示这个物品在roleEquip的第一行第一列)如下列表

roleEquip
111

第二个行数据也是一样只是换了账号id,是属于账号背包的。

acconEquip
222

这里存着物品基本的背包位置,以及数据类型。

但是我们有着随机属性的物品这个怎么存着呢?

首先我们不止有item表,还有一个针对我说的随机属性装备的EquipAtt表

EquipAtt
itemid AttID1 数值1 AttID1 数值2 ......
111 23 200 25 10

我开始说一下逻辑。

首先这种有随机属性的物品他一般都是开盒子开出来的。或者给装备进行洗脸

就以我玩的游戏来举例子,这个洗练数据就可以存储在EquipAtt表内,将iEquipAtt的itemid设置为item表的itemid这样这两表就会关联在一起。

读取数据库

我们说一下怎么读取,首先玩家登录,DBsever数据先读取item表,将读取饿数据保存起来一个存在itemlist中,然后再去读EquipAtt表,然后将读取的数据根据itemid进行筛选将数据附加到itemlist中。

然后DBserver将整理好的数据返回给gameserver中,gameserver整理完毕在同步给客户端

然后客户端将数据进行一个展示。

当然这是提供一个思路,这是我入职并维护的游戏采取这个方式做的,其他游戏会有不同

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐