游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2850|回复: 0

论如何做好动作游戏的基础操作手感(上)

[复制链接]

4万

主题

4万

帖子

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
83018
发表于 2022-11-14 10:17:28 | 显示全部楼层 |阅读模式
基础移动篇

本文的重点针对3D第三人称视角下的游戏,讨论的内容主要为操纵角色进行移动和战斗中释放技能时的操作手感。同时也会包括一些策划工作上的经验技巧分享,并结合理论简单介绍一些UE引擎中的理念和功能。

本文分上下两篇,上篇主要是角色的基础移动部分,下篇主要则是与战斗相关的部分。

一、综述

游戏手感是一个比较抽象的概念,但却是评价游戏最常见的一个指标,且不同的玩家对此的体会并不相同,所谓玩家评价中的操作手感:或流畅或生硬或飘或重,都多少带有不同程度的主观色彩,很难量化评定。

首先我们先尝试分析一下抽象的操作手感,玩家与游戏之间的信息传达链路是这样的:

微信图片_20221114094803.png

玩家会根据预期中希望让角色做什么进行操作输入,而后由实际产生的实际角色行为的画面反馈给玩家,如果符合玩家的预期那么就更容易被玩家接受。但之前也提到了,不同玩家的评判标准是不同的,实际上一款好的游戏它的操作手感应该是为游戏本身服务的,其中包括但不限于游戏的风格、世界观、核心玩法等。这些方面都会让玩家产生不同的预期角色行为,从而影响玩家最终的感受。

举两个比较极端的例子:

黑魂的移动、攻击、翻滚操作中,会给玩家一种较为迟缓的感觉。理论上这种手感应该给玩家非常差的操作手感体验,但是事实上并非如此。因为在黑暗之魂的世界观和美术风格中,玩家扮演的角色就应该采用较为真实的行动方式,游戏中的负重机制甚至故意模拟真实的情况,让你在超过一定负重阈值的情况下行动更加缓慢。

同时黑魂中想塑造的战斗体验是一招一式的“回合制二人转”,这种较为迟缓的操作手感也更好地服务于战斗核心体验,黑魂玩家需要通过不断学习(死亡)后,才能更好地驾驭角色行动,体会游戏的精髓,进入心流。类似的操作手感设计在魂类游戏或者是SOC游戏中比较常见。

微信图片_20221114094810.gif
黑魂角色基础操作演示

尼尔、鬼泣、猎天使魔女中的移动、攻击、闪避操作就给玩家非常即时的操作反馈和流畅的感觉。这几款游戏中玩家操作的是具有各种超强能力的角色,与黑魂不同,游戏中想塑造的核心战斗体验致力于追求快节奏的战斗爽感。

战斗的设计中提供了各式各样的连招,战斗中你无需过多的等待时机发起进攻,只需要观察怪物的行为,并抓住时机躲避之后就可以立刻继续酣畅淋漓的战斗,魔女时间就把这个设计目的发挥到了极致,这类操作手感设计也在崩3,战双等手游中得到了验证。

微信图片_20221114094811.gif
猎天使魔女-魔女时间演示

游戏中的操作手感的体验设计须结合游戏世界观中的角色设定、美术风格及核心玩法整体考量来确定,在此基础上才能评价其优劣。虽然并没有绝对的好坏之分,但是理论上操作手感的设计上是有边界的,我个人的观点认为边界阈值可以选取上述两个比较极端的例子。

TIPS:如果在开发游戏初期有机会参与游戏整体的世界观设定和美术风格及战斗玩法核心讨论,一定要整体考虑后确定想要一个什么样的操作手感之后再进行下一步。如果项目没有一个明确的出发点且没做过魂Like游戏,我个人推荐快节奏流畅爽快的操作手感,虽然有很多讲究和技术难点但是坑会少一些,黑魂类的缓慢手感复刻起来反而会细节更多处理难度较高。

二、角色基础移动操作手感

