資源道具化

概念

概念:系統中的每一個資源分配一個唯一標識。

舉例:金幣、鑽石、道具、禮包、勳章、英雄、英雄碎片、活動積分、表情等。

中間層:處理資源增減請求。

舉例

簽到為例

graph LR
A[簽到請求] –>B{是否可簽}
B –>|yes| D[讀取獎勵配置]
D –> E1[直接獲得獎勵] –> 結束
D –> E2[提出資源增加請求] –> 結束

style E1 stroke:Orange,stroke-width:4px
style E2 stroke:Red,stroke-width:4px

紅色要優於橙色。

紅線邏輯,簽到模塊不關心獎勵是怎麼加上去的。

中間層處理資源

graph LR
A[資源增減請求] –>B{增加or減少}
B –>|增加| D{不同的類型}
D –> E1[加金幣]
D –> E3[加英雄碎片] –> 調用背包模塊
D –> E2[加英雄]
E2 -..-> |沒有該英雄| F1[調用英雄模塊]
E2 -..-> |有該英雄 不允許分解| F1
E2 -..-> |有該英雄 允許分解| F2[讀取碎片數 發起加碎片請求] -..-> A

中間層實現了增減資源的操作。

兩張表

資源表

id type desc ext…
資源ID唯一標識 不同的類型 描述 一些擴展字段

簽到表

day id count
第幾天 資源ID 數量

需求擴展

需求:簽到給英雄,如果玩家已經擁有該英雄,則改為給3個英雄碎片。

實現:兌換表:英雄、英雄碎片、兌換個數。把自動拆為碎片的邏輯放入中間層,簽到模塊不用關心。

需求:如果玩家獲得A道具100次,獲得S勳章。獲得3次S勳章,達成Y成就。

實現:勳章表:道具、收集次數。成就表:勳章、收集次數。

增加道具時,對應計數+1。判斷是否觸發勳章獲得的條件,如果達成,增加對應的勳章。

增加勳章時,對應計數+1。判斷是否觸發成就獲得的條件,如果達成,增加對應的成就。

道具、勳章、成就,都資源化,無差別對待。根據資源表中的type,做不同邏輯。

不同的模塊,可以復用這套邏輯。

需求:簽到給積分,積分可以兌換英雄碎片。

實現:積分作為一種資源,分配一個ID,對接兌換模塊。

兌換模塊,先發起減請求,再發起加請求。

總結

  • 資源道具化,統一性。
  • 中間層,對外界屏蔽不同資源的差異。
  • 子模塊不直接交互,通過中間層間接交互。