游戏任务系统的设计(下)
Contents
前言
刚水好的一篇博客被VSCode吞了,也是够够的,好吧我重来。 本打算分享一下这周内做的GRpc的简单封装呢,手里没代码,那就先把任务系统了结吧。
任务对象
因为涉及到任务奖励的分发,需要记录奖励的领取状态,落后的社会生产力不能满足人民日益增长的物质文化需求,于是大笔一挥增加了任务奖励的领取状态。
{
"type" : 0 //日常、周常、成就
"mode" : 0 //任务具体枚举类型
"cfgId" : 0 //对应静态配置ID,用于查询具体
"num" : 0 //任务需求数量、名次、等级
"rewardState" : 0 //0:未领取,1:已领取
}
- 状态切换
- 任务未完成:任务对象num达到奖励未要求的阈值
- 任务已完成:任务对象num达到奖励要求的阈值
- 奖励未领取:任务已完成,且rewardState为0
- 奖励已领取:任务已完成,且rewardState为1
奖励发送
我们采取的是,玩家主动请求任务奖励的方式来领取对应的奖励。
- 日常、周常
- 奖励未领取状态
- rewardState置为已领取状态
- 删除任务对象
- 触发ALL型任务
- 发送任务奖励
- 成就
成就设计到统计成就点、展示成就完成时间、人前显圣晒的心理,成就领取完奖励就不予删除。
- 奖励未领取状态
- rewardState置为已领取状态
- 触发ALL型任务
- 发送任务奖励
任务动态增加
任务不可能一成不变,实现动态增加是一个硬性的需求。
- 日常、周常
日常、周常有刷新时间,只要达到刷新时间清除所有已创建任务对象,重新载入所有任务对象即可。
- 成就
成就因为没有刷新时间,所以需要一定的策略。
- 成就ID必须增量增加。
- 成就有删减ID不回收。
- 线上阶段,ID有删除操作一般禁止,或者做额外策略。
- 线上阶段,ID对应任务类型变更禁止。
- 任意阶段修改ID对应Num值,允许。
- 角色创建,角色身上绑定最大成就ID
- 玩家登录,对比自身最大成就ID和当前最大成就ID
- 成就有更新,增加(自身最大成就ID, 当前最大成就ID]内所有成就。
当前成就的策略向应用到日常、周常上也可以。
小结
2个篇幅任务系统总算完结了,也算是一个比较长的一篇博客了,当然项目中的任务系统肯定要比此复杂,但基本样子应该差距不算太大。
Author wangkm
LastMod 2018/08/13