CG游麟网官方站
查看: 8671|回复: 36

[原画教程] 价值5毛钱的战斗系统设计流程(上)(二)

[复制链接]

2

主题

2

帖子

46

积分

初入江湖

Rank: 1

麒麟币
44
任务币
0
威望
0
贡献
0
主题
2
在线时间
2 小时
发表于 2018-8-27 19:44:44 | 显示全部楼层 |阅读模式
本帖最后由 StickGame 于 2018-8-28 19:33 编辑

因论坛字数限制,此贴为价值5毛钱的战斗系统设计流程(上)的另外一部分。
3.动画控制的结构
      我们将静态对象也当成是只有一帧的动画对象,那么游戏中任何图形化的对象都可以当作动画对象来理解。
      动画的控制基本由以下几部分组成:
      1:命令,如go、stop、replay、remove、load;
      2:指令,如单击、双击、复合指令;
      3:条件,如判断是否落地,判断是否面对敌人,判断敌人是否在攻击状态;
      4:碰撞,碰撞本身属于条件的一种,但因为比较特殊,所以单独拎出来;
      (指令本身也是条件的一种,也因为比较特殊,所以独立化)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)


我们来看看具体的使用方法:
1:命令
      go是一个最常规的方法(不同语言写法不同,因为常用所以我把方法简化了)

      go(”move”)指的就是播放move动画,循环动画其实就是在动画的最后一帧加上go(self_name),比如move动画的最后一帧插入go(”move”),那么就是基本的循环动画的用法。
2:指令
      通过输入按键,来控制动画的播放,这个在下文会有更详细的说明。
3:条件
      条件的运用在战斗系统中较为常见,根据各种条件判断来实现各种功能需求:

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

4:碰撞
      运用最频繁的就是攻击框和受击框的碰撞检测,同时场景中的障碍物也属于碰撞的一种,碰撞检测的本质依然是条件判断:

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)


4. 属性控制的结构

      如果说动画对象是“可视化”的数据,而属性就是“不可视”的数据,因此,属性的控制方式和动画的控制方式没有太大的区别,主要是概念上有所不同。
      属性控制主要由以下几部分组成:
      1:赋值,通过命令改变参数的值,如:vx=20,role._y=Ground()
      2:指令,通过输入指令改变参数的值,比如陈国汉抡铁球时,依然可以用方向键控制移动;
      3:条件,通过条件判断来修改参数的值,比如上面的falldowm;
      4:碰撞,通过碰撞检测来改变对象的值
比如这样的推挤效果:

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

*在这里我们会发现,虽然我们将动画控制和属性控制分开,但在实际使用过程中,它们往往是相互结合在一起的。但我们需要有意识的把它们区别对待,这样会对战斗系统的理解更有帮助。
注意,属性控制中有一个较大的“块”,在实际使用中占有较大比重,那就是“位移控制”

5.位移控制
      位移在游戏中会有各种丰富的表现,除了人物的位移,还包括抛出物(飞行道具)的位移,而其中往往是抛出物的位移会更为复杂和多样,如果你熟悉lol,就能发现它里面就有着各种各样的抛出物类型,然后不同类型的位移方式也会有所不同:

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

(请注意下文的推导过程!)
如果把lol的抛出物整理成文档,我相信又是长长的一个列表,想想都觉得可怕。我就先简单的列举一些吧:

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

      通常情况下,我们会单独去处理抛出物,根据不同类型来分类制作,这时候我们往往把抛出物当成一个独立对象,但如果我们换个角度思考,或许会更简单一些:
      抛出物既是对象,那么就可以和角色共用同样的位移控制动画控制,按这样的思路设计的话,人物也可以很简单的实现追踪导弹的位移方式,就像盲审的二段Q一样,你跑到哪,我追到哪。

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

代码中,我们可以使用相同的位移类来管理对象的位移,比如:
      *位移类中包含一套赋值函数,和一套控制位移的函数
      Fx_a(10,1):表示水平匀加速运动,初速度=10,加速度=1,X的位移类型=a;
      Fy_a(30,2):表示垂直匀加速运动,初速度=30,重力=2,Y的位移类型=b;
      Fv_a(10,0,25):表示追踪型加速运动,初速度=10,加速度=0,最大旋转角度=25,速度会根据角度拆成对应的是vx、vy;

      可以有各种赋值方法,来表示不同类型的位移方式。
      而角色和抛出物都可以共用这套方案:
      ·角色跳跃动画的赋值就是:
                   Fx_a(5,0)
                   Fy_a(25,1)
      ·弓箭射出的赋值就是:
                   Fx_a(20,2)
                   Fy_a(5,0.5)
