• 熱門專題

淺談游戲開發數據系統設計(一)

作者:Love Purple  發布日期:2014-04-03 19:53:56
Tag標簽:數據  系統  
  •   最近在參與Unity游戲的客戶端開發,總結下整理游戲數據系統的構建及簡單的設計。

      客戶端采用C#進行開發,C#托管語言在一定程度上大大減輕了程序員關于內存分配釋放的問題。

      整個客戶端是由 數據+邏輯+渲染 組成的,而整個游戲的核心是由數據驅動的,游戲可以沒有渲染,但不能沒有數據及邏輯。這里簡單闡述一下關于整個游戲數據系統的設計,歡迎拍磚。

      背景:

        比如要構建出一個物品對象,物品有3個屬性,分別是 物品id,物品類型,物品名稱,當然這完全不夠,現在這個物品用于表示他是一個武器,提供了增加攻擊力的屬性,在傳統思路中需要有一個Item類,如下

     1 public class Item
     2 {
     3     private uint m_id;                //物品id
     4     private string m_itemName;        //物品名稱
     5     private uint m_itemType;        //物品類型
     6 
     7     public uint m_id
     8     {
     9         get {return m_id;}
    10         set {m_id = value;}
    11     }
    12 
    13     public string ItemName
    14     {
    15         get {return m_itemName;}
    16         set {m_itemName = value;}
    17     }
    18 
    19     public uint ItemType
    20     {
    21         get{return m_itemType;}
    22         set {m_itemType = value;}
    23     }
    24 }

      武器也屬于物品類,可以繼承至Item,如下  

     1 public class Weapon:Item
     2 {
     3     private uint m_physicAttack;
     4 
     5     public uint PhysicAttack
     6     {
     7         get {return m_physicAttack;} 
     8         set {m_physicAttack = value;}
     9     }
    10 }

    現在問題來了,如果物品多一個屬性 如果是公共屬性直接在item里添加成員變量,并構造成屬性暴露到外部,提供外部訪問及設置值,但種類非常多,在程序里需要添加大量的成員變量,之后還得去控制相應每個成員之間的邏輯關系,而且有的數據要于服務器同步,久而久之,系統會非常臃腫,非常難維護,導致整個游戲開發難度越來越大。

      因此這里提出并設計了一套動態屬性(Dynamic Property)的設計思想,將對象與屬性之前的聯系大大減少,非常靈活,動態屬性這套思想是參考CEGUI中的設計思路。

      動態屬性系統,把數據及屬性盡最大的能力去依賴策劃的配置,只把需要持久化的數據與服務器進行同步,這樣也大大減少也游戲的網絡通訊流量問題,在添加和減少屬性時,程序不需要去關心多了哪個屬性或減少了哪個屬性,整個過程都是自動的。

      動態屬性的核心是每個數據對象繼承一個Dictionary,里面保存著屬性名及屬性的值。

      動態屬性的組成:

        1。屬性模板配置表

        2.屬性模板對象

        3。屬性工廠

        4.屬性對象

        5.通用數據類型

        6。公式計算

        7。屬性集對象

        8。通用變化類型

      具體的實現下次繼續,語文是體育老師教的,語言表達能力有限,有興趣的朋友可以留言。

      

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
北京赛车PK10计划2019年新网赚项目网赚导师是真的假的英豪彩票开户江苏快三网赚导师是真的假的任我赢机器人山东群英会走势图真实网赚玩彩票是骗局吗利来彩票开户