前言
在开发游戏的时候,我们肯定会处理道具,不论是多大的游戏都有道具。道具的管理方式也是多种多样。下面记录一下我个人在游戏开发中的道具管理方式。
道具的定义
道具的属性基本分为:
ID、类型、数量、图标、名称、等重要信息,还有描述、激活状态、购买此道具的消耗道具等其他信息。
不过在配置和传递数据时最重要的属性还是ID,类型和数量这3个。
-
ID:也就是道具的唯一标识
-
类型:用于区分道具所在的数据表
-
道具的数量: 可以是拥有的数量,也可以是需要的数量。
不论在配置数据的时候还是在传递数据的时候,都需要填写这三个信息。如果直接使用[id,type,num]的形式传递和配置数据也是没有问题的。不过我更喜欢将ID和类型合并,这样在传递和配置数据的时候只需要设置两个数值就可以 了,例如[ID,num]。
而ID中是带有类型信息的,比如10001,可以用前两位代表类型,可以标识99-10 + 1 个类型。后边的三位标识道具的ID,可以标识999个道具,如果不够用自己在扩大位数即可。那么我们在配置数据的时候就可以这样填写。
这里的62代表一种类型的道具,10002是我定义的视频广告。
也就是说62002这个道具是需要用广告开启后才可以使用。所以道具才有激活状态这个属性,这个可以有也可以没有的东西,还是根据自己的项目而定了。
道具管理
以上是定义一个道具的数据格式、配置和使用方式。那么这么多道具应该如何管理呢?
. 各模块管理器 :
负责管理自己的道具,比如增删改查,统一实现一个接口。
. 全局道具管理器:
负责统筹管理,可以有两种方式
- 比如一个活动模块,可能发放各种类型的道具,这些道具属于不同的模块,这个时候全局道具管理器就会通过类型找到模块管理器处理相关逻辑,也就是为什么各模块管理器要实现一个同一的接口的原因了。各模块之间也可以通过这个全局道具管理器进行交互。
- 这个全局道具管理器也可以不调用各模块,而是直接调用存档数据,然后让各模块自己监听数据的变化做对应的处理。
建议
建议只有一个,就是不要把不同类型的数据放到一个数据表中。因为大家都知道的,道具都是有些共同属性的,那索性把武将,武器,等等一些列有相同属性的道具都放到一个表中吧!这样做有几个问题:
- 将同一种类型的东西放到两个表中维护,增加了维护难度。
- 将不同类型的数据放到一个表中,如果我需要配置武器数据,还要先向下拉一百或者几十行略过武将的数据,这也是在增加维护难度。
- 程序在组织模型的时候需要从两个配置数据中获取,增加了复杂度。
- 由于将各模块用的数据都放到了一起,那么只能是作为共有数据一起加进内存,而且不能删除。
所以还是建议同种类型的数据就放到一个表中维护就可以了。
结语
以上是我个人对于道具管理的一些理解,主要还是对于多人开发而语言,希望有不同意见的同学在下方留言,一起交流。
长按下方二维码,关注《微笑游戏》公众号,获取更多精彩内容。
欢迎扫码关注公众号《微笑游戏》,浏览更多内容。