根据这种方式你可以很轻易的创建各种位移类型,并且角色和抛出物都是共用的,甚至场景中的动态对象也可以用这种方式。
*位移采用此种方式,同样的,动画控制也可以是一套共用的动画类,比如虚空的W技能,其核心就是xx条件下执行yy事件:

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

·球落地后爆炸,调用的也是falldown的方法,落地后播放boom,而人物落地播放的是falldowm;

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

·炸弹飞出去,击中敌人播放爆炸动画,跟陈国汉大招击中敌人播放后续连击动画的效果是一样,这里我们称为hitGo(击中后播放播放xx动画)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

总结:
      我们在制作之初将动画控制和属性控制区分开,是为了更方便的去理解战斗系统,然而实际制作过程中,我们又需要把它们结合在一起,并且要有一个“一致性”的概念,这个概念的表现大概是:游戏中角色有着各种丰富的动作,但它们的本质是一样的,都是动画和属性的组合,它们有着一致的数据结构,只是表达方式不同而已。举个例子:
      ·使用左右键可以控制角色的移动,移动中带有攻击,那么这个动作是移动还是攻击?
      ·在上图中,金克斯的R技能发射了导弹,如果拳头愿意,当蔚在金克斯身边时,金克斯可以将蔚发射出去,那么此时的蔚是角色还是抛出物?
      因此,什么时候区分对待,什么时候视为一体,关键就在于“理解”,不要被表像所迷惑,当你掌握这个技巧的时候,很多事情就会变得更简单。

6.指令

      在上述内容中,我们会发现指令是战斗系统的一个入口,它本身是一种特殊的条件,通过操作指令设备传递给逻辑代码, 因此,指令的解读方式就变得尤为重要了。
      多数人对指令的认知大概是按下、放开、双击、搓招这些基本的概念,但同样的,这些说的出来、看的到的,也依然是“表面”,既然有“表”的存在,也就有“里”的存在。
      接下来,我们尝试将简单指令和复杂指令罗列出来,从中寻找“共性”
      最全面的指令输入方式,莫过于格斗游戏了,我们依然以《拳皇》为例:

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

      也许还有什么遗漏的,但大概就是这么一些操作方式,通常情况下,我们会根据上面的列表逐一实现各种操作,其实这里面有许多的重复,我来举个例子:
      移动是一个最基本的操作,但大多数人不会将移动蓄力理解为相同的东西,然而,它们的本质其实是一模一样的:
      ·在站立状态下,按住前移动,放开前回到站立状态

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

      ·在站立状态下,按住A蓄力,在不同阶段放开A,会播放不同的动作

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

      那么最终这2个操作,唯一的区别就是togo的值,move动画中的togo仅=”stand”,因此它在任何时候放开,都是播放stand。
*假如move动画是一个由走逐渐变成奔跑的动画:1-60帧是走的动画,61-80奔跑的动画,且动画最终会在61-80循环,那么这就是一个典型的蓄力动作了:
      ——在1-60帧放开按键,就会播放moveToStand的过渡动画;
      ——在61-80帧放开按键,就会播放rushToStand的过渡动画;

同样的道理,双击、搓招、狂按,在本质上也是相同的。
      ·双击可以理解为快速输入2个指令
      ·搓招可以理解为快速输入不同的指令
      ·狂按可以理解为快速输入相同指令
结果它们的本质都是快速输入多个指令

      当你理解了上面2个例子,我们就可以来重新认识下“指令”了:
