设计概述_new.md 8.4 KB

任务模块设计概述

1. 模块简介

任务模块是开心农场系统的核心功能模块之一,负责管理游戏中的各类任务,包括日常任务、成就任务、活动任务等。该模块提供任务的创建、分配、进度跟踪、完成验证和奖励发放等功能,通过任务系统引导玩家体验游戏内容,提高用户活跃度和留存率。

2. 核心功能

2.1 任务管理

  • 支持多种任务类型:日常任务、周常任务、成就任务、活动任务、新手引导任务、团队任务
  • 任务分类管理:按照不同维度对任务进行分类
  • 任务前置条件:支持设置任务的前置依赖关系
  • 任务时间限制:支持设置任务的有效期和过期机制

2.2 任务进度跟踪

  • 自动跟踪玩家的任务进度
  • 支持多种任务目标类型:种植、收获、升级、登录、邀请等
  • 实时更新任务完成状态
  • 任务进度持久化存储

2.3 任务奖励系统

  • 支持多种奖励类型:物品、经验、特殊权益等
  • 奖励自动发放机制
  • 奖励领取记录
  • 与物品系统的无缝集成

2.4 任务重置机制

  • 支持不同周期的任务重置:每日、每周、每月
  • 重置时保留或清除任务进度
  • 重置时间点可配置

2.5 任务通知

  • 新任务可接取通知
  • 任务完成通知
  • 任务即将过期提醒

3. 任务机制

3.1 任务类型与分类

任务模块支持多种任务类型,每种类型有不同的特性和处理机制:

  1. 日常任务(Daily)

    • 每天重置,通常在凌晨0点
    • 用于鼓励玩家每天登录游戏
    • 典型例子:每日登录、每日种植3次、每日收获10次
  2. 周常任务(Weekly)

    • 每周重置,通常在周一凌晨0点
    • 难度和奖励通常高于日常任务
    • 典型例子:周内种植50次、周内完成5次交易
  3. 成就任务(Achievement)

    • 永不重置,只能完成一次
    • 通常有多个等级或阶段
    • 典型例子:种植1000次、收获稀有价值的作物、达到特定等级
  4. 活动任务(Event)

    • 与游戏活动绑定,有明确的开始和结束时间
    • 通常有特殊的奖励和玩法
    • 典型例子:节日活动任务、限时活动任务
  5. 新手引导任务(Tutorial)

    • 用于指导新玩家学习游戏机制
    • 通常有固定的顺序和前置依赖
    • 典型例子:完成游戏注册、完成第一次种植
  6. 团队任务(Team)

    • 需要多个玩家合作完成
    • 通常有团队进度和个人贡献度
    • 典型例子:团队种植总量、团队收获总量

3.2 任务条件与进度

任务模块采用多条件进度跟踪机制,支持复杂的任务完成逻辑:

  1. 多条件任务

    • 一个任务可以有多个完成条件
    • 条件类型分为前置条件(prerequisite)和进度条件(progress)
    • 可以设置条件是否必要(is_required)
  2. 条件参数化

    • 每个条件可以设置特定参数,如特定作物ID、特定物品ID等
    • 参数以JSON格式存储,支持复杂的条件配置
  3. 进度计算机制

    • 支持多种运算符:=、>=、<=等
    • 每个条件有独立的目标值和当前值
    • 总进度基于必要条件的完成比例计算
  4. 条件依赖关系

    • 支持条件之间的依赖关系
    • 可以设置条件的完成顺序

3.3 任务重置机制

任务模块提供灵活的重置机制,支持不同类型任务的周期性重置:

  1. 重置类型

    • 每日重置(daily):每天凌晨0点重置
    • 每周重置(weekly):每周一凌晨0点重置
    • 每月重置(monthly):每月1日凌晨0点重置
    • 不重置(none):永不重置,只能完成一次
  2. 重置内容

    • 任务状态重置:将已完成或已领取奖励的任务重置为未接取或进行中
    • 任务进度重置:将任务的完成进度重置为0或初始值
    • 可以选择性重置特定条件的进度
  3. 重置时间控制

    • 支持自定义重置时间点
    • 考虑时区因素,默认使用北京时间(UTC+8)
    • 支持手动触发重置
  4. 重置日志

    • 记录每次重置的详细信息
    • 包括重置类型、重置时间、受影响的任务等

3.4 任务奖励机制

