技能系统中的循环控制
动作循环控制
- 动作类技能, 普攻等依赖战斗单位身体动作的技能, 其受影响的身体部位不能同时做出两个动作
- 根据技能的价值级别以及特色设计, 在可能导致冲突的两个动作之间需要明确打断关系
设计策略
无论是时间线的设计还是多段设计亦或是朴素的单段多子技能设计, 我们需要标记出每段动作的影响部位, 其意义是在于我们对所有技能通过打标记的形式来获得’技能与技能之间是否存在动作冲突’的信息.
其次, 我们需要对冲突的技能之间的 重叠释放问题, 这里本质上是一个压制规则问题.
- 冲突的动作类技能一旦释放成功, 一定打断掉所有相关旧的技能
- 如果不做上下半身分离, 普通移动视为动作, 否则为下半身动作
- 不希望被某些类型打断的时候 要禁止这些类型的技能释放 即压制类标签
举例来说
跳击技能:
- 技能类型: 上半身动作, 下半身动作
- 前摇时间压制: 禁止普通移动 禁止下半身动作 禁止上半身动作
出拳技能
- 技能类型: 上半身动作
- 前摇时间压制: 禁止上半身动作
闪避技能
- 技能类型: 上半身动作 下半身动作
- 前摇时间压制: 禁止普通移动 禁止上半身移动 禁止下半身移动
注意: 有些闪避是特色玩法 则需要额外的标签和流程来完成
闪避技能进行条件判定时先使用脚本进行预判, 如果当前存在会因动作压制闪避的技能 则先进行打断, 防止被压制
所有动作类技能额外添加是否可被闪避技能打断的标签, 单独完成闪避相关的压制处理.
设计小结: 本质上动作类循环的控制, 在流程上首先是模拟动作状态机, 其次通过压制策略对状态机的切换策略进行控制
CD循环控制
对于常见的技能来说, 技能的存在时长和该技能可再次释放的时长往往是不一样的 例如说:
- 高价值的爆发类技能, 如果动作结束就可以再次释放, 那么在一场战斗中就很难设计出来可以抗衡的多样性的其他技能 通常而言, 价值越高, 我们希望他们的节奏越长, 他们需要等待合适的时机来释放珍贵的一击 .
- 这是引入CD的机制的最本质的原因.
CD和动作循环控制完全不冲突, 各自流程独立.
公共CD组循环控制
公共CD组的作用主要是进行跨技能级别的循环控制和压制管理, 和CD一样是和动作无关系的纯逻辑配置
公共CD组的核心配置为触发和响应两组
- 该技能释放时是否响应(检测)(被压制)某GCD , 如果存在该GCD则释放失败
- 该技能释放后触发某GCD一定时间, 如果已有则按照最长原则刷新
举例来说:
我们规定A技能释放完的10秒内, A和与A相关的B,C,D等技能均不能释放, 那么我们配置A触发一个GCD, A,B,C,D均响应即可.
更高阶的配置方法举例:
我们有一个BOSS, 有 A, B, C, D 4个技能, 价值根据顺序递减, 并且隶属于同一个冷却组 即一旦任意一个技能释放完毕后, 其他技能在CD结束前均不能释放, 并且GCD一旦结束, 如果ABCD均能释放 则应该按照价值高低进行释放, 但是其中A,B不能连续释放.
- 首先 A B C D一定存在一个GCD来控制
- 优先级问题可以用行为树来进行检测判定 来实现优先级释放 但是不能解决A,B连续释放问题
- GCD完整做法:
- ABCD触发和响应同一个GCD大组来完成基础循环控制和优先级循环控制
- gcd 1 ABCD均响应
- gcd 2 A响应
- gcd 3 B响应
- gcd 4 C响应
- gcd 5 D响应
- 通过调整2,3,4,5的时长, 可以做到逐时长解放ABCD4个技能的释放条件
- 处于配置清晰目的考虑AB单独触发和响应一个GCD(AB为小组), 而不是调整AB技能中2,3的触发时长
- gcd 10 AB触发和响应 其时间超过大组内GCD的最长时长
- 从表现结果上来描述:
- BOSS一旦释放A或者B 那么B或者A则会长时间被禁止
- BOSS一旦释放ABCD, 那么一定时间内ABCD均不能再次释放, 并且到期后逐个解开
- ABCD触发和响应同一个GCD大组来完成基础循环控制和优先级循环控制
职业内循环
这里属于职业内多个技能的配合设计
例如射手A中 Q重伤用来增加输出, W位移用来追人或者逃跑, R用来打出一个大型AOE进行团战输出
那么射手A的职业内循环顺风WQR追人输出 逆风QRW逃跑
射手B可能是Q留人W推人R输出 被近战贴脸可以W推人Q风筝R输出
职业外循环
这个属于职业搭配设计
例如坦克奶妈射手
坦克开团抗伤害 奶妈补血救射手 射手躲坦克后面暴力输出
连招
和CD类的循环控制不同:
- GCD CD是以压制的形式进行循环控制 战斗单位在正常情况下可以放某技能但被压制而不能释放, 而连招则是战斗单位不能放某技能因为条件得到满足而可以释放.
- CD和GCD一般是扁平独立关系, 而连招则是树形关系甚至是链表关系.
- 一般CD和GCD都是以技能释放成功即触发 而连招则可能是因为’命中>=3个目标’等特殊条件后才会触发的一段窗口时间
- CD和GCD一旦触发不会清除, 除非特殊指定流程, 连招窗口时间内如果触发了后续连招技能, 则会清除该连招窗口.