[ゲーム開発設計]ゲーム開発データシステム設計について述べる(一)
5612 ワード
最近ではUnityゲームのクライアント開発に携わり,ゲームデータシステムの構築と簡単な設計をまとめた.
クライアントはC#を用いて開発され、C#管理言語はプログラマーのメモリ割り当ての解放に関する問題をある程度軽減した.
クライアント全体はデータ+論理+レンダリングで構成され、ゲーム全体のコアはデータによって駆動され、ゲームはレンダリングされなくてもよいが、データと論理がないわけにはいかない.ここでは、ゲームデータシステム全体の設計について簡単に説明します.レンガを撮ることを歓迎します.
背景:
例えば1つのアイテムオブジェクトを構築するには、アイテムには3つの属性があり、それぞれアイテムid、アイテムタイプ、アイテム名、もちろんこれは十分ではありません.現在、このアイテムは武器であることを示すために使用され、攻撃力を増加させる属性を提供しています.伝統的な考え方ではItem類が必要です.以下のようにします.
武器もアイテム類に属し、Itemに引き継ぐことができる.
問題は、アイテムの1つ以上の属性が共通属性であればitemに直接メンバー変数を追加し、属性が外部に露出し、外部アクセスと設定値を提供するように構成されていますが、種類が非常に多く、プログラムに大量のメンバー変数を追加する必要があります.その後、対応するメンバー間の論理関係を制御し、サーバに同期するデータもあります.長い間、システムは非常に肥大化し、メンテナンスが非常に難しく、ゲーム全体の開発がますます難しくなっています.
そこでここでは,オブジェクトと属性の前の関連を大幅に減少させ,非常に柔軟であるダイナミック属性(Dynamic Property)の設計思想を提案し設計し,CEGUIの設計構想を参考にした.
動的属性システムは、データと属性を最大限の能力を尽くして企画の配置に依存し、持続化が必要なデータだけをサーバーと同期させることで、ゲームのネットワーク通信流量の問題も大幅に減少し、属性を追加して減少する際に、プログラムはどの属性を多くしたり、どの属性を減らしたりする必要はなく、全体の過程は自動的である.
ダイナミックプロパティのコアは、データ・オブジェクトごとにDictionaryを継承し、プロパティ名とプロパティの値を保存することです.
動的プロパティの構成:
1.属性テンプレート構成表
2.属性テンプレートオブジェクト
3.プロパティファクトリ
4.属性オブジェクト
5.汎用データ型
6.数式の計算
7.プロパティーセットオブジェクト
8.汎用バリエーション
具体的な実現は次回に続き、国語は体育の先生が教えてくれたもので、言語表現能力は限られており、興味のある友达は伝言を残すことができます.
転載先:https://www.cnblogs.com/lovepurple/p/3579016.html
クライアントは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