人气 305

[图文教程] AI、声效、震动:聊聊动作游戏的其他设计 [复制链接]

九艺网 2020-8-7 21:19:29

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
对于渴望了解动作游戏的一些细节的朋友说一声抱歉,又是好几个月不见,那么我们开始。

我们直接进入正题吧,怪物AI(仅包括多层逻辑不包括AI学习),声效,UI动效,震动(不包括算法),顿帧,表演,摄影机(暂不聊)。在进入讲解前说明一下,为什么我们要把这些单独领出来讲,有两点考虑:

1.        这里的要讲的每个点,都不用像之前一样单独拉巨大的篇幅,虽然有一些依旧挺大;

2.        之前的两个点是核心操作体验,这里要讲的是对手和效果的设计体验。

怪物AI

首先要搞清楚,为什么我们要说怪物AI,即使是手机动作游戏,怪物的AI也不能随意设计,导致远程和进程没区别,强怪和弱怪没区别。

对于动作游戏来说,一个好的对手,是提升手感和满足感的重要途径!绝大部分的时候你都在和你的对手也就是电脑作斗争,所以,你需要让玩家体验不同的敌人,不同的战斗模式。技能的设计只是一个方面,而如果,没有行为的区别,依旧容易感到无趣。

AI就是设计怪物的行为逻辑,不管你用什么引擎或者是开发方式,但关于怪物的行为总会有几个共同的点,碰到特别需要讲解的地方我最熟悉的2D动作游戏为核心来阐述这些点。

索敌逻辑

首先怪物出生之后,经过反应时间,第一件事是索敌,即搜索自己范围内的敌对单位,如果没有敌人就会进入巡逻状态。

当怪物没有发现敌人的时候第一条件就是巡逻,是否站着不动,或者休息多久,有几层索敌状态,这些参数都是根据项目的需要而定的。

通常多层索敌状态是一些恐怖游戏常用的标配,怪物听见你,开始进入第一层索敌(四处找,甚至翻柜子),怪物看见你是第二层(开始追捕),逃脱后是第三层(原地转圈或者回到起点),不同的索敌状态会给玩家造成很大压力,动作游戏上并不常见。

也有完全不理会敌方的怪物类型,也就是不索敌,只根据既定路线来回移动。
102952hmbc0poc20m1o1lh.gif
被警戒-躲藏-巡逻-发现-追杀-逃脱范围-躲藏

索敌范围:

字面意思理解,即是怪物当敌人进入自己的警戒范围的时候,怪物会做出相应的行为,该警戒范围可以有多个层次,对应听觉,或者视觉,以及丢失目标的范围。

比如触发了听觉警戒的时候,怪物会追踪源头;又比如触发了视觉警戒的时候,怪物会追杀你;这些分层次索敌,常用于各种动作潜行和恐怖游戏。

巡逻逻辑:

怪物的巡逻方式,包括了各种行为参数,移动方式,停滞时间,反应时间,动作行为等。然而通常意义上的动作游戏并不需要太过考虑这些,个别神作除外,你们懂的。

另外,怪物的巡逻范围也包括在这里面,虽然不是同一个系统,但放在这里讲更容易理解,比如2D游戏中,怪物A的巡逻范围只有一个平台,你进入了怪物A的索敌范围,他将攻击你,但当你离开那个平台之后,他将不会追踪你;怪物B的巡逻范围是一整张地图,你进入了怪物B的索敌范围,他将攻击你,即使你离开它所在的平台他也将追踪你,除非他丢失了目标;怪物C的巡逻范围是一整张地图,你进入了怪物C的索敌范围,他将攻击你,即使你离开它所在的平台他也将追踪你,更可怕的是,他不会丢失目标,那么它将追你到死,除非杀死他或者到另一张图。

102952v08e10v00fjjf08k.png
追踪-全地图跟随(正常场景他也会追你过图)

最近距离:

即一些怪物的规避机制,他会逃离玩家,当他索敌成功之后,他将会首先判断对方是否在自己的最近距离之内,如果在他会逃离;如果不在他可能会进行攻击或者嘲讽等行为,这些参数全部由设计者自己控制。

者种设计可以制作出很多有意思的怪物模板,比如会乱跑乱跳的火怪,老是远处恶心你,却不容易击杀。

攻击距离:

即对方进入到怪物的攻击距离之内就开始攻击。

攻击距离和最近距离之间有着奇妙的关系,尤其制作远程怪物的时候。假设角色进入了攻击距离的同时达到了最近距离,这个时候,怪物应该根据当前位置优先逃离出最近距离,攻击,然后再判断距离,距离不够再重复这个过程。

102957h6agnay2uggxjffa.gif
如果没记错,这位怪物当你靠近它后他会使用击退(或自己退)

寻路逻辑:

这个不是巡逻逻辑,这个逻辑是怪物对障碍和地形的处理方式。以为常年做2D游戏所以这方面并没有太多积累,2D游戏跨越地形的怪物一般可以做巨大,或者飞天遁地穿越地形,解决地形的问题。(同上图的《空洞骑士》)

3D的可以说一两嘴,但可能并不准确,因此我还是保留意见。

