下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

游戏开发技术与数据系统设计

作者:课课家教育     来源: http://www.kokojia.com点击数:973发布时间: 2019-04-03 17:00:57

标签: Unity游戏的客户端c#代码

  网络游戏的数据存储有其特殊性。游戏是交互性比较强的产品,对系统响应时间的要求特别高,如果在处理逻辑时同步地去进行数据库IO是不可接受的。

  客户端采用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里添加成员变量,并构造成属性暴露到外部,提供外部访问及设置值,但种类非常多,在程序里需要添加大量的成员变量,之后还得去控制相应每个成员之间的逻辑关系,而且有的数据要于服务器同步,久而久之,系统会非常臃肿,非常难维护,导致整个游戏开发难度越来越大。

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

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

  动态属性的组成:

  1.属性模板配置表

  2.属性模板对象

  3.属性工厂

  4.属性对象

  5.通用数据类型

  6.公式计算

  7.属性集对象

  8.通用变化类型

      从游戏策划与编程、系统架构、服务器运维、开发团队管理等方面全景展现网络游戏核心技术。用编程语言来设计游戏是基本的方法,希望的大家可以掌握。

赞(14)
踩(2)
分享到:
华为认证网络工程师 HCIE直播课视频教程