游戏任务系统实现思路

news/2024/11/8 3:07:21/

文章目录

  • 一、需求介绍
  • 二、数据库设计
  • 3、代码部分实现


一、需求介绍

1、首先任务的类型不同,可以分为:日常任务、成长任务、活动任务等等。
2、当达到任务目标时,自动发放任务奖励。
3、任务需要后台可配置,例如:任务名称、完成条件、奖励内容等等。

二、数据库设计

1、任务表

字段名称注释
task_id任务id
type任务类型(日常、成长、活动等)
task_describe任务描述
reward_describe奖励描述
unlock_rule解锁条件
finish_rule完成条件
reward_rule完成奖励
number每日可完成次数
start_time任务开始时间
end_time任务结束时间

2、解锁条件配置表

字段名称注释
unlock_id解锁条件id
describe解锁条件描述
unlock_rule解锁条件规则

在unlock表中,我们配置一些任务解锁的条件:

INSERT INTO `sys_task_unlock_config` (`unlock_id `, `describe`, `unlock_rule `) VALUES (11000, '邀请%d个好友', 'type=11000&num=%d');
INSERT INTO `sys_task_unlock_config` (`unlock_id `, `describe`, `unlock_rule `) VALUES (12101, '累计拿到%d次SSS成绩', 'type=12101&num=%d');

比如:累计拿到3次SSS成绩的解锁条件为累计拿到1次SSS成绩,那么在任务表中,unlock_rule 解锁条件配置为 type=12101&num=1

3、完成条件配置表

字段名称注释
finish_id完成条件id
describe完成条件描述
finish_rule完成条件规则

与解锁表相同,我们插入两条演示数据:

INSERT INTO `sys_task_finish_config` (`finish_id`, `describe`, `finish_rule `) VALUES (21000, '邀请%d个好友', 'type=21000&num=%d');
INSERT INTO `sys_task_finish_config` (`finish_id`, `describe`, `finish_rule `) VALUES (22101, '累计拿到%d次SSS成绩', 'type=22101&num=%d');

那么拿到3次SSS成绩的完成配置:type=22101&num=3

4、奖励条件配置表

字段名称注释
reward_id奖励条件id
describe奖励条件描述
reward_rule奖励条件规则

同上,插入两条演示数据:

INSERT INTO `sys_task_rewaed_config` (`reward_id`, `describe`, `reward_rule `) VALUES (31000, '奖励%d个宝石', 'type=31000&num=%d');

那么,奖励条件配置为:type=31000&num=3,即为完成任务奖励3个宝石

5、个人任务表

字段名称注释
task_record_id任务记录id
user_id用户id
task_id任务id
type任务类型
status任务完成情况
completed_times已完成次数
number每日可完成次数

3、代码部分实现

首先需要监听游戏中发生的各种事件,比如:在线10分钟、杀死一个野怪等等。这些时间会触发我们的任务。
在触发任务后,需要统计角色的信息,然后用这些信息去遍历任务表,看看哪些任务可以解锁,将其添加至个人任务表。
随后遍历个人任务,查看哪些符合完成条件,对符合条件的发放奖励。

大致流程:

在这里插入图片描述
另外,我们在创建角色时,需要将一些没有解锁条件的任务添加至数据库。
我们在添加有时间期限的任务时,需要添加定时任务,在活动到期时将任务从个人任务表删除。


http://www.ppmy.cn/news/1287214.html

相关文章

物联网协议Coap之Californium CoapServer解析

目录 前言 一、CoapServer对象 1、类对象定义 2、ServerInterface接口 3、CoapServer对象 二、CoapServer服务运行分析 1、CoapServer对象实例化 1.1 调用构造方法 1.2 生成全局配置 1.3 创建Resource对象 1.4-1.8、配置消息传递器、添加CoapResource 1.9-1.12 创建线…

【LeetCode:17. 电话号码的字母组合 | 递归 + 回溯 + 组合】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

Redis(认识NoSQL,认识redis,安装redis,redis桌面客户端,redis常见命令,redis的Java客户端)

文章目录 Redis快速入门1.初识Redis1.1.认识NoSQL1.1.1.结构化与非结构化1.1.2.关联和非关联1.1.3.查询方式1.1.4.事务1.1.5.总结 1.2.认识Redis1.3.安装Redis1.3.1.依赖库1.3.2.上传安装包并解压1.3.3.启动1.3.4.默认启动1.3.5.指定配置启动1.3.6.开机自启 1.4.Redis桌面客户端…

【Java基础系列】body参数前后端不一致

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Python编程者的元旦狂欢:一场别样的烟花盛宴

文章目录 一、前言二、实现步骤1.前期准备2.部分代码2.1 窗口设置2.2 烟花类 Firework2.3 粒子类 Particle2.4 轨迹类 Trail2.5 更新函数2.6 导入音频2.7 显示元旦快乐2.8 Esc键结束 3.完整代码(详细注释)4.视频效果5.可执行文件 三、总结 一、前言 202…

【Java进阶篇】什么是UUID,能不能保证唯一?

什么是UUID,能不能保证唯一? ✔️典型解析✔️优缺点 ✔️各个版本实现✔️V1.基于时间戳的UUID✔️V2.DCE(Distributed Computing Environment)安全的UUID✔️V3.基于名称空间的UUID(MD5)✔️V4.基于随机数的UUID✔️V5.基于名称空间的UUID(SHA1)✔️各个版本总结…

vue3框架笔记

Vue Vue 是一个渐进式的前端开发框架,很容易上手。Vue 目前的版本是 3.x,但是公司中也有很多使用的是 Vue2。Vue3 的 API 可以向下兼容 2,Vue3 中新增了很多新的写法。我们课程主要以 Vue3 为主 官网 我们学习 Vue 需要转变思想&#xff0…

Javaweb-servlet

一、servlet入门 1.Servlet介绍 (1)什么是Servlet Servlet是Server Applet的简称,是用Java编写的是运行在 Web 服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet&#…