当我们游戏中有了第一个角色,首先会想到的就是让这个角色通过我们的操作动起来,虽然说起来简单,但是实操过程中有很多细节。尤其是国内的游戏研发分工下,如果不是真正的从0到1,可能只有一小部分策划会涉及到这个环节的制作。

讨论前,我们可以先尝试熟悉一种思考方法:对于任何一种状态,当我们考虑在游戏中加入它时,都应当考虑什么情况下其他状态进入此状态,是否要有衔接状态,衔接是什么表现;什么情况下可以从此状态退出到其他状态,是否要有衔接状态,衔接是什么表现。

这也是状态机的基本思路,枚举游戏中的所有可能的状态,再遍历其可能由什么状态进入,可以进入到什么状态,常见的游戏引擎中角色的动画状态切换都是基于此种方式进行的。

微信图片_20221114094812.png

1. 移动循环状态

对于角色的基础移动,以角色向正前方奔跑为例,在这个过程中如果要做到玩家预期与角色实际行为反馈一致非常简单,只要让玩家觉得跑步过程真实就好了:

第一,是要动作流畅细腻这里是动作同学的专业,我们不细谈。

第二,角色迈步的动作表现与逻辑中的速度须完全保持一致,这样可以避免大家经常说的滑步问题。UE中的BlendSpace可以直接调试处理此问题及移动时的转向问题,在下文中会简单介绍。

微信图片_20221114094813.gif

TIPS:这一点不同项目制作方法也不同,但我的建议是策划需要有一定把控,不要完全放手不管,可以根据模型身高给出合理的范围建议,再由美术同学制作动作并最终测算确认基础移动速度,确保动作表现与逻辑速度完全匹配。

理由很简单,角色的基础移动速度是一个很重要的数据,很多情况下与关卡或战斗玩法相关,你可能需要根据速度去计算玩家的移动能力来推算出合理的技能动作前摇及打击范围,亦或是根据角色的移动能力来推算关卡中两点之间的距离是否合理,地图的大小是否合理,不同角色身高不同移动速度不同是否需要平衡,如何平衡等等。

对于一个注重动作表现的游戏来说,上述提到的只是移动中的一个循环状态,还远远不够。尝试使用状态机的思考方式:idle待机状态可以通过输入方向来控制角色进入移动循环状态,同时为了更符合真实运动,这里需要一个开始(起步)衔接状态表现;当玩家停止输入方向时,可以从移动循环状态退回到idle待机,同时为了更符合真实运动,这里需要一个结束(停止)衔接状态表现。

实际上,真正与手感关联最大的并非移动循环状态,而是“起步”状态和结束循环之后的“停止”状态。

2. 起步

对于进入不同的移动循环状态,起步的处理方式也有所不同,以大多数游戏中常见的状态举例:

1)行走

其实行走在大多数游戏中不是常用的移动行为,甚至去掉行走依然不影响游戏体验,它存在的意义更多的是更好地展示角色,其状态具有以下特点:

  • 行走状态与Idle状态的Pose很相近
  • 行走状态的速度与静止相差不多

因此行走的起步并不需要衔接的加速启动过程处理,只要有短暂的融合时间就能达到较好的效果。

微信图片_20221114094814.gif

2)奔跑

  • 奔跑状态的Pose与Idle会有一定区分度
  • 角色有普通奔跑速度与静止相比要快很多

所以最好有一个较为短暂的奔跑启动动作,同时角色的速度快速从0加速到奔跑的速度,这样从Idle进入到奔跑的过程中会更加丝滑。但需要注意的是,玩家在操作角色移动时更希望的是角色的反馈更加即时,因此这个启动过程一定不能慢,最好在几帧之内完成过渡至循环状态。有些项目中,起步衔接时间足够短,甚至可以不使用动作,仅使用Pose进行融合完成过渡。

微信图片_20221114094815.gif

3)加速跑

  • 加速跑状态的Pose与Idle相差很多
  • 加速跑的速度通常是游戏中角色的最快常规移动速度

因此游戏中的处理手法多见为不从Idle直接进入加速跑,而是通过奔跑后的操作或者通过冲刺之后进入这个状态,这样也更加符合从静止→加速→加速跑的感受。

