资源道具化
作者:互联网
概念
概念:系统中的每一个资源分配一个唯一标识。
举例:金币、钻石、道具、礼包、勋章、英雄、英雄碎片、活动积分、表情等。
中间层:处理资源增减请求。
举例
签到为例
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,对接兑换模块。
兑换模块,先发起减请求,再发起加请求。
总结
- 资源道具化,统一性。
- 中间层,对外界屏蔽不同资源的差异。
- 子模块不直接交互,通过中间层间接交互。
标签:勋章,--,道具,签到,英雄,模块,资源,E2 来源: https://www.cnblogs.com/txtp/p/16448442.html