返回

技能系统解析

摘要

技能系统需要根据当前的项目来划分,例如:ACT游戏与MOBA游戏就有一些区别。

  • ACT游戏大部分为了追求打击感使用的是角色身上碰撞盒来触发做技能,ACT游戏追求技能的衔接与多样性。
  • MOBA游戏就不一样,MOBA技能的触发是由玩家点击释放,技能流程大部分也是根据动画帧一套做到底,多技能衔接绝对没有ACT要求那么高。

我们这里将要讲的是用于MOBA/ARPG游戏的技能系统,ACT游戏可作为参考,很多地方是大同小异的。

技能系统的构成

在国内技能系统一般划分为几个模块:角色本身,技能,Buff,衍生体;

角色本身:

这个模块通俗来说就是角色在释放技能时的动画控制,位移控制,音效,特效等,与操控角色本体相关的事件表现;

技能(Skill):

这个就是技能本身,它涵盖技能释放事件(玩家通过UI点击调用事件),技能施法条件(CD与蓝量检测),技能施法控制(技能方向位置,角色播放动画),技能结束回调;

Buff:

这个是技能系统的核心,Buff用来传递施加者给被施加者发送的指令,例如角色A想给角色B造成多少伤害,那么角色A可以创造一个伤害Buff,这个Buff只用来传递伤害,在创造时告诉Buff角色A自身的攻击力是多少,要施加给谁,然后将这个带有A的攻击力的伤害Buff丢给B,这时候Buff开始运转,给B造成伤害;再举个例子,角色A技能带有击飞效果,那么就是角色A给角色B传递了击飞Buff,这个Buff在运作时操控B击飞位移;

这里需要注意,一个技能可能携带多个Buff,例如一个技能释放后,要会让角色受伤、眩晕、还要让角色在接下来数秒内被减数,这里考虑复用性可以拆分成三个Buff(伤害Buff、眩晕Buff、减速Buff),然后同时抛给被技能命中的角色。

Buff并不是技能特有的,有些Buff是被动Buff,可能角色初始化或者购买装备后就有,例如复活甲这件装备,购买后其实就是给角色增加了一个复活被动Buff,Buff一直挂在在角色身上运作,等待角色血量为零后才出发,调用后面的复活角色逻辑。甚至还有一些羁绊Buff,同属性的角色存在时增加攻击力等,这也是Buff的一种,Buff万千,总的来说逃不过几个大类,后面再具体介绍。

衍生体:

衍生体大多数人喜欢把它细分为弹道和法术场,弹道就是指带有飞行物的技能(导弹,火球等),法术场就是指一个技能会创造一块区域,对这个区域内敌人造成伤害。它们本质上都是技能衍生出来的物体,角色技能动画与衍生体是分离的,角色技能本身不造成伤害,由这个衍生物添加Buff造成伤害,例子的话:LOL阿狸的Q技能,金克斯的R都是弹道,火男的W,千珏的R都是法术场,其实还有一些东西也是衍生物,例如大头的炮台,安妮的熊,这些都是技能衍生出来的物体。

技能施法流程

技能施法流程分为以下几个过程:

技能前摇

技能耆那要分普通前摇与技能吟唱

普通前摇

举例就是最简单的近战角色平A,将角色平A视为一个技能时可以划分为三个阶段:前摇,结算,后摇;其中结算就是指平A砍刀敌人打出伤害的那一瞬间,那么前摇就是指打出伤害前的人物播放的动画(角色挥刀砍向敌人的过程)。这一阶段需要处理动画同步过程,如果前摇动画结束了,逻辑上的前摇过程还没结束,就会出现画面上的延迟问题,除此之外还需要处理读条过程是否允许被打断,允许被什么样等级的Buff打断,以及被打断后续的动画和技能CD处理。一般来说普通的伤害Buff是不会打断平A的,但是眩晕、击飞这种强制Buff会打断平A的前摇过程。

技能呤唱

技能吟唱通常与技能前摇是重复的,表现上可细分为读条与蓄力

  • 读条

举例来说就是LOL角色回城的进度条过程、者死歌放大读条过程,在这一过程我们需要处理人物动画播放时长与读条时间同步,还需要处理和普通前摇一样的Buff打断机制,例如回城过程收到普通伤害Buff就会被打断,但是死歌放大需要控制技能才会被打断

  • 蓄力

举例来说就是维鲁斯释放Q技能玩家长按Q键蓄力过程、泽拉斯Q技能蓄力过程,这一过程需要监听玩家的长按输入过程,将输入的时间数值传输给后续的技能,改变结算时伤害或者技能长度状态等,然后就是和读条一样需要注意的动画和打断机制

技能结算

技能结算这一过程由伤害Buff来完成,计算攻击角色的各种属性和技能加成,以及被攻击角色的各种抗性属性和某些特殊的无敌、伤害减免Buff。结算完成后改变被攻击玩家的血量,如果攻击角色有吸血Buff,那么还需要将最终的伤害返还给吸血Buff进行计算。最后播放一些流血动画。

技能后摇

技能后摇在前面技能前摇中有讲到,本质上就是人物的后摇动画(打出伤害后,角色收回刀回到默认动画状态过程),这一过程是否需要被打断需要根据项目需求来,例如LOL中后摇就可以被取消,无需等待后摇结束就可以直接释放下个技能,瑞文的光速QA就是利用了这一原理。

再谈Buff

根据上文一些对Buff的描述也能感觉到Buff是个很抽象的概念,它在技能系统中无处不在,buff的设计是技能系统的核心,需要高扩展性。在此举例一些常见类型的Buff

  • 伤害Buff

    用于计算攻击方与受击方的角色属性与技能加成,这一过程分为四部:1.先计算受击方的被动Buff层和状态层,例如无敌Buff,伤害减免Buff;2.计算完Buff后才能进入角色的血量状态改变;3.触发攻击方的一些回血Buff,或叠加Buff,4.播放受击特效

  • 被动Buff

    这些Buff常常附带特效,例如复活甲,日炎,红蓝霸符,他们的机制也不一样,有些是改变角色的属性(加移速),有些是攻击时代入伤害(耀辉),有些是等待触发(复活甲),有些是衍生Buff(红Buff)。他们都有一个共同点,需要监听角色的各种属性或技能各个流程属性。

  • 控制Buff

    这一部分Buff有击飞、击退、眩晕等,它们是一种持续性Buff,在buff触发期间能够锁定角色一些属性(移动、攻击等),同时还能改变角色的一些属性(位置)

  • 一些特殊Buff

    净化buff,它可以查找角色中的所有控制Buff,将其清除。无敌Buff,实现方式可以是锁血,也可以是给角色添加无敌标志。

Buff携带属性也是很多的,举例来说有,buff优先等级,buff打断等级,buff类型等等,根据项目需要增加

技能系统编辑器的实现

常见的编辑器有蓝图和Unity编辑器、配表,这些各有各的优点,总的来说还是要根据项目需求和策划熟悉度来做(虽然大部分策划都会选择配表)。

需要注意的是无论哪种编辑器,最终都要满足批量修改和Json导出这两个需求,一个是满足策划维护,一个是满足服务端使用。

技能配备相关参考

Licensed under CC BY-NC-SA 4.0
0