如果是采用由奔跑过渡到加速跑的方案,由于二者的Pose相差不多,通过一定的融合时间就能达到较好的过渡效果。如果是通过冲刺进入加速跑,则需要找到冲刺即将结束但还未减速停止的一帧作为参考来进行衔接,注意二者Pose最好有所差别,这样可以通过融合做出埋头冲刺之后卸掉一部分力小幅度重心上移进入加速跑的流畅感。

微信图片_20221114094816.gif

3. 停止

这里的分析方法与起步类似,就不再过多赘述,同样以上述情况举例:

从合理性上来说,行走与奔跑的角色Pose不会像加速跑那样夸张,并且速度并非很快,因此最好是玩家停止移动输入即立刻停止逻辑上的位移,只需在动作上做停止表现跑步停止。如果跑步即刻停表现不好可以尝试一步停并在停止动作中使用Rootmotion功能来完成一小步的位移。

Rootmotion(根骨骼运动)在U3D或是UE中都是用来解决动作位移的常用方案,如果项目是大型多人在线游戏且存在大量Rootmotion的情况下可能会导致同步问题,需要让程序同学将根骨骼运动的信息特殊处理后才能使用。

与现实中的直观感受不同,在现实世界中我们以正常速度奔跑要停下来都会借势往前走两步,有的项目过度执着于这种仿真的手感做出来后,操作手感却很糟糕,惯性虽然符合常识但是在游戏中一定要慎用。游戏中操作的反馈即时性要大于合理性,这一点在打击感的受击动作部分也有相关应用。

微信图片_20221114094817.gif

同时正常奔跑停下来的动作从设计上也没必要执着于去解释为什么角色直接停住了,这样会导致整体感觉用力过猛,当然这也是我的个人体感,不同人感受会不同,举例如下图:

微信图片_20221114094818.gif

但是通常游戏中最具速度感的加速跑如果直接停住手感就会比较奇怪了,在加速跑急刹车时应配有相应的动作表现与实际位移。这里有以下注意事项:

急停的位移过程要干净利落,尽量短暂

尼尔和原神的急停从开始减速到刹住车的Pose时间长度均在9帧左右,可以以这个标准为参考来调整手感。

微信图片_20221114094820.gif

急停的位移过程可以被移动或技能取消

急停的表现效果主要目的是为了让玩家体会到冲刺的速度感,但并不该因此卡玩家手感,在松开方向键进入急停后,如果玩家立即重新进行移动输入或技能输入应进行即时反馈,玩家一定不希望在怪物前急刹车时无法移动和攻击被动罚站。

微信图片_20221114094822.gif

急停的位移的节奏需配合动作表现

刚才我们讨论的是从加速跑开始减速并过渡到急停pose的过程,实际上如果仔细观察在急停的Pose结束回到Idle时,会有一个向前跟步的动作,再或者你想做的急停不是这种刹车而是符合惯性地往前缓冲两步后停下,这样的情况下位移节奏是非常细腻的,仅仅是使用程序控制的减速往往会产生滑步。这里可以使用Rootmotion将动作同学的根骨骼点的运动来直接还原。

急停动作符合角色性格效果更佳

这里其实是整个的角色动作设计公共加分项,手感上可能并没有什么直接影响,但能让玩家眼前一亮,加印象分。

微信图片_20221114094823.gif

4. 转向

对于角色的转向如果不做处理,当输入一个方向之后角色模型就会立刻瞬切,观感上造成不流畅的感觉。

微信图片_20221114094824.gif

因此我们需要对转向的速度进行一定的限制处理,但是这个转向速度在接受的表现范围内一定要尽可能大一些,这样可以让我们的反馈更及时操作手感更加流畅。对于速度较快,上半身动作幅度较大的奔跑动作,在转向时可以使用朝对应方向倾斜的衔接动作或Pose进行处理使之表现更加合理。

微信图片_20221114094825.gif

