一个粗略的任务系统
前言
为了让游戏的内容丰富起来,同时也能辅助构建游戏世界所处的环境和世界观等等,所以准备简单的开发一个任务系统。
e.g.
支线任务 - 砍人买瓜
「前去长安城购买甘甜可口的西瓜」奖励:载具*1、武器*1
我:“哥们儿,这瓜多少钱一斤呐”
瓜摊老板:“两块钱一斤”
我:“给我挑一个”
瓜摊老板:“行,这个怎么样?”
- 选项 1[
这瓜保熟吗?
] - 选项 2[
不买了
]
任务设计
参考了一些成熟的游戏,任务暂且分 4 类:
- 主线任务
剧情任务,顺序领取
- 日常任务
每日领取次数均有限制,隔天重置。也可细分:师门任务、帮派任务、组队任务等
- 周常任务
每周领取次数均有限制,隔周重置。比如:副本任务
- 支线任务
固定 NPC 领取或区域触发
每个任务由最少 1 个事件(step)构成,事件的触发方式(类型)分为:
- NPC 触发
点击 NPC 领取任务,比如上面的「买瓜」任务
- 击杀触发
击杀指定 NPC 领取任务
- 道具触发
使用特定道具领取任务
- 区域触发
进入某个坐标范围领取任务
- 时间触发
任务超时失败。比如:限制 3 分钟内完成「买瓜」任务
暂时想到这么多,新的想法后面再补充
任务配置结构
定义「吃瓜」这个任务的数据结构
1 | // 任务类别 |
1 | { |
逻辑实现
对话
1 | func (r *TaskMgr) OnTalkNpc(id uint32, step int) bool { |
击杀
1 | func (r *TaskMgr) OnKillNpc(npc interfaces.INpc) bool { |
1 | // 更新任务事件 |