*我们拟定按键同时输入的时间间隔是0-30ms(因为很难在一个相同时间点输入2个指令,因此我们会规定一个容错间隔),而连续输入的时间间隔是30-200ms,最终你可以修改这些值,以调整到最优手感;
      ·我们用一个字母来表示按键,比如A,就是键盘的A键;
      ·用A1表示按下A键,A0表示放开A键;
      ·用A1_500表示按下A持续500毫秒,不填则默认是a1_0
      ·用“,”隔开多个指令,并将指令组成数值,以表示复合指令,如:
            [A1,D1,J1]=下·前·A
      ·在“[ ]”中使用“[ ]”将多个指令包在一起,表示同时按下
            [S1,D1,[ J1,K1]]=下·前· AB
      最终打包成一个方法,而这个方法可以实现上述所有操作:
            Action([keys],act,[beings])
            · keys-数组:表示指令集合,可以是单个,也可以是多个
            · act-字符串:表示要播放的动画
            · beings-数组:表示动作的前置条件,比如移动的前置条件就是“站立”
      那么移动的指令就是:

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

      技能就是:

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

      其中表示普攻A1,普攻A2,普攻A3,因为在攻击的时候也可以放技能
      金家潘的下上B技能就是:

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

      这套方案的实现较为复杂,不一定适用于所用项目,但这个思路很重要。

7. 攻击向量
      攻击是战斗系统中一个重要的行为,此时的碰撞检测倒比较简单,难的是各种丰富的击打效果。
      为了表现游戏的丰富性,我们往往会给攻击定义几种类型,并且有着对应的受招动作,而这个时候,为了更方便控制,我们引入了一个“攻击向量”的概念。

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

      攻击向量具有以下几种属性:
      ·类型:决定了攻击时产生的效果,比如击退、击飞、击倒等;
      ·方向性:决定了攻击方向,这个方向的直接表现就是对象被击中后的运动轨迹;
      ·长度:决定了攻击的力道,而这个力道的直接表现就是受击对象的移动速度,最终根据角度拆分成vx和vy;
      ·坐标:一些特殊向量会使用,比如一个引力球,向量的坐标就是引力中心;
      你可以在后期很轻易的添加各种攻击向量,而且它在使用起来会非常方便,具体我会在【下】期的视频中实际演示。

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)


8.打击感
      动作游戏离不开打击感一词,网上也有不少文章关于打击感的文章,我自己也写过一点点,但后来我发现,打击感不是玄学,不需要用太多的文字去描绘它,今天我将用“数学”的方式,来教你怎么提高游戏的打击感!

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

      打击感的关键是区分由“轻”到“重”的攻击表现,我们假定有N个攻击级别,如轻击、中击、重击、超重击,那么:
      1:击中停顿时间=N*x,根据你游戏的帧率,以及你划分的等级,你可以调整x来实现较好的停顿效果(也可以是fpsDown);
      2:镜头震动级别=N,然后你可以简单的制作几个不同程度的镜头震动来匹配对应的攻击级别;
      3:击打特效=N,特效是一个很重要的表现,根据不同级别配上不同表现的特效;
      4:配合相应的受击动作,一般会定义:击退、击飞、击倒、强击飞等,然后结合攻击向量去使用它们;
      当你尝试过后,你就会发现打击感其实就是这么一回事。
      其实…

      倒也不是,这只是一个快速入门的方法,想要表现出更好的效果还需要各种经验积累,而且,打击感其实不单纯只是“击打”的问题,一般我们所说的打击感其实还包含着另一层意思,就是——操作感!
      操作感是完全不一样的领域,它的关键字是节奏,想做好一个动作游戏,对节奏的把控是非常关键的。不过这东西就不是简单的写点东西就能教的会的,如果你有兴趣,可以试着去研究下不同ACT的“节奏感”,我相信一番研究过后也会有一些收获的。(在下一期的视频中,我也稍微说一下)

9. 完成一套战斗系统的流程
      上面的内容都是战斗系统的一些关键要点,初步看下来会比较混乱,每个章节相对独立,至于怎么系统的将这些东西结合在一起,这就需要从实践中慢慢探索了,根据你自身的经验,文中所阐述的东西可能需要不等的时间去消化,现在我们来理顺一下,战斗系统的基本制作流程:
      1:先确定战斗系统的基本规则,所包含的基本动作,比如你大概是要做超级玛丽,还是三国志,还是鬼泣,大概就是游戏类型了;
      2:确定指令的输入方式,是按键还是点击,或者都有;
      3:加上动作切换的限制条件,包括是否有台阶、墙壁这些需要互动的东西;
      4:设计好位移类,到了这一步,角色的操作基本完成了,只是还不能攻击而已;
      5:加上各种碰撞检测,确定攻击类型和对应的受招动作,以及其它需要碰撞检测的对象;
      6:加上一些音效、特效等视听相关的东西;
      到了这一步,你的战斗系统雏形基本出来了,按上面的方式来设计,你将会为战斗系统打下一个不错的基础,这时候即便策划想把动作游戏改成射击游戏….
      你还是把策划抓起来打一顿吧…. 这项目不靠谱…
      

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

      下一期,我会录制一个视频,主要是演示下《火柴人联盟2》flash版本的动作编辑器(本身也是战斗系统主体),以及一些设计、制作上的技巧,理论在于文字,实践在于操作,我相信通过两者的结合,你对战斗系统将会有全新的认识。
      最后,如果你觉得这文章还不错,可以分享下,有不同观点,也可以留言~
      顺便关注下我的小号,偶尔会有些不错的东西~
     