当角色朝当前面朝向的相反方向移动时(尤其是快速移动),可以增加对于急转身情况的特殊处理提升表现效果。可以直接通过衔接动作或融合转向Pose完成转身,也可以拐一个弯儿更流畅地让角色转向完全相反的方向。

微信图片_20221114094826.gif

微信图片_20221114094827.gif

如果动作整体节奏较快,可以加入更为夸张的类似现实中折返跑的刹车动作表现,让整体动作更符合物理规律。

微信图片_20221114094828.gif

这里简单介绍一下UE中的BlendSpace功能。Blend Space:混合空间是一种资源衔接工具的图表,你可以在其中绘制任意数量的动画,称为 示例(samples) 。总体动画通过基于每个轴的输入值在图表上的点之间混合来计算。简单概括就是,你可以将速度方向确认的动画作为输入值,系统会根据你输入的值拟合出一个“动作函数”,当游戏中的角色处于函数中的任意情况时,都会自动混合出相应的动作表现。

UE中的这个功能很强大,且应用也非常广泛,例如角色的基础移动,特殊状态下的八方向移动,包括弓箭枪械向不同角度瞄准时的表现都可以通过BlendSpace来完成。

微信图片_20221114094829.gif

5. 快速位移类(冲刺/闪避/翻滚等)

冲刺闪避或者翻滚是常见的Timing考核点,在正确的时机躲过敌人的攻击更高效率的进行战斗是大多数动作向游戏的内核之一。虽然主要是为战斗服务的,但由于不太涉及到打击方面的内容所以把这部分归类到了基础移动中。

对于冲刺/闪避/翻滚的手感把控,我们需要根据整体的手感节奏来确认采取何种方式,翻滚的过程感明显,更容易把偏慢的节奏表现得合理,翻滚出去的过程及时间可以更好的调整,同时角色需要起身后进行移动,可以根据这些时间的调整来控制操作有一定的行为选择代价,因此节奏偏慢,技巧更硬核的游戏大多采用此种方式;

微信图片_20221114094830.gif

但如果我们不想强调玩家需要对此行为进行付出代价和学习成本,想要玩家可以更加即时的进行快速位移并且可以无缝进入移动状态来调整走位,则更推荐使用快速发力冲刺的动作表现形式,这个动作的起始帧可以不是站立姿势,直接到发力前的动作,并在3帧之内快速响应进入逻辑位移。

微信图片_20221114094832.gif

在使用快速位移的过程中的转向方式需要根据项目需求和具体表现来综合考虑。例如翻滚的动作在腾空时与自由转向的兼容度不高,落地接起身时如果可以自由转向表现也会奇怪;但冲刺过程中转向虽然从真实角度出发并不合理,但效果上可以接受;如果是采用闪现的快速位移方式,由于没有中间的移动过程,且落地点位置确定,中途可以忽略转向的因素,但整体闪现过程应尽量快。

6. 左右脚处理

不论是走、奔跑、加速跑还是冲刺急停等等,过程中都会涉及到哪只脚在前哪只脚在后的问题。例如如果目前只有一个奔跑停止的动作,同样的融合时间,如果不区分左右脚表现,那么只有确定的一只脚在前的时候表现是流畅的。

微信图片_20221114094833.gif

这里介绍一个在UE引擎中较为简单的实现方式:我们以奔跑接停止为例,在奔跑循环动画序列中观察角色动作来标记通知修改一个变量,例如当左脚在前(或空中)时变量为0,右脚在前(或空中)时变量为1,在动画循环时就会根据当前动作情况修改这个变量的值。当在衔接奔跑停止动画时读取该变量的值,根据情况调用对应的左右脚奔跑停止动画即可。

7. 小结

本章节内容主要讲解了几个最基础的移动方式,同时简单介绍了状态机的理念。其实没有最好的,只有最合适的,真正了解项目中想要的是什么,以核心诉求为出发点进行推演才能得出最适合的基础移动的方案,再加入对细节的处理才能让玩家感受到好的操作手感。

