游戏任务设计

本文详细介绍了游戏中的角色任务系统设计,包括任务接收、进度更新、完成和提交的流程。通过注册任务监听事件,确保任务逻辑在触发时正确执行。任务加载、过滤和初始化是关键步骤,同时考虑了自动接取、完成条件和提交处理。任务系统的优化减少了冗余代码,提高了开发效率。
摘要由CSDN通过智能技术生成

角色任务 quest
一、简介
一个游戏流程中总会有各种各样任务去引导玩家熟悉游戏或者提高玩家参与度, 这些任务多种多样,如果没有一个统一处理的模块;
代码那将会十分冗余;所以项目中必须要有一个处理这些任务的机制, 减少重复代码的编写, 增强代码的可阅读性, 提高开发效率;
一个任务必不可少的流程有:接收任务 → 触发增加任务进度事件 → 所有进度完成时任务状态变为完成 → 提交任务;
任务有自动接收也有玩家主动接收,很多情况是根据玩家等级来获取玩家可看见任务列表, 在玩家主动或自动接取完任务后达到任务要求时触发任务进度事件 ,
直到完成任务所需所有进度时触发完成任务事件, 任务完成后 有自动提交或者玩家手动提交(触发提交事件处理了相关逻辑)

二、原理
项目中角色任务往往都与触发器结合使用, 这些任务在玩家登录时逐个加载到玩家身上(也就是加载到记录m_quest上), 并且将每个任务
相关的触发事件也增加到玩家监听事件中, 还额外增加角色升级, 接收任务, 完成任务, 提交任务等触发事件的监听, 这样在其他地方有触发到这些事件
时就能去执行相应的触发事件的, 如果没有增加监听事件的话,那么即使触发事件,也并不会执行该任务的事件处理逻辑(event方法);

下面我们就详细看看这些任务是如何加载到玩家身上的;

  1. 修正玩家身上任务
    首先遍历玩家身上的任务列表, 将任务逐个与配置表中的任务数据对比, 做一些修正处理, 主要是过滤掉一些非法任务, 过期任务 任务需求改动等有问题的任务,
    将这些不需要的任务去掉后, 最后将还需要的任务加回到玩家身上;

  2. 注册任务监听事件,
    这些任务的监听事件一般为在线常驻的,所以推荐在玩家登录时进行相关事件监听的添加。任务在这里也是如此, 对当前任务列表逐个删除原来的监听事件,
    增加新的监听事件, 给某些未完成需要初始化进度的任务初始化进度;

  3. 接取新任务(获取可看见能接取任务列表, 已接受任务列表)
    (一) 可看见能接收任务列表
    ①从配置中获得当前等级下任务列表
    ②减去以及完成的任务列表和已接受任务的列表
    ③对任务列表进行过滤,根据(审核服专用任务, 职业, 等级, 前置任务, 后置任务, 白名单, 开服时间, 互斥任, 接收条件等)过滤掉不符合条件的任务
    ④过滤隐藏任务, 默认自动完成等级任务, 最后获得一个可看见接取列表存到玩家身上
    (二) 已接受任务列表
    ⑤遍历可接受任务列表,查询能否自动接取任务,如果可以则调用接取任务的一系列逻辑
    ⑥自动接取任务处理, 条件检测 ->接取损益处理 -> 接取任务 →触发事件等),最后接取成功将任务加载到已接取列表

–接取任务 接取任务这里逻辑较多详细说一下, 玩家主动接取任务也是走这里的逻辑

  1. 根据任务类型去相应任务模块处理接取任务,通用任务则走通用接取逻辑, 对于不同需求的任务需要做处理,
    任务接取的流程:
    ①初始化任务进度
    ②增加监听进度增加的触发器(初始化时已完成任务无需监听)
    ③增加任务结束时间的定时器
    ④根据接取时间,结束时间,任务Id等组装成通用任务结构
    ⑥加入到已接取任务列表
    ⑦从可接取列表删除该任务; 已接取列表加到玩家身上;
    ⑧推送给客户端, 记录接取任务日志, 完成任务加载
    ⑨触发接取任务事件的监听
    ⑩任务在初始化或进度增加后, 进度值大于任务目标值后,任务设置为完成状态,触发器置空

– 更新任务进度,当任务进度完成时查看任务进度列表是否还有进度未完成,都完成后, 打上完成标识, 获取是否退副本等,最后触发任务完成事件的监听

–提交任务 提交任务也需要详细说一下
①提交任务也有玩家主动提交和任务自动提交
②任务提交的步骤:
1.计算任务提交的损益并做处理,
2.记录任务完成,将任务ID加入任务完成列表
3.从已接受列表删除

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值