技能序列:

这个是动作游戏要下功夫去设计的对于怪物表现最重要的系统之一,硬直和连招系统之后这个又是另一个重点。

上面的系统固然也是将游戏做好的重点,但是作为动作游戏,最核心的自然是怪物和玩家的交战表现,所以做复杂不为过。

需要说明一点,我个人喜欢尽量将所有的怪物的行为用一套完整的行为模式框起来。这样方便我们后续开发的时候,想要新增什么怪物都不用去劳烦程序来来回回的加,导致一个个怪物都是特写的怪物,工作量巨大,出问题还不好改,小团队就是需要一个相对完美的框架来护航。

首先是技能衔接的问题,这个技能衔接说的是读取序列的时候是否衔接,以及被打断之后是否继续下一个序列。是否衔接是后面我会提到的AI等级,这个AI等级来确认该怪物是否有连续衔接的能力,被打断之后是否继续读取下一个序列动作,这个我建议继续下一个序列的动作,被打断之后最好不要从头开始播放序列。

其次说到技能序列的层级关系,技能序列同样分层级,比如:A套攻击序列(模板)在B套攻击序列(模板)之下,B套在C套序列(模板)之下;也就是说当触发了C模板的时候,A和B模板的技能序列将会被跳过,直接去读取C模板的攻击序列。

最后说道技能序列的具体执行方式:

假设我们首先给予动作效果一个数字序号:atk1-atk5=01-05;skillA1-skillA3=11-13;skillB1-skillB3=21-23;skillC1-skillC3=31-33;skillD1-skillD3=41-43;以此类推。

先解释一下序号的使用方式,010203111213这一组数列的意思就是怪物将会连续释放atk1、atk2、atk3、skillA1、skillA2、skillA3;连续完之后loop,直到有新的序列打断该loop。

下面我们讲排序方式:

A普通序列:01020304051112010203043233

B状态序列:111213212223313233

C状态序列:212223313233

D状态序列:313233

E状态序列:414243

F状态序列:515253

A2第二状态普通序列:···

B2第二状态状态序列:·······

甚至可能会有第三状态以及更多层级的序列,如果嫌麻烦可以直接变身(换一个怪物模型和配置)。

这里假设状态的触发时机,我们假设A状态是最底层的技能序列,普通状态下就是这一套连招释放;B状态是“玩家被击飞的时候释放的技能”;假设C状态是“玩家被击倒之后释放的技能”;假设D状态是“玩家远离自身攻击范围释放”;假设E状态是“每经过30S释放一次该序列”;假设F状态是“当玩家发起任何攻击可以伤害自己”;这个状态是可以扩展的,你需要的时候就在这里扩展,统一在一个表格中,所有怪物可以通用,方便管理(低级怪物如果没有必要就不要填其他状态,和程序沟通)。

这里来介绍这个状态序列触发规则,字母序号越高的层级越高,当同时出现几种判断的时候,选择最高的序列触发,并且要将该序列里面的动作释放完毕才会触发其他的状态序列,不叠加也不替换。

如果有第二状态且不更换模型的话,你可以做一套完全不一样的技能序列。

你可以模拟一下你的战斗效果,当你和怪物对战的时候,是否能出现更多的模式。

AI等级

这个等级是专门用于控制怪物的反应的一个系统,将会包括:入场反应时间、间隔时间、反应时间、连招概率。

1.        入场反应时间:即入场后怪物会多久后开始索敌;

2.        间隔时间:即一个技能动作到下一个技能动作之间的时间间隔;

3.        反应时间:状态序列之间的切换时间;

4.        连招概率:即一个技能动作到下一个技能动作之间的衔接概率(百分比);

也许有人会问有一些boss会围绕着玩家,闲庭信步,这个怎么弄得?这和AI以及序列无关,第一有可能就是写死的,第二这是一个技能动作,直接被放在了技能序列里面。

怪物类型(AI类型)

这里需要特殊讲一下类型的模式种类,按道理来讲他应该是最高层级的行为,是总的行为模式,应该最先讲,但是动作游戏里面敌人最主要的还是对和玩家在战斗的判断和及时反馈,我认为仅在动作游戏上,类型的模式可以不像其他游戏那么重要。

不过,这里我仍然需要讲明,类型模式也仍然是重要的设计环节。

比如石像鬼类型:玩家进入索敌范围之后,石像鬼不会攻击玩家,玩家攻击石像鬼,石像鬼就会攻击玩家。

比如绕后鬼类型:玩家进入索敌范围之后,它永远都想要跑到玩家后面去,只有在背后他才会攻击玩家。

比如逃跑鬼类型:玩家进入索敌范围之后,进入他的最近距离,他便开始逃跑,多少秒之后会消失,击杀会有奖励。

比如不死怪类型:怪物濒死时,多少秒内必须造成多少输出杀死,让不然会满血复活。

比如普通类型:玩家进入索敌范围后,攻击玩家,玩家离开巡逻范围后,进入正常巡逻。

等等等等。

需要单独提一下,不同类型的怪物会根据诉求制作不一样的动作,如果你们团队没有考虑好要如此增加工作量,其实可以统一使用一种类型,将类型这个口子留下来,以后要扩展怪物模式可以考虑再回来启用。