大家可能会注意到,基础移动的基础“走跑跳”中跳在这里并未介绍,其实不论是跳跃、游泳、攀爬、飞行来说都可以使用上述分析方法:什么情况下其他状态进入此状态,是否要有衔接状态,衔接是什么表现;什么情况下可以从此状态退出到其他状态,是否要有衔接状态,衔接是什么表现。

熟练运用这个方法之后就是对于细节的处理和打磨了,在此工作的过程中最应具备的是耐心,因为一套成熟的方案都是经过非常非常多次的迭代才能产出的,项目甚至直到上线后依然会再对此部分进行优化。

三、摄像机对基础移动操作手感的影响

3C(Character Control Camera)是近几年来提到很多的一个概念,角色控制和摄像机代表了大部分游戏中最基本的三种元素,从某种程度上3C体验代表了游戏中的“手感”。在游戏精品化的道路上,游戏中这三者永远都是最基础且最应被重视的一部分。

第二章中主要讲的就可以归类到Character和Control这两个模块,而对于Camera而言我更认为是一个锦上添花的模块,它从视觉的反馈上间接影响玩家的手感体验。如果游戏只为做到70分,可能在基础移动这个部分摄像机不需要特别多的细节处理,把前两个部分做好就达标了,但如果为了追求更加优秀的表现,摄像机如何让操作反馈更加舒服就变成了必修课题。

1. 摄像机的基础介绍

提示:此部分内容较为基础,可以酌情跳过——

绝大多数3D第三人称游戏中摄像机通常与主角绑定,这样可以更好的观察主角,摄像机与主角的相对位置关系决定了游戏的基础视角,比如是背后还是越肩,角色在屏幕正中央还是偏左一些。这是一个很大的讨论课题,不同视角会带来各自的优劣,但此章节讨论的重点不在这里,主要是讨论基础移动中摄像机的反馈细节。

摄像机相关的参数可以简单分为两类:

位置相关参数

当与角色绑定后,摄像机的位置可以被基于角色信息的空间向量确定(XYZ轴方向及距离)。大多数3D第三人称游戏中玩家可以操作来改变这几个参数,实现从不同位置看向角色。

俯仰角相关参数

以摄像机看向角色的角度为基础,摄像机可有附加的角度偏移(Yaw Pitch Roll),由于在基础移动中需要确保摄像机看向角色,故这一组参数在基础移动中几乎不会修改,但在战斗的一些情况下会进行调整。

镜头相关参数

亮度,FOV等镜头参数在基础移动和战斗中都不会轻易进行调整。

2. 摄像机与角色的关系

摄像机与角色的绑定关系可以想象成我们在角色身上绑了一个自拍杆儿,这个杆儿并不固定,玩家可以通过操作来调整自拍杆儿的长短、与自身的方位角度和倾斜角度。UE中的SpringArm(弹簧臂)组件就非常形象生动地抽象出了上述功能,只需用该组件将角色与摄像机关联,即可实现我们理想中的摄像机要完成的基础功能。

同时,玩家移动的方向输入是以摄像机的朝向为基础朝向来操纵角色移动的,所以其实整体上玩家和摄像机的关系是:角色位置根据参数决定摄像机位置,但摄像机的朝向(即摄像机与角色所呈的方位角度)决定玩家移动操作的基础朝向。

3. 表现与实例分析

把摄像机理解为绑在角色身上的弹簧另一端的物体,在角色移动过程中摄像机要怎么合理地运动就很容易想象出来了:为了体现角色的速度感,当角色移动时弹簧应该被拉伸或压缩(取决于角色向摄像机朝向还是反向移动)一段长度。当角色停止移动时,弹簧再回到原来的长度。

微信图片_20221114094834.gif

当玩家在朝左右移动时,也可以使用这种手段处理,但不同的移动方向对于“弹簧”的拉伸效果可以不同,前后效果最明显,其他方向可以根据实际表现情况减小一定程度。

