遊戲開發中的道具管理

千鋒Python唐小強發表於2020-07-02

前言

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

道具的定義

道具的屬性基本分為:

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
歡迎掃碼關注公眾號《微笑遊戲》,瀏覽更多內容。

相關文章