任务模块提供丰富的奖励机制,支持多种奖励类型和发放方式:

  1. 奖励类型

    • 物品奖励(item):如种子、工具、道具等
    • 货币奖励(currency):如金币、钻石、点券等
    • 经验奖励(experience):玩家经验值、实验室经验等
    • 特殊权益(feature_unlock):解锁特殊功能、增加背包格子等
  2. 奖励参数化

    • 每个奖励有两个参数:reward_param1和reward_param2
    • 参数含义根据奖励类型不同,如物品类型和ID、货币类型和ID等
    • 支持额外数据(extra_data)存储复杂奖励信息
  3. 奖励发放机制

    • 手动领取:用户主动领取奖励
    • 自动发放:任务完成后自动发放奖励
    • 批量领取:支持一键领取多个任务奖励
  4. 奖励发放日志

    • 记录每次奖励发放的详细信息
    • 包括用户ID、任务ID、奖励内容、发放时间等

3.5 任务接取消耗

任务模块支持任务接取消耗机制,允许设置接取任务所需的资源消耗:

  1. 消耗类型

    • 货币消耗(currency):如金币、钻石等
    • 物品消耗(item):如任务券、特殊道具等
    • 能量消耗(energy):如体力、精力等
  2. 消耗参数化

    • 每个消耗有两个参数:cost_param1和cost_param2
    • 参数含义根据消耗类型不同,如货币类型和ID、物品类型和ID等
  3. 消耗验证机制

    • 接取任务前验证用户资源是否足够
    • 支持多种消耗组合
  4. 消耗日志

    • 记录每次消耗的详细信息
    • 包括用户ID、任务ID、消耗类型、消耗数量等

4. 数据流程

4.1 任务接取流程

  1. 用户请求可用任务列表
  2. 系统根据用户等级、完成情况等筛选可接取任务
  3. 用户选择并接取任务
  4. 系统创建用户任务记录,初始化进度
  5. 返回接取结果

4.2 任务进度更新流程

  1. 用户执行游戏操作(如种植作物)
  2. 系统捕获相关事件
  3. 任务模块根据事件类型更新相关任务进度
  4. 检查任务是否完成
  5. 如果任务完成,更新任务状态

4.3 任务奖励领取流程

  1. 用户请求领取已完成任务的奖励
  2. 系统验证任务完成状态
  3. 系统发放任务奖励(调用物品模块)
  4. 更新任务状态为已领取
  5. 记录奖励领取日志
  6. 触发任务完成事件(用于团队收益计算等)

5. 与其他模块的交互

5.1 与用户模块的交互

  • 获取用户基本信息
  • 验证用户权限和等级

5.2 与物品模块的交互

  • 调用物品模块接口发放任务奖励
  • 验证用户物品使用情况(针对使用物品类任务)

5.3 与农场模块的交互

  • 监听种植、收获等事件
  • 更新相关任务进度

5.4 与团队模块的交互

  • 任务完成后计算团队收益
  • 支持团队协作任务

5.5 与通知模块的交互

  • 发送任务相关通知

6. 扩展性设计

6.1 任务类型扩展

  • 通过枚举类型定义任务类型,便于扩展
  • 支持自定义任务目标类型
  • 支持自定义任务完成条件

6.2 任务奖励扩展

  • 支持多种奖励类型
  • 支持自定义奖励发放逻辑

6.3 任务触发机制扩展

  • 基于事件的任务进度更新机制
  • 支持自定义事件监听器

7. 性能优化

7.1 数据库优化

  • 合理设计索引
  • 分表策略(按用户ID分片)
  • 定期清理过期任务数据

7.2 缓存策略

  • 缓存用户当前任务列表
  • 缓存任务配置信息
  • 使用Redis存储热点任务数据

7.3 异步处理

  • 任务奖励发放异步处理
  • 大规模任务重置使用队列处理

8. 安全性考虑

8.1 防作弊机制

  • 任务进度服务端验证
  • 敏感操作日志记录
  • 异常任务完成监控

8.2 数据一致性

  • 使用事务确保任务状态和奖励发放的原子性
  • 奖励发放失败重试机制

9. 未来规划

9.1 功能扩展

  • 支持任务链和任务树
  • 支持条件分支任务
  • 支持多人协作任务

9.2 性能提升

  • 引入分布式任务处理
  • 优化大规模任务数据存储

9.3 用户体验优化

  • 任务推荐系统
  • 个性化任务生成
  • 任务完成动画和特效