游戏服务器设计之任务系统

简介: 游戏服务器设计之任务系统介绍任务系统是游戏中最重要的系统之一,本文旨在设计一个轻量清晰的任务系统。通用易扩展是本系统关注的重点。任务系统中当角色的条件满足时,自动触发每一类型的任务,每个任务有其所需的完成条件,当角色完成了指定的操作后,则会触发任务自动完成,任务完成后一般玩家会领取对应的奖励,结束任务,此任务的生命周期结束,如果这个任务有后续任务,那么会自动触发下一个任务,从玩家角度讲,任务是一条故事线,所以经常会说主线、支线任务就是这个原因。

游戏服务器设计之任务系统

介绍

任务系统是游戏中最重要的系统之一,本文旨在设计一个轻量清晰的任务系统。通用易扩展是本系统关注的重点。任务系统中当角色的条件满足时,自动触发每一类型的任务,每个任务有其所需的完成条件,当角色完成了指定的操作后,则会触发任务自动完成,任务完成后一般玩家会领取对应的奖励,结束任务,此任务的生命周期结束,如果这个任务有后续任务,那么会自动触发下一个任务,从玩家角度讲,任务是一条故事线,所以经常会说主线、支线任务就是这个原因。

设计

当设计任务时有如下几个重点:

  1. 任务需要以线的方式组织,一般都是在每个任务配置中指定下一个任务的id,每个任务线的第一个和最后一个比较特殊,第一个任务必须在角色属性满足条件下自动获得,而最后一个任务因为是故事线的结尾所以不能触发下一个任务,需要保持任务已结束的状态,如果故事线增加了后续任务,那么任务可以继续往下顺延。

  2. 任务需要满足条件才能接取,所谓的条件一般都是角色属性,比如角色等级。比如等级10级以上的可接取,为了抽象这个需求,任务可接条件设置两个字段角色属性类型和属性值,这个等级的例子就是等级:10。

  3. 任务接取后角色在游戏中做相关的操作,如果跟接取的任务相关,那么任务的进度会自动更新,那么二者是组合产生关联的呢?我们使用事件机制,玩家的游戏行为拆分出一系列的事件类型,用三个字段表示,事件类型,事件对象,事件值,比如打怪,事件类型为击杀怪物,事件对象为树妖,事件值为1。对应的任务完成条件也是这三个配置,不过任务配置中的值为目标值,另外有一种特殊情况比较常见就是状态完成条件,比如某任务需要角色达到100级完成,这个时候就用一个特殊的事件类型,属性表示状态类的完成条件,本例中配置就应该为属性:等级:100。

  4. 任务完成后需要触发下一个任务,但是如果下一个任务条件不满足,那么也不允许获得该任务,待角色属性成长后满足了条件再自动获得。

  5. 任务配置除了支持以上说的参数外,需要流出一些可扩展参数,比如任务奖励,任务绑定的npc,任务接、交过程中的对白、过场动画等。任务系统使用csv做配置,增加配置只需要增加字段就可以了,每个任务有map类型的参数字段保留了所有扩展配置。

任务操作的时序图

img_adee1e82e9364a81bf6a21ad659dfbe2.png

任务操作的状态图

img_70a963a0c163ae4eaccc594de9730e77.png

总结

  1. 系统中大量使用了事件机制,增加了易用性和可扩展性。角色上线载入数据,使用事件机制,避免了与数据库模块产生耦合,同时也很好的支持了异步和同步模式。
  2. 任务系统与客户端的协议细节没有做实现,这个使用者在确定的事件下hook到然后通知客户端即可,完全不需要修改任务系统。
  3. 任务系统的接口都已适配到脚本层,利用h2engine 的通用脚本层,无论是Python,lua,js,php都可以使用相同的接口调用任务系统。
  4. GitHub地址: https://github.com/fanchy/h2engine
  5. 关于任务系统使用的属性管理器:http://www.cnblogs.com/zhiranok/p/h2engine_propmgr.html
  6. 关于游戏服务器引擎h2engine:http://www.cnblogs.com/zhiranok/p/ffengine.html
目录
相关文章
|
29天前
|
存储 Linux 测试技术
HPE SPP 2025.07.00.00 - HPE 服务器固件、驱动程序和系统软件包
HPE SPP 2025.07.00.00 - HPE 服务器固件、驱动程序和系统软件包
62 4
|
2月前
|
监控 关系型数据库 数据库连接
FastAdmin系统框架通用操作平滑迁移到新服务器的详细步骤-优雅草卓伊凡
FastAdmin系统框架通用操作平滑迁移到新服务器的详细步骤-优雅草卓伊凡
76 3
FastAdmin系统框架通用操作平滑迁移到新服务器的详细步骤-优雅草卓伊凡
|
3月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
454 21
|
3月前
|
Ubuntu Linux 数据中心
阿里云服务器纯净版系统解析:公共镜像版本特性与选择指南参考
当我们选购阿里云服务器时,系统镜像的选择至关重要。阿里云为用户提供了多种系统镜像,包括公共镜像、自定义镜像、共享镜像、云市场镜像和社区镜像。其中,公共镜像为纯净版系统,这些系统皆已正版授权,旨在为ECS实例上的应用程序提供安全、稳定的运行环境。本文将为大家详细汇总阿里云服务器纯净版系统及最新的系统版本,以供大家了解和选择。
|
3月前
|
人工智能 运维 Prometheus
“服务器罢工前的预言术”:用AI预测系统状态真香指南
“服务器罢工前的预言术”:用AI预测系统状态真香指南
78 4
|
3月前
|
监控 Ubuntu 安全
Ubuntu系统下构建FTP服务器的步骤
记住,时不时的巡视(监控)农场,更新工具(软件和安全性更新),以及恰当的维护同样重要,这样你的FTP农场才能长久繁荣。
68 4
|
4月前
|
机器学习/深度学习 人工智能 运维
AI加持的系统性能优化:别让你的服务器“累趴下”
AI加持的系统性能优化:别让你的服务器“累趴下”
233 12
|
3月前
|
数据采集 人工智能 BI
MyEMS能源管理系统后台配置-邮件服务器设置
本文介绍其邮件服务器配置方法。
45 0
|
4月前
|
数据挖掘 Linux 数据库
服务器数据恢复—Linux系统服务器数据恢复案例
服务器数据恢复环境: linux操作系统服务器中有一组由4块SAS接口硬盘组建的raid5阵列。 服务器故障: 服务器工作过程中突然崩溃。管理员将服务器操作系统进行了重装。 用户方需要恢复服务器中的数据库、办公文档、代码文件等。

热门文章

最新文章