遊戲開發中的道具管理

前言

在開發遊戲的時候,我們肯定會處理道具,不論是多大的遊戲都有道具。道具的管理方式也是多種多樣。下面記錄一下我個人在遊戲開發中的道具管理方式。

道具的定義

道具的屬性基本分為:

ID、類型、數量、圖標、名稱、等重要信息,還有描述、激活狀態、購買此道具的消耗道具等其他信息。
不過在配置和傳遞數據時最重要的屬性還是ID,類型和數量這3個。

  1. ID:也就是道具的唯一標識

  2. 類型:用於區分道具所在的數據表

  3. 道具的數量: 可以是擁有的數量,也可以是需要的數量。
    不論在配置數據的時候還是在傳遞數據的時候,都需要填寫這三個信息。如果直接使用[id,type,num]的形式傳遞和配置數據也是沒有問題的。不過我更喜歡將ID和類型合併,這樣在傳遞和配置數據的時候只需要設置兩個數值就可以 了,例如[ID,num]。
    而ID中是帶有類型信息的,比如10001,可以用前兩位代表類型,可以標識99-10 + 1 個類型。後邊的三位標識道具的ID,可以標識999個道具,如果不夠用自己在擴大位數即可。那麼我們在配置數據的時候就可以這樣填寫。
    image.png
    這裡的62代表一種類型的道具,10002是我定義的視頻廣告。
    image.png
    也就是說62002這個道具是需要用廣告開啟後才可以使用。所以道具才有激活狀態這個屬性,這個可以有也可以沒有的東西,還是根據自己的項目而定了。

道具管理

以上是定義一個道具的數據格式、配置和使用方式。那麼這麼多道具應該如何管理呢?

. 各模塊管理器 :

負責管理自己的道具,比如增刪改查,統一實現一個接口。

. 全局道具管理器:

負責統籌管理,可以有兩種方式

  1. 比如一個活動模塊,可能發放各種類型的道具,這些道具屬於不同的模塊,這個時候全局道具管理器就會通過類型找到模塊管理器處理相關邏輯,也就是為什麼各模塊管理器要實現一個同一的接口的原因了。各模塊之間也可以通過這個全局道具管理器進行交互。
  2. 這個全局道具管理器也可以不調用各模塊,而是直接調用存檔數據,然後讓各模塊自己監聽數據的變化做對應的處理。

建議

建議只有一個,就是不要把不同類型的數據放到一個數據表中。因為大家都知道的,道具都是有些共同屬性的,那索性把武將,武器,等等一些列有相同屬性的道具都放到一個表中吧!這樣做有幾個問題:

  1. 將同一種類型的東西放到兩個表中維護,增加了維護難度。
  2. 將不同類型的數據放到一個表中,如果我需要配置武器數據,還要先向下拉一百或者幾十行略過武將的數據,這也是在增加維護難度。
  3. 程序在組織模型的時候需要從兩個配置數據中獲取,增加了複雜度。
  4. 由於將各模塊用的數據都放到了一起,那麼只能是作為共有數據一起加進內存,而且不能刪除。
    所以還是建議同種類型的數據就放到一個表中維護就可以了。

結語

以上是我個人對於道具管理的一些理解,主要還是對於多人開發而語言,希望有不同意見的同學在下方留言,一起交流。

長按下方二維碼,關注《微笑遊戲》公眾號,獲取更多精彩內容。

image
歡迎掃碼關注公眾號《微笑遊戲》,瀏覽更多內容。