角色在原地跳跃时,由于与摄像机的绑定关系,摄像机会跟随角色运动,但由于角色跳跃在下落后逻辑上速度瞬间归0,如果摄像机不做处理会有一种快速运动骤停的感觉,其实很多游戏对这里是没有特殊处理的,但如果追求表现更好,可以在下落过程中让摄像机提前减速,这样角色落地后摄像机会有一个缓冲,不会从一定下降速度直接到停止。

微信图片_20221114094835.gif

仔细观察可以发现尼尔对于跳跃的摄像机处理不仅做了高度上的缓冲,对于摄像机的Pitch参数也做了处理,跳跃时有细微变化,并在下落前缓冲回正直至原Pitch值。

移动角度偏移

许多游戏中如果你一直按住左或者右进行移动时最终结果并不是角色一直朝左或右前进,最后角色会画一个圆(半径或大或小)回到原地,如果不是有意观察可能很多情况下并不会察觉(原神也采用了这样的处理方式,我问了身边十个玩原神的他们都不知道这种情况的存在),原神画的圈比较大不易察觉,这里可以看下尼尔里面的效果。

微信图片_20221114094836.gif

从设计目的来说没有找到权威的说法,但我个人分析有以下两点:

  • 玩家向一个方向移动,可能是更想关注这个方向上的信息,这种处理可以很小的程度上不去依赖其他操作调整摄像机朝向(但如果光指望这个肯定也不太行)
  • 整体表现更加丝滑,因为背景场景的移动是一种环绕式而非平移式

从实现上来说这里的实现方式并不难,因为角色移动是基于摄像机视角朝向的,只需要在角色左右移动时对摄像机朝向也给一个小角度的偏移即可。可以根据项目所需选择是否使用这种方案。

4.其他

在角色移动时会有一些特殊情况需要处理,例如角色在上下台阶时其位置可能会出现频繁的突然上升下降,角色在场景中移动时有障碍物挡住了摄像机移动的路线,或挡在了角色与摄像机之间,这些应如何进行摄像机机位的处理都需要根据实际表现效果来处理。

微信图片_20221114094837.gif

与摄像机相关的处理可以参考知乎上写镜头控制思路的一篇文章:[UE4]第三人称探索类游戏的镜头控制思路与经验分享

四、一些小Tips

这部分并不仅针对基础移动的表现手感,对于战斗手感,打击感等都适用,可以有助于大家更好地分析和解决问题。

1. 动作的质量本身

对于偏ACT表现的游戏,动作本身的质量很关键,但这也只能抱住美术大佬的大腿了,虽然策划不能直接决定动作本身的质量,但如果对整体实现方案有理解,在一些细节的处理上我们是可以给出对应的处理建议的,当然如果团队中有经验丰富的TA大佬,这里可能并不需要策划做太多事情。

2. 具体问题具体分析

不同项目的核心需求不同,要以自身项目情况为出发点进行分析每一处细节使用何种方案会造成何种利弊,不要硬抄其他游戏中的方案。但同时也不能极端的闭门造车,凭空构想,尽量参考类似的案例,在其基础上进行调整使之更符合自身项目的特色。

3. 尝试不同的动作融合时间

如果表现不自然,也许并非动作衔接有问题,很可能是并没有合理使用动作的融合时间,例如两个相互衔接动作首尾帧完全一致,如果应用了融合时间那么他们的表现效果反而会更差,不使用融合的情况下才丝滑流畅。

4. 学习成熟的方案

我们可以将觉得表现好的游戏中想研究的部分录制下来,使用播放器反复地进行逐帧观看来推测其使用方案,但不要轻易下定论,因为表现之下的逻辑很可能是通过一套比较复杂或更先进的功能实现的,还是要检索和学习相关的资料才行。随着游戏的进步,一定会有更多先进好用的技术出现,对策划的要求也会逐步提升,学海无涯大家共勉。

另外,UE的商城中提供了很多免费给大家参考的工程,可根据情况进行查阅,例如:ALS高级运动系统,Lyra等。

下期预告:论如何做好基础操作手感(下) 战斗篇

文/PlayerOne-Zak

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

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-20 05:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表