任务系统
*一、概述*
本文档为A3项目任务系统最简框架的需求文档,第一版仅包含以下基础功能
单个任务流程及任务状态流转
多个任务之间的串联,可形成单链式、分支式、并行式任务结构
通过满足不同条件,进入不同的后续任务分支
任务状态流转条件包括进出区域、播放剧情、打怪、npc对话和交互
任务初版界面
*二、设计目的*
为玩家树立游戏内的一系列目标,对玩家进行引导
通过任务串联起游戏内的剧情、战斗、箱庭等玩法
达成目标后给予奖励反馈,刺激玩家继续游戏的行为
*三、功能逻辑*
3.1 任务整体结构
游戏内的所有任务由不同任务类型的多个任务构成
任务之间通过前置任务及额外条件,可形成以下结构
单链式
完成上一个任务后解锁后续的一个任务
后续任务也可以有额外的解锁条件,即需要完成上一个任务且在满足该额外解锁条件后,后续任务才解锁
分支式
完成上一个任务后,解锁后续多个任务中的其中某一个任务
根据后续各个任务的解锁条件,进入不同任务分支
并行式
完成上一个任务后,可同时解锁后续多个任务
多个并行任务可以在完成其中一个或若干个任务后解锁后续任务,具体由策划配置
后续追踪任务
每个任务后面可以配置后续自动追踪的任务,使得任务体验更加流畅
若未配置,则该任务完成后,自动追踪该任务id+1的任务(大部分情况)
若配置-1,则该任务完成后,不自动追踪任何任务(任务链结束的情况下)
若配置一个任务id,则该任务结束后,自动追踪配置id的任务
若配置多个任务id,则按配置顺序追踪第一个已解锁的任务
如果后续追踪任务id未找到或任务未解锁、任务已完成(且无法再次刷新),则不追踪任何任务
任务结构示意
3.2 任务类型
任务需要区分多种不同的类型
主线任务
承载游戏核心故事内容的一次性任务
贯穿游戏整个生命周期
随版本更新不断延长
支线任务
承载游戏非核心故事内容以及游戏体验引导的一次性任务
其他类型
后续可能会扩展更多任务类型
如地区任务、角色任务等一次性任务、日常任务、周常任务等周期性任务
其他类型的任务会在后续版本明确具体需求,第一版任务系统先不做
3.3 单任务流程
单任务状态流转流程图
*3.3.1 任务状态及状态流转*
单个任务有多种不同的状态,任何一个任务在某一时刻必然处于其中一种状态下
当满足状态流转条件后,任务会从当前状态流转到另一个状态
任务状态及状态流转过程
未解锁
未完成前置任务或未满足解锁条件时,任务处于未解锁状态
该状态下满足解锁条件后,流转到待接取状态
待接取
完成前置任务且满足解锁条件时,任务进入待接取状态
该状态下满足接取条件后,流转到进行中状态
进行中
满足接取条件后,任务进入进行中状态
该状态下满足交付条件后,流转到待交付状态
待交付
满足交付条件后,任务进入待交付状态
该状态下满足完成条件后,流转到完成状态
完成
满足完成条件后,任务变成完成状态
任务完成后,获得任务奖励
一次性任务完成后,该任务结束,无法重新进行
部分周期性任务完成后,可能会重新刷新,允许玩家再次进行,第一版任务功能暂不涉及
*3.3.2 任务占用角色*
相同角色的判断
多个实例id但都对应相同NPC模板id的NPC,视为同一个角色
同一个角色在同一时刻不能出现多个,即同一时刻对应相同模板id的多个实例id中只能显示一个,其他实例id都要隐藏
任务占用角色
已解锁尚未完成的任务,即处于待接取、进行中、待交付状态时,若任务配置了占用指定箱庭的指定的任务类型的NPC实例id,则该NPC实例对应的模板id的角色被该任务占用
此时该角色其他实例都要被隐藏
角色占用冲突
当某个角色已被另一个任务占用,此时某个任务想要占用该角色的不同实例,则此任务发生角色占用冲突,无法占用这个角色,同时此任务中断,不能继续推进
发生角色冲突的任务,任务界面上会有冲突提示
角色占用的释放
当前占用某个角色的任务完成后,若没有任何任务需要占用该角色,则该角色非任务类型的NPC实例id从隐藏状态恢复显示
角色的继续占用
当前占用某个角色的任务完成后,若后续任务需要占用的所有角色当前未被其他任务占用,且则这些角色立刻被该后续任务占用,保证任务链的流畅进行
继续占用的情况下,角色没有先消失再出现的过程,应该继续显示,动作、巡逻等继续进行
例:任务1占用A→任务2占用AB,另一个任务101占用AB但冲突
任务1占用着A、101处于占用冲突,当任务1完成后,优先让后续任务2占用AB,101还是冲突
若后续任务需要占用的部分角色已被其他任务占用,则该任务处于占用冲突
例:任务1占用AB→任务2占用ABC,另一个任务101占用C
任务1和任务101可以同时做,但是做完任务1,任务2需要占用的C已经被101占了,任务2就冲突了
当前占用某个角色的任务完成后,若后续任务不再占用该角色,但有其他多个任务想要占用该角色,则按照优先级判断该角色由哪个任务占用
优先按类型占用:主线任务优先、支线任务其次
相同类型时:任务id小的优先
*3.3.3 任务进度重置*
当任务处于角色占用冲突时,玩家可以在任务界面上点击“开始追踪”让该任务强制占用角色,以推进任务,但当前占用角色任务进度会被重置,状态回到待接取
发生角色占用冲突的任务,当点击任务界面的“开始追踪”后,会先弹出强制做该任务的确认弹窗,弹窗中显示即将被重置进度的其他任务名称以及这些任务在到达当前状态前已达成所有条件的文案
例:任务1占用A,任务2占用B,任务101占用AB
任务1接取条件是和A对话、交付条件是打10只怪A、完成条件是和A汇报,当前已经完成了前两步,还差最后一步
任务2接取条件是自动接取、交付条件抵达指定地点、完成条件是和B对话,当前还没有达成交付条件
玩家现在只能做1或2,不能做101
如果强制做101,则任务1和2的进度会被重置
任务进度重置提示显示以下内容
任务1
和A对话√
击败10只怪物√
和A汇报→
任务2
抵达指定地点→
任务进度重置
被重置进度的任务,状态会回到待接取
被重置进度的任务必定显示在任务列表中,即便任务配置待接取状态不显示在列表中
任务被重置进度后,会发生角色占用冲突,直到该角色被其他任务释放,并重新被该任务占用,该任务可继续推进
3.4 任务条件
*3.4.1 子条件复合*
支持配置一个或多个子条件,多个子条件之间通过且或关系复合为一个完整的条件
如与三个人都进行对话:A且B且C
如与三个人中的任意一个人进行对话:A或B或C
*3.4.2 子条件类型说明及参数*
始终满足
直接满足,任务直接流转到下一状态
参数配置:无
进出区域及播放b类剧情
进入或离开指定箱庭的指定区域,进入或离开后可播放某个B类剧情
条件达成判断
若配置了剧情,则需要在剧情播放完成后视为条件达成
若剧情未播放完之前退出游戏,返回游戏后需要重新判断进出区域及播放剧情
若未配置剧情,则在进入或离开区域那一刻视为条件达成
参数配置
参数1:箱庭id
参数2:区域id
参数3:1进/2出
参数4:剧情章节id,若未配置则不需要播放剧情
打怪
击杀指定箱庭内指定怪物组内的全部或某个怪物
条件达成判断
进入该任务状态后,才开始对击杀目标的怪物进行击杀计数,即进入状态前击杀的怪物数量无效
当所有目标怪物均被击杀一次后,视为条件达成
参数配置
参数1:箱庭id
参数2:怪物组id
参数3:怪物id,若未配置具体怪物id则代表需要击杀该怪物组内所有怪物
NPC对话
和指定箱庭内指定NPC完成指定的交互内容
条件达成判断
若指定交互内容会播放指定的b类剧情
则需要在该b类剧情结束后才视为条件达成
若在b类剧情播放过程中退出游戏,返回游戏后需要重新跟该npc进行交互并完成该b类剧情
若指定交互内容不播放b类剧情,为普通对话或者任务选项
则需要在完成该句对话或选了该选项,且完成后续所有对话内容并结束和该npc的交互后才视为条件达成
若在后续对话内容未结束前退出游戏,返回游戏后需要重新跟该npc进行交互
参数配置
参数1:箱庭id
参数2:NPC的id
参数3:对话id
交互
完成和指定箱庭内的指定交互物之间的交互
条件达成判断
如果交互物有交互展示过程(如电梯运行动画),需要在过程结束后视为条件达成
若展示过程中退出游戏,返回游戏后需要重新和交互物进行交互
参数配置
参数1:箱庭id
参数2:交互物id
其他类型条件后续扩充,第一版仅实现上述几种条件类型即可
四、*配置结构*
4.1 任务表
数据名称 | 数据类型 | 数据说明 | 配置格式 |
---|---|---|---|
任务id | int | 任务唯一id | 1 |
任务类型 | int | 任务类型枚举值1:主线2:支线 | 1 |
任务名称 | string | 任务名称会显示在界面中 | |
任务描述 | string | 任务详细描述文案会显示在界面中 | |
前置任务 | string | 前置任务id支持配置多个任务id及且或关系 | 12&34|5|6 |
解锁条件 | string | 条件类型,条件参数1,条件参数2,……支持配置多个子条件参数及各子条件之间的且或关系 | 12,5604,1,100101998(2,5604,1,100101998)&(3,5602,1)(4,5604,1103000100,4)|(5,5604,1) |
接取条件 | string | 同解锁条件 | |
接取条件文案 | string | 接取条件文案 | |
交付条件 | string | 同解锁条件 | |
交付条件文案 | string | 交付条件文案 | |
完成条件 | string | 同解锁条件 | |
完成条件文案 | string | 完成条件文案 | |
任务奖励 | int | 掉落id | |
后续任务自动追踪 | int; | 完成该任务后自动继续追踪的任务用于任务界面² 若未配置则当前任务完成后自动追踪id为当前任务id+1的任务(大部分情况)² 若配-1则不自动追踪² 若配置≥0的一个或多个任务id,则自动追踪第一个已解锁的任务 | -123;4 |
占用NPC | string | 占用指定箱庭的NPC实例 | 5604,1001;5604,1002;5602,1001; |
待接取状态是否显示在任务界面中 | bool | 可不填,视为true | False |
4.2 常量表
数据名称 | 数据类型 | 数据说明 | 配置格式 |
---|---|---|---|
切换自动追踪任务的等待时间 | Float | 配置时间参数,单位为秒支持小数 | 5.5 |
五、*界面*
5.1 任务界面
*5.1.1顶部区域*
任务类型页签图标
居中显示全部及各任务类型的图标
第一版只做全部、主线、支线三种(图里多摆了几个图标,仅示意用)
打开任务界面后,默认选择“全部”,可点击其他图标切换所选页签
页签图标根据状态显示不同的样式
从左到右依次为当前选中状态、鼠标悬停状态、非选中状态
界面左上角显示当前选中的页签文案:全部任务、主线任务、支线任务
关闭按钮
界面右上角显示关闭按钮
键盘按ESC键或鼠标点击按钮后关闭任务界面,回到打开任务界面前的界面
*5.1.2任务列表区域*
任务列表显示当前所选任务类型页签内的所有任务
当顶部页签仅选择某一个类型的任务,则只显示该类型文案及该任务类型当前处于待接取(配置了待接取状态显示在任务列表中)、进行中、待交付状态的所有任务的条目,各条目由上至下根据任务id升序排列
当顶部页签选择全部任务时,列表区域由上到下依次显示主线任务、支线任务(、角色任务等)
选择“全部任务”时 选择“角色任务”时
任务条目
任务名称
每个任务条目显示该任务名称文案
最多显示十二个全角字符,超出部分不再显示
任务状态图标
若任务处于特殊状态,在任务条目右侧显示状态提示图标,图标右侧对其
当任务处于待接取状态时,显示特殊的接取图标
当任务处于待交付状态时,显示特殊的交付图标
任务追踪图标
玩家最多可对一个任务进行追踪(点击任务详情区域右下角追踪按钮)
当前处于追踪中的任务,会在任务条目左侧显示特殊追踪图标
选中状态与非选中状态
列表内任务条目选中规则
当选中某个页签时,若该页签内没有任务,则显示特殊的无任务样式
当选中某个页签时,若当前页签内包含正在追踪中的任务,则选中该任务
当选中某个页签时,若当前页签内不包含正在追踪中的任务,则选中列表内的第一个任务条目
点击列表内某个非选中状态的任务条目,可选中该条目
选中状态与非选中状态面板样式不同
选中状态与非选中状态
任务列表滑条
当任务列表无法显示当前全部任务条目时,右侧需要显示滑条
当鼠标位于列表区域内时,可通过话动鼠标滚轮或者鼠标按住左键不放并上下拖拽,对列表进行上下滑动
当拉到最顶端或最底端后,不可再继续移动
滑条与滑块的显示
滑条长度根据任务列表区域长度/任务条目总长度来显示
滑块的位置根据当前任务条目区域在任务列表中的区域范围显示
滑条的默认位置
当选中某个页签时,当前页前不包含正在追踪中的任务,则显示列表的最顶端
当选中某个页签时,若当前页签包含正在追踪中的任务,则尝试将该任务置于列表内上下居中的位置上,若无法居中则保持在列表最顶端或最底端
*5.1.3任务详情区域*
任务详情区域显示任务列表中选中任务的详细信息
任务名称
显示该任务的名称
任务目标所在箱庭
显示当前任务状态切换条件中配置的目标对应的箱庭
根据条件类型可直接读取箱庭id,显示该箱庭id配置的箱庭名称
目前条件类型都和箱庭有关
任务目标文案
显示当前任务状态切换条件配置的目标文案
任务描述文案
显示该任务配置的描述文案
任务奖励
显示该奖励掉落id里的道具图标及数量
若道具图标个数超出显示范围,则最右侧图标显示一半
在奖励显示区域按住鼠标左键左右拖拽,最多只能拖拽到最左端或最右端
角色占用冲突提示
当任务发生角色占用冲突时,显示冲突提示
点击冲突提示,弹出冲突详情Tips
详情Tips逐条显示正在被占用的NPC名称以及占用该NPC的任务名
根据条目数量,整体上下居中显示
如果条目过多超出显示区域,则最后显示半行,提示玩家上下话动查看全部条目
任务追踪按钮
若当前任务为非追踪状态,且不处于角色冲突状态,按钮显示“开始追踪”
点击按钮后,则该任务设为追踪中,将之前追踪中的任务取消追踪
任务列表中条目上的追踪图标也要刷新
若当前任务为非追踪状态,处于角色冲突状态,按钮显示“开始追踪”
点击按钮后,弹出放弃任务确认弹窗
弹窗中显示所有占用角色的任务以及该任务流转到当前状态前已达成的所有状态切换条件文案以及当前状态切换到下一状态的条件文案
已达成的和当前未达成的需要通过不同的图标区别显示
根据条目数量,整体上下居中显示
如果条目过多超出显示区域,则最后显示半行,提示玩家上下话动查看全部条目
若玩家点击确认放弃,则放弃上述所有任务,并且使当前任务占用该角色
若当前任务为追踪状态,按钮显示“取消追踪”
点击按钮后,取消对该任务的追踪
任务列表中条目上的追踪图标也要刷新
5.2 主界面
*5.2.1任务图标*
点击任务图标或者在主界面按J键,打开任务界面
*5.2.2追踪中的任务*
显示当前追踪中任务的类型图标、任务名称、状态切换条件文案、提示文字
若没有任何追踪中的任务,则此处不显示
任务图标
显示当前追踪中的任务的类型图标
与任务界面类型图标一致
任务名称
显示当前追踪中的任务的名称
状态切换条件文案
显示当前追踪中的任务,当前状态切换条件文案
提示文字
前往箱庭提示
若玩家当前不在状态切换条件目标所在箱庭,提示文字为“请前往XXX”,XXX为箱庭名称
此时按V键可前往目标箱庭(目前先直接传送到目标箱庭,之后有世界地图功能后,可能会改为打开目标箱庭小地图)
若玩家当前处于状态切换条件目标所在箱庭内,则不显示该提示,按V键无效
切换追踪任务提示
当玩家正在追踪任务A或者没有正在追踪的任务
此时玩家完成了某个非追踪中的任务B,且该任务有后续追踪任务C,且C没有角色占用冲突
主界面任务显示会短暂替换为任务C,询问玩家是否切换追踪任务C,显示持续x秒,x为常量配置,提示文字为“点击追踪”
若玩家在x秒内按V或点击提示文字,则开始追踪任务C
若玩家未在x秒内按V或点击提示文字,则不追踪任务C,仍旧追踪之前的任务A或不追踪任何任务
*5.2.3目标指引图标*
若当前追踪中任务状态切换条件目标位于箱庭内,则显示指引图标
若目标位于画面中央矩形范围内,则指引图标直接显示在目标位置上(如图1)
图标下方显示玩家与目标之间的直线距离
若目标位于画面中央矩形范围外,则指引图标停留在矩形边缘位置上,并通过箭头指向目标位置(如图2)
此时不需要显示玩家与目标之间的距离
*5.2.4任务奖励*
任务完成后,根据掉落id,逐条显示获取的道具图标、道具名称、道具数量
最多显示N行(以UI设计为准)
若奖励条目≤N,则停留x秒后消失
若奖励条目>N
则初始显示1-N行,停留y秒
之后列表开始向上滑动,速度可以配置
当最后一行的位置上显示出最后一个奖励条目后停止滑动
停留z秒后消失