游戏道具设计——浅谈游戏开发道具数据系统设计

    作者:课课家教育更新于: 2019-04-04 11:22:31

      在我们游戏道具设计中,必须要用到代码,那么代码是什么呢,具体介绍一下内容,以及内容代码含义,使用方法。

      最近在参与unity游戏的客户端开发,总结下整理游戏数据系统的构建及简单的设计。

      客户端采用C#进行开发,C#托管语言在一定程度上大大减轻了程序员关于内存分配释放的问题。

      整个客户端是由数据+逻辑+渲染组成的,而整个游戏的核心是由数据驱动的,游戏可以没有渲染,但不能没有数据及逻辑。这里简单阐述一下关于整个游戏数据系统的设计,欢迎拍砖。

      背景:

      比如要构建出一个物品对象,物品有3个属性,分别是物品id,物品类型,物品名称,当然这完全不够,现在这个物品用于表示他是一个武器,提供了增加攻击力的属性,在传统思路中需要有一个Item类,如下

      复制代码

      1publicclassItem

      2{

      3privateuintm_id;//物品id

      4privatestringm_itemName;//物品名称

      5privateuintm_itemType;//物品类型

      6

      7publicuintm_id

      8{

      9get{returnm_id;}

      10set{m_id=value;}

      11}

      12

      13publicstringItemName

      14{

      15get{returnm_itemName;}

      16set{m_itemName=value;}

      17}

      18

      19publicuintItemType

      20{

      21get{returnm_itemType;}

      22set{m_itemType=value;}

      23}

      24}

      复制代码

      武器也属于物品类,可以继承至Item,如下

      复制代码

      1publicclassWeapon:Item

      2{

      3privateuintm_physicAttack;

      4

      5publicuintPhysicAttack

      6{

      7get{returnm_physicAttack;}

      8set{m_physicAttack=value;}

      9}

      10}

      复制代码

      动态属性的核心是每个数据对象继承一个Dictionary,里面保存着属性名及属性的值。

      动态属性的组成:

      1.属性模板配置表

      2.属性模板对象

      3.属性工厂

      4.属性对象

      5.通用数据类型

      6.公式计算

      7.属性集对象

      8.通用变化类型

      现在问题来了,如果物品多一个属性如果是公共属性直接在item里添加成员变量,并构造成属性暴露到外部,提供外部访问及设置值,但种类非常多,在程序里需要添加大量的成员变量,之后还得去控制相应每个成员之间的逻辑关系,而且有的数据要于服务器同步,久而久之,系统会非常臃肿,非常难维护,导致整个游戏开发难度越来越大。

      因此这里提出并设计了一套动态属性(DynamicProperty)的设计思想,将对象与属性之前的联系大大减少,非常灵活,动态属性这套思想是参考CEGUI中的设计思路。

      动态属性系统,把数据及属性尽最大的能力去依赖策划的配置,只把需要持久化的数据与服务器进行同步,这样也大大减少也游戏的网络通讯流量问题,在添加和减少属性时,程序不需要去关心多了哪个属性或减少了哪个属性,整个过程都是自动的。

      游戏道具设计_开发数据_道具数据_课课家教育

课课家教育

未登录