价值5毛钱的战斗系统设计流程(上)(二)

价值5毛钱的战斗系统设计流程(上)(二)

谢谢观看!另外,我们新项目正在招聘【动作】、【特效】,有兴趣的可以点击:http://www.cgylw.com/plugin.php?id=mini_job:index&mod=view&sid=765
或官网:www.sticksgame.com



楼主热帖
回复

使用道具 举报

47

主题

5561

帖子

7356

积分

四方传颂

Rank: 9Rank: 9Rank: 9

麒麟币
1725
任务币
0
威望
0
贡献
0
主题
47
在线时间
7 小时
发表于 2018-8-27 20:12:40 | 显示全部楼层
不错,支持下楼主
回复 支持 反对

使用道具 举报

0

主题

5508

帖子

5720

积分

誉满一方

Rank: 8Rank: 8

麒麟币
83
任务币
0
威望
0
贡献
0
主题
0
在线时间
0 小时

最佳新人

发表于 2018-8-27 20:22:42 | 显示全部楼层
CG游麟网真的很棒,我喜欢。
回复 支持 反对

使用道具 举报

0

主题

5561

帖子

6717

积分

四方传颂

Rank: 9Rank: 9Rank: 9

麒麟币
1033
任务币
0
威望
0
贡献
0
主题
0
在线时间
0 小时
发表于 2018-8-27 20:32:43 | 显示全部楼层
学习了,不错,讲的太有道理了
回复 支持 反对

使用道具 举报

7

主题

1万

帖子

2万

积分

苍生崇拜

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

麒麟币
10276
任务币
370
威望
0
贡献
0
主题
7
在线时间
576 小时

最佳新人忠实会员

发表于 2018-8-28 07:48:50 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

5584

帖子

6079

积分

四方传颂

Rank: 9Rank: 9Rank: 9

麒麟币
366
任务币
0
威望
0
贡献
0
主题
0
在线时间
0 小时

最佳新人

发表于 2018-8-28 08:30:17 | 显示全部楼层
不错,支持下楼主
回复 支持 反对

使用道具 举报

3

主题

1168

帖子

1394

积分

名动江湖

Rank: 6Rank: 6

麒麟币
226
任务币
150
威望
0
贡献
0
主题
3
在线时间
723 小时

最佳新人忠实会员

发表于 2018-8-28 11:00:13 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

47

主题

5561

帖子

7356

积分

四方传颂

Rank: 9Rank: 9Rank: 9

麒麟币
1725
任务币
0
威望
0
贡献
0
主题
47
在线时间
7 小时
发表于 2018-8-28 11:25:18 | 显示全部楼层
真是 收益 匪浅
回复 支持 反对

使用道具 举报

0

主题

244

帖子

719

积分

声名鹊起

Rank: 4

麒麟币
475
任务币
15
威望
0
贡献
0
主题
0
在线时间
30 小时
发表于 2018-8-28 12:19:19 | 显示全部楼层
原素那么大,我想来看看
回复 支持 反对

使用道具 举报

1

主题

976

帖子

1707

积分

名动江湖

Rank: 6Rank: 6

麒麟币
676
任务币
85
威望
0
贡献
0
主题
1
在线时间
247 小时
发表于 2018-8-28 12:26:05 | 显示全部楼层
谢谢楼主分享~~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
客服QQ:
47413829
新QQ群:
418757022
在线时间:周一至周五
9:00-22:00 Email:
47413829@qq.com
举报:网盘资源失效
在线客服
快速回复 返回顶部 返回列表