声效

为什么声效重要?视听艺术,都说了是视听艺术,还有人会问为什么重要。况且在关键的效果点,好的音效是在表面上提高打击效果的方式。而且音效一般会占用大量资源,越细致越难管理,建议中期的时候就开始关注这个内容。

声效的接口在什么地方比较好?其实,放在子弹(特效播放)的物体上最好。和伤害帧一起播放音效即可,讲道理这个应该没什么说的。

音效需要注意哪些点?同一个音效的触发次数必须有一个上限,不然多段伤害加上群怪,很容易爆音或者卡死,受击特效,重复多次播放的也是同理。

有哪几种类型的声效?行动声,击中声,物体互动声,场景声。

其中:

  • 行动声包括了人声,空挥武器声,脚步声,衣物声,击倒声;全部可以绑在人身上的音效,怪物同理。
  • 击中声包括了不同武器击中不同怪物,或者击中不同场景;在场景和怪物的受击部位上。
  • 物体互动声因为玩家的操作行为,物体本身发出的声音;场景互动机关产生的声音效果。
  • 场景声音自带的场景音域,无需任何行动和触发;山洞里的微风、落石、流水都是大范围的音域。


震动

终于讲到了大伙喜闻乐见的画面震动(震屏)以及后面的顿帧,估计有好多好多好多好多好多的人(门外汉),都把震屏顿帧变现好不好当作评价一个动作游戏做的好不好的关键点,我只想说我可......请脑补一下我的愤怒。

震屏,尤其是2D动作游戏是很常见的视觉刺激效果,通常用于暴击,一次性受到大量伤害,特殊技能在关键的效果震屏即可。

切记滥用震屏,到时候你会看见你的屏幕一直疯狂震动,眼睛会非常吃力。

102959mrctflxl0dldfwht.gif
震动

震屏分级:

震屏最好分几个等级,等级越高震动效果越大,同时或过程中保持不替换也不叠加。根据自己项目需要确认好震屏等级。

或者做一个动态的震屏,根据伤害和力量方向自己判断,但我不建议做,最好效果是可控的。

震屏判断:

是否击中震屏;

根据什么样得判断震屏,比如暴击、一次性收到大量伤害、砸地、或者无需判断等等;

是否叠加效果?否

是否替换效果?是

震屏模式:

在震屏条件满足之后,使用什么方式震屏,目前有以下几种方式:

上下、左右、缩放、圆内随机取点。

比较通用的是圆内随机取点,也就是说在一个半径范围内,镜头会随机选择点位移,造成屏幕晃动。通常2D不想花精力做震动表现的话,都用这个。

参数有:晃动次数,幅度大小,整体时间;

至于更具体的怎么取值,麻烦和程序以及数学好的人沟通,谢谢。

同时也可以由美术自己调,具体项目具体分析。

顿帧

是指角色在攻击击中目标的同时,“游戏画面陷入静止”或者“N倍率的放慢”,极短时间之后回复游戏正常的速度,用于表现入肉的攻击,有一种顿刀的表现。

顿帧是特殊的游戏机制,因为如果使用的是“N倍率的放慢”,会涉及到游戏整体播放的速率,会影响到BUFF时间,游戏副本时间等等问题,所以在制作顿帧的时候需要考虑全面。

103001lm7itjvkk7tgpvvy.gif
顿帧和震动(不用过度表演)

出现方式:

必须击中目标才会顿帧触发;

必须击造成伤害才会顿帧触发;

根据关键帧的配置触发顿帧,不是每一击满足了上面两个条件都要触发顿帧;

配置方式:

关键帧制;根据不同项目做不同的关键帧配置;

如果使用放慢的做法:顿帧的维持时间、放慢的倍数以及顿帧间隔这个参数应该是公共参数,方便随时调整;

如果使用停顿的做法:那么维持时间以及顿帧间隔就应该作为公共参数;

同时记住,该效果(顿帧)不能叠加不能替换;

注意几点:

顿帧是必须一个很高的层级,因为影响到了游戏的时间计算,尤其是buff的持续等等;

另外,如果震屏和顿帧什么的一同出现,那么,请让他们一同表现;

注意,与音效什么的没有关。

注意,不要设置大量的顿帧动作,并且最好顿帧的触发上限,假设一个刀光过去10个敌人触发好几次,玩家会认为卡了。

结束

目前就这么多了,后面我想自己花点精力把所以讲过的东西做一个能够动起来的东西,有可能是视频有可能是一个游戏演示,全看自己的懒癌有没有发作,以及有没有制作一个游戏演示的动力。

可以预期的是,又是一个十年工程,希望大家可以一同进步做自己心目中的动作游戏。

在这里提一嘴,格斗游戏这玩意和动作游戏不能同日而语,不要随便的讲上面的点带入到格斗游戏里面去,格斗游戏某种程度上比动作游戏更加复杂。


作者:无良印品
来源:机核
原地址:https://www.gcores.com/articles/126493
回复

使用道具 举报

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

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-3-29 22:08 , Processed in 0.123606 second(s), 28 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.