[ゲーム開発設計]ゲーム開発データシステム設計について述べる(一)

5612 ワード

最近ではUnityゲームのクライアント開発に携わり,ゲームデータシステムの構築と簡単な設計をまとめた.
クライアントはC#を用いて開発され、C#管理言語はプログラマーのメモリ割り当ての解放に関する問題をある程度軽減した.
クライアント全体はデータ+論理+レンダリングで構成され、ゲーム全体のコアはデータによって駆動され、ゲームはレンダリングされなくてもよいが、データと論理がないわけにはいかない.ここでは、ゲームデータシステム全体の設計について簡単に説明します.レンガを撮ることを歓迎します.
背景:
例えば1つのアイテムオブジェクトを構築するには、アイテムには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 }

問題は、アイテムの1つ以上の属性が共通属性であればitemに直接メンバー変数を追加し、属性が外部に露出し、外部アクセスと設定値を提供するように構成されていますが、種類が非常に多く、プログラムに大量のメンバー変数を追加する必要があります.その後、対応するメンバー間の論理関係を制御し、サーバに同期するデータもあります.長い間、システムは非常に肥大化し、メンテナンスが非常に難しく、ゲーム全体の開発がますます難しくなっています.
そこでここでは,オブジェクトと属性の前の関連を大幅に減少させ,非常に柔軟であるダイナミック属性(Dynamic Property)の設計思想を提案し設計し,CEGUIの設計構想を参考にした.
動的属性システムは、データと属性を最大限の能力を尽くして企画の配置に依存し、持続化が必要なデータだけをサーバーと同期させることで、ゲームのネットワーク通信流量の問題も大幅に減少し、属性を追加して減少する際に、プログラムはどの属性を多くしたり、どの属性を減らしたりする必要はなく、全体の過程は自動的である.
ダイナミックプロパティのコアは、データ・オブジェクトごとにDictionaryを継承し、プロパティ名とプロパティの値を保存することです.
動的プロパティの構成:
    1.属性テンプレート構成表
    2.属性テンプレートオブジェクト
    3.プロパティファクトリ
    4.属性オブジェクト
    5.汎用データ型
    6.数式の計算
    7.プロパティーセットオブジェクト
    8.汎用バリエーション
 
具体的な実現は次回に続き、国語は体育の先生が教えてくれたもので、言語表現能力は限られており、興味のある友达は伝言を残すことができます.
  
転載先:https://www.cnblogs.com/lovepurple/p/3579016.html