資源道具化
概念
概念:系統中的每一個資源分配一個唯一標識。
舉例:金幣、鑽石、道具、禮包、勳章、英雄、英雄碎片、活動積分、表情等。
中間層:處理資源增減請求。
舉例
簽到為例
graph LR
A[簽到請求] –>B{是否可簽}
B –>|yes| D[讀取獎勵配置]
D –> E1[直接獲得獎勵] –> 結束
D –> E2[提出資源增加請求] –> 結束
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
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,對接兌換模塊。
兌換模塊,先發起減請求,再發起加請求。
總結
- 資源道具化,統一性。
- 中間層,對外界屏蔽不同資源的差異。
- 子模塊不直接交互,通過中間層間接交互。