【策划向】全景解构射击游戏枪械设计——表现/手感篇

作者:Minke 仍然在一线战斗的战斗策划


全文21000+字,参考图&视频140+,建议在PC端阅读,建议配合上一篇数值篇一起食用

内容量很大,预估阅读时间不确定,建议想认真看完全文的同学分课时阅读,一次看完消化不了


前言

距离上一篇讲枪械数值的文章发布已经过了8个月

之所以能拖这么久,主要是因为我懒

不过恰恰是因为隔了这么久,在武器表现层面上又有了些新的感受

这半年做了上线项目的武器表现升级,动作、音效、动作品质提升和相关客户端逻辑;去新项目之后又从头看了一遍更底层的东西,包含Control层面的灵敏度、辅助瞄准,制定一些前期美术规范之类的内容,相对来说对武器表现,主要是打击感,有了更全面的认知,这才敢来写这一块的相关内容。

这一篇和数值篇一样,可以理解为是反拆+经验分享,主要目的是帮助大家查漏补缺(提需求的时候翻一遍),或是建立对枪械设计的最基础的认知,以后填问卷的时候除了说“动作僵硬打击感差”,还可以说些更细致的内容

列举的仅仅是我工作中做过或者拆解过的模块,应该列不全,也不会过于深入,只要正儿八经做过射击的战斗策划应该都能覆盖到,我只是做了一点点浅薄的整理工作,要转发甚至是洗稿都随意,毕竟射击市场卷到现在,大家已经不是在拼有没有,而是做的怎么样了,看手艺的事我还是有信心

游戏交互的艺术博大精深,还需要诸君一起努力

纲要:聊聊打击感

我认为打击感是一种交互的乐趣,核心组成部分是输入(Control)与反馈(camera&character)

反馈有很多种,也许现在是视觉听觉触觉,随着技术的发展还能期待更多的感观刺激

这句话需要注意的是,我特别强调了输入

在主机和PC平台,我们的输入行为都是通过手柄/键鼠这类机械硬件,他们提供的反馈更多是来自于我用的什么样的设备,或是游戏内鼠标/手柄速度的区别,可控空间不大

但是在手机平台,当玩家最基础的位移和转向都要通过虚拟摇杆来实现的时候,如何用虚拟摇杆还原出主机/PC平台的操作,甚至比主机平台更加跟手,是一切打击感的基础

“玩家连人都瞄不准,后面的反馈再花里胡哨有什么用呢”

大概包含的内容

全文会以FPP射击手游为主来讲打击感,看完的话应该就能理解为什么大家都说“策划什么都懂一点,什么都搞不明白”

一、Control(手游)

控制层主要包含两块内容,一块是玩家自己的主动输入,一块是我们利用机制给到玩家的被动补偿,目标都是提供及时、精准、符合预期的反馈,从而强化操控感和打击感

这里主要聊手游,在control层面,手游会比端游复杂很多

1. 主动输入

1.1 转向(右摇杆)

手机上的转向设计常见三种类型:固定加速、距离加速、速度加速

  • 固定加速:模拟手柄操作,转向加速度是恒定的,转向角度取决于滑动距离
  • 距离加速:玩家滑屏距离越远,转向的加速度越快(这个好像只有CODM在用)
  • 速度加速:玩家滑屏速度越快,转向速度越快(射击手游的主流灵敏度设计)

这里只聊速度加速的一些查漏补缺点

1.1.1 输入平滑的处理

由于滑屏的采样和帧率挂钩,如果在滑屏过程中出现丢帧,客户端拿到的数据不平滑,滑屏速度的变化也会受到影响,导致转向失控;即使不丢帧,如果直接使用采样到的原始数据,速度变化的幅度也偏大,表现并不会太好。针对这种情况,我们需要取覆盖面更广的采样数据,或是针对单个采样做优化,来实现曲线的平滑变化。

  • 持续滑屏平滑处理:在玩家持续滑屏时,建议用当前帧和上一帧,帧数更高的情况下可以再取一帧,加权处理帧数间的速度变化,这样在丢帧/帧数低的情况下,仍然能够取得相对平滑的数据。
  • 针对首帧的平滑处理:首帧滑屏由于缺少连续滑屏的数据做平滑,会做一个单位时间位移超过X个像素点时,对数据进行缩放的处理,避免首帧速度过快导致镜头失控。当玩家真的有高速滑屏需求时,后面的帧数会迅速跟上速度。(注意这里一定是达到某种高速状态时再来做缩放,核心是避免误触或者数据误差导致失控,而不是让玩玩家低速卡手)

1.1.2 系统层防误触的平滑处理

IOS和安卓在系统层都有防误触设计,用于分辨滑屏和点击,这里会导致两个问题:

系统层防误触设计导致的输入延迟
  • 在系统层判定距离内,即α时间段(此时假设3帧),这段时间内玩家的物理上滑动屏幕并不会得到响应
  • 当系统层判定为滑屏,从而开始返回数据到客户端时,首次上报的坐标位置和初始位置差距会偏大,玩家会发现镜头前几帧没反应,第四帧突然出现一个大的跳动。

这里也需要做平滑处理,可以采用上面处理首帧的方式来做限定条件下的缩放,也可以针对IOS,直接不取第一帧的滑屏数据,看项目组对手感灵敏程度是否有强要求

1.1.3 DPI换算

我们做灵敏度的最终目的是,希望能够让玩家形成肌肉记忆,从而在不同设备上实现无缝切换

所以我们针对玩家输入数据的单位,并不是像素点,而是需要归一换算至具体的英寸

玩家以相同速度滑动一定的物理距离,在不同手机上的表现需要是一致的

所以需要做的是确定一个标准DPI下的体验后,不同机型根据DPI标准做一个比例缩放

有的项目是用屏幕尺寸来直接定的标准,逻辑上是一样的

1.1.4 FOV换算(可选)

FOV 50-中速滑屏表现
FOV 90-中速滑屏表现

如上图对比可以发现,转动同样的距离,因为镜头内变化更大,FOV50会比FOV90看起来转向的角度更大,所以可以尝试针对场景fov的不同,新增一个缩放控制系数,使玩家在体感上滑动差异不会过大

当然也可以像CODM一样不做处理,除开玩家设置,改变场景FOV只有举镜行为,那么开镜这种行为单独去设置好玩家不同倍镜的开镜灵敏度,也能实现控制转向的效果

1.1.5 灵敏度曲线设计

经过上文的一大堆处理之后,我们拿到了玩家的输入数据,但如何将玩家的输入数据映射成转向度

我们需要建立 单位时间移动距离(速度) 和 镜头转向角度 的关系

这个曲线需要满足以下几个条件:

  • 低速阶段,能够实现小幅的精准移动
  • 加速阶段,能够迅速识别玩家的快速滑屏意图,转向角度能够迅速增加
  • 高速阶段,能够对角速度进行收敛,避免玩家的镜头失控
  • 需要有一个区间,控制玩家镜头移动的最大速度和最小速度

那么满足这些条件的曲线其实已经呼之欲出了

常见的速度加速灵敏度映射曲线

曲线的调试需要跟战斗体验挂钩,PVP游戏的转向区间要求就肯定比PVE大,曲线也要朝这个方向调整

在满足预期转向目标的情况下,覆盖的滑屏速度范围尽可能做大,这样才能实现颗粒度更细的滑屏,避免稍微一起速就进入超速收敛区间的情况

1.1.6 灵敏度调试的小工具

  • 输入工具:推荐苹果系统的自定手势,能够完整复现滑屏操作,确保每次的输入量完全一致
苹果的自定手势工具
  • 监测工具:需要在编辑器内做一个调试工具,实时展示当前帧数滑屏距离和对应转向角度、总滑屏距离和转向角度的工具,录屏之后用能够逐帧播放的播放器检验每帧的变化,这个每个项目都有自己的调试工具,我就不截图了
  • 评估工具:我的习惯是用总转向角度和竞品对比,确保整体的转向角度差异不大,针对过程中变速数据,会用excel记录数据做逐帧对比,观察具体的差异点,但最快的评估工具仍然是负责策划的手和脑子,最好的评估工具永远是玩家CE

1.2 位移(左摇杆)

位移相对于转向来说就不会有这么多的踩坑点,大多数设置市面上都有现成的参考,需要关注的内容主要集中在两块:位移角度和位移距离

1.2.1 位移角度

在数值篇提到的不同方向速度设置及数值的差异
左摇杆校正区/死区示意
奔跑触发的角度示意

我们在数值篇的时候时候提到,我们向前的速度和向左右后的速度是不一致的,其中简单提过扩大判定区域来帮助玩家前进的设计,这里做一下更细致的说明,左摇杆的区域大概分为以下几块:

  • 红色区块:摇杆中心的死区,避免摇杆过于灵敏导致玩家无法实现静止操作
  • 浅红色区块:前后左右四方向校正区,玩家在这个角度之内位移,移动方向为标准的前后左右
  • 白色区块:玩家向左前/右前/左后/右后位移的操作区间,这里的映射角度支持支持配置,例如此时留给玩家的物理操作区间为15~75度,可以将游戏内虚拟操作区间也做成15~75度,也可以映射为30~60度/0~75度或其他角度
  • 绿色区块:支持进入跑步状态的触发角度,还可以做更细的奔跑保持角度之类的设计

这些区域的设计目的主要是两点:

  • 避免玩家一些误操作/噪点操作,例如想静止但是一直在走,想走直线但是一直在左右小偏移
  • 降低玩家的操作门槛,手指的大小和灵活程度确实因人而异,许多区域需要做大做宽来让玩家感到更跟手

1.2.2 位移距离

左摇杆触发距离示意

实现玩家的精细移动,除了位移角度设计外,还需要做细致的位移距离处理,一般的位移距离划分为以下几块:

  • 红线:上文提到的死区,玩家在这个范围内滑动,不会有任何效果
  • 绿线:红线到绿线的位置,玩家在这个范围内滑动,触发行走行为;玩家滑动到绿线范围以外,触发奔跑行为
  • 橙色圈&橙色底:虚拟摇杆图示
  • 蓝线:当玩家滑动到蓝线区域以外时,锁定奔跑行为,此时松开手指玩家进入持续奔跑状态

1.3 按钮操作逻辑

1.3.1 点击

点击层面,遇到过的问题大概是以下几个,围绕着即时性和优先级

  • 触发逻辑:按下触发,还是松手触发,二者的感官差距极大,千万要跟程序对齐,例如开镜往往是按下触发,而开火根据武器类型的不同,可以做按下触发和松手触发
  • 优先级逻辑:当多个按钮叠在一起,同时被点击时,优先触发哪一个,这里按钮的层级需要规划,一般来说会把开火作为第一优先级
  • 响应即时性:这里跟局内一般没啥关系,顺带提一下。存在两个坑,一是需要跟服务器交互的按钮响应速度过慢(例如早期版本CODM的大厅),一个是UI动画做的很长导致按钮的生效节点不明确(例如按钮有一个超长时间轮廓闪光)

1.3.2 长按

长按更多的关注点在于,玩家按住期间能够支持的操作,这部分提需求时也需要想明白

  • 长按期间是否支持转向:这个功能放在开火键/技能键上很好理解,实现一边开火一边瞄准的功能,但是其他按钮,例如跳跃、开镜、下蹲等是否默认开启,是需要增加相关开关做控制的
  • 长按响应即时性:长按触发的按钮,在按下的时刻就能持续响应玩家的操作,这里需要注意的是如何应对中途的打断和打断后的状态,例如玩家按住开火后,子弹打空触发换弹,开火键以怎样的频率去持续校验,从而实现玩家不松手的情况下,换弹完毕后立即开火

这里再提一个有趣的BUG或者机制,CODM的按钮因为组件不同,玩家按住下蹲键,之后将手指拖拽到开镜键上,能够连贯实现下蹲/滑铲开镜的操作;如果我们进一步细化考虑按住某个按钮并且滑屏的情况下,是否能与其他按钮有交互,也许会进一步优化手感

1.3.3 按钮的融合

PC和主机平台因为按键足够多、相互分离且操作便利,加功能会很方便,例如枪械检视、卡壳处理等等

但手机平台屏幕尺寸有限,玩家可以使用的手指也有限,所以会常见一些功能融合的按钮,这些按钮的逻辑也需要做精细设计并提供开关

以最常见的一键开镜开火为例,就会面临先开镜再开火,还是开镜的同时开火?开火完毕后松开手指保持开镜,还是自动落镜等问题

2. 被动补偿

2.1 辅助瞄准

年初在写数值篇的时候,还觉得AA这个东西需要藏着掖着,后来发现其实大家的功能都差不多,想拆随时都拆的出来,甚至已经有了现成的组件

在代码插件创建的Pro Aim Assist – 虚幻引擎商城

也是过了半年才明白,做出来是一回事,调好是另一回事,玩家不希望AA太强(APEXM测试/COD19手柄),更不希望AA太弱,我们需要做到的是“让玩家觉得他自己很强”

这里的调试逻辑和指导哲学,才是每个战斗策划的手艺所在

所以这些东西是怎么实现的,真不重要了,可以简单列一下

2.1.1 吸附类

吸附定义可以概括为:枪械的准心在某些条件下,自动向目标靠近,辅助玩家射击

常见的吸附类AA包括开镜吸附、开火吸附和磁力吸附,具体表现如下:

APEXM开镜吸附
APEXM磁力吸附

开火吸附由于需要玩家开火,表现没有开镜和磁力这么直观,可以理解为和开镜吸附的逻辑一致,在开火的过程中逐渐把准心向目标身上靠

吸附类的辅助瞄准的设计大概可以简化为解决两个问题:

目标选择吸附表现

A. 目标选择:

  • 目标处理:当准心周围有多个目标时,是否以最近的目标为准;如何解决多个目标重叠时,玩家想打后面那个的问题
  • 判定范围:以胶囊体为生效范围,还是在胶囊体外再增加一个判定框,进入判定框开始吸附;不同距离的判定框是否需要有大小差异;当准心指向胶囊体内部以后,吸附是否持续生效
  • 生效条件:只对敌方人体目标生效,或是同时对召唤物(靶场靶子)也生效;任何时候都生效,开镜时生效,还是玩家有输入甚至输入达到一定阈值时才生效

B. 吸附表现:

  • 方向:吸附的方向以人物中轴线为目标,还是以质心为目标,还是以骨骼为目标
  • 时间:吸附是配置固定时间,到时间就结束,还是没有吸附到目标就持续吸附;是否需要根据距离单独配置
  • 速度:吸附的速度是固定的角速度,还是根据不同距离的吸附时间反算出来的插值速度
  • 逃逸:当检测到玩家的滑屏方向和吸附方向不一致时,需要取消吸附,需要考虑玩家是否在对抗吸附、玩家对抗的吸附的滑屏阈值、吸附消失的插值时间这些问题

2.1.2 阻尼类

定义:当玩家操作镜头划过敌方目标时,滑屏灵敏度自动降低,使准心在目标身上停留更久,辅助玩家瞄准

APEX端游阻尼

看上图可以发现,镜头在滑动过敌方目标时,转向灵敏度显著下降(这图确实看着容易头晕)

阻尼生效示意

阻尼的生效逻辑比较简单,玩家的镜头划过阻尼触发范围时,会乘上相关的阻尼系数(通常小于1),从而使转向速度变慢

  • 橙圈:阻尼的生效范围,支持不同距离配置不同的范围
  • 绿线:玩家的镜头朝向
  • A点:阻尼系数为1,该点向左阻尼系数不生效
  • B点/C点:阻尼系数为设定值,镜头划过BC点(即胶囊体时),阻尼系数达到最大,支持不同距离配置不同的大小
  • 灰色方块:阻尼的插值区间,阻尼系数逐渐从1降低到设定值

2.1.3 修正类

无论是吸附类,亦或是阻尼类,都只是帮助玩家更好的瞄准目标,底线时玩家至少需要把准心放到目标身上

接下来要看的修正类,才是真正的重量级

定义:当玩家开火满足一定条件时,对射出的子弹或是子弹轨迹进行修正,帮助玩家直接命中目标

APEXM 子弹保底
命运2 子弹偏移
守望先锋:归来 弹线示意

APEXM的子弹保底和命运2的子弹偏移都是通过直接修改子弹的落点,来帮助玩家命中目标,不过实现上区别比较大

守望先锋则是通过直接修改子弹的碰撞体大小,将子弹判定从一条线,变成一个圆柱体(可以理解为毛妹没能量时的柱子和有能量时的柱子),从而让玩家更容易命中目标【这个不保真,听小道消息说这样做的】

子弹保底(没做过,我猜的):

子弹保底是通过计数的形式来实现,当玩家命中目标的判定框N发子弹且没有对目标造成伤害时,N+1发子弹会直接命中敌方目标

  • 触发范围:胶囊体外新增一个判定框,支持随距离的变化设置不同大小
  • 触发子弹数:支持可配置的子弹数量,不同枪型触发条件不同
  • 保底命中的实现:改子弹的轨迹或者改子弹碰撞的大小都可以实现,目标是让玩家的这一发开火必定命中目标

子弹偏移:

关于子弹偏移,小黑盒的这篇文章讲的很清楚,很感谢这个兄弟,这也是我坦诚分享的源动力之一

https://api.xiaoheihe.cn/v3/bbs/app/api/web/share?link_id=54066776

简单来说:子弹偏移机制就是围绕着屏幕中心发射多个判定圈,当不同的判定圈与目标碰撞体相接触时,将子弹向碰撞体做不同程度的偏移

子弹偏移示意

上图是一个比较简单的示意(虽然codm没做这玩意):

  • 黄框:敌方目标高伤害碰撞盒
  • 蓝框:敌方目标标准伤害碰撞盒
  • 红圈:子弹基础偏移圈,当红圈与敌方目标碰撞盒重叠时,子弹会向红圈内,距离准心最近的碰撞盒位置偏移,协助命中目标,需要支持根据距离的变化,配置不同的偏移角度or偏移距离
  • 黄圈:高伤部位偏移圈,当黄圈与敌方目标高伤害碰撞盒重叠时,会将子弹优先偏移到高伤害的位置,需要支持根据距离的变化,配置不同的偏移角度or偏移距离

设计上很好理解,当玩家瞄的大差不差的时候,系统帮你偏一下, 偏移的程度还可以作为数值直接开放出来

碰撞修改(小道消息,不保真):

传闻OW有子弹有两套碰撞判定,一套是针对场景的,打一条射线,一套是针对目标的,打一个带体积的圆柱

虽然是传闻,但实际上具有明显的可行性,表现可以参考毛妹的柱子,一定是越粗越容易命中目标:

能量为0时柱子粗细
满能量时柱子粗细

难点是否要为了这个辅助瞄准来做两套碰撞体系,我技术力不够,很难想象出具体的做法,不过确实也算是一种相对优雅的辅助瞄准手段

2.2 位移补偿

如果做一个简单的归类,辅助瞄准是帮助玩家实现更精确的转向,是在优化右侧虚拟摇杆的操作

那么位移补偿则是帮助玩家实现预期中的位移表现,优化左侧虚拟摇杆及相应位移按钮的操作

2.2.1 移动优化

在关卡设计中会有一个标准叫做通行流畅度,监测玩家在这张地图中的移动是否顺畅,会不会感觉粘滞、卡顿

这一块其实算是关卡策划的专业内容,我不太懂,简单列一些我见过的问题:地面凸起不合规范/未做行走落差处理,没有针对过门做相应的位移辅助,局内障碍物的碰撞速度补偿等

好消息是一份完整的3C Metrics文档可以大幅优化这些问题

2.2.1.1 地面凸起/行走落差相关

在项目初期,3C的策划会给一份3C Metrics文档来限定局内关卡的标准,包含人物高度/移速/跳跃高度之类的数据,其中就包括行走落差,指玩家不需要跳跃和攀爬,就可以行走通过的障碍物高度

踩过的两个小坑:

1.关卡的碰撞不一定需要和场景完全对齐:

行走落差一般是通过射线来做判定,也不会允许玩家攀上负角度的障碍物

所以假设遇到这类具有设计感的负角度台阶/石头,或是在地形比较复杂的情况下尝试跨越90度台阶,都有可能造成一定的误判。这里的建议是场景里的地形长这样,但是相关的碰撞不一定要刷的一模一样,给台阶的碰撞加一个坡度,大家的日子都会好过些

特殊地形示意-负角度台阶
刷个带坡度的完整碰撞

以这个负角度的台阶为例,如果碰撞真的刷成蓝色和模型一摸一样,大概会出现即使配置了很高的跨越高度,也会人物没法直接走上去,需要点击跳跃的问题

这个时候如果多刷一个粉红色区块的碰撞,相关的行走和跨越表现就不会出错了

2.场景中的零碎物件也需要符合3C Metrics文档:

为了避免关卡场景很空,我们往往会摆一些东西进去,什么桌子椅子箱子,花盆花台栏杆,但这些物件在摆进去的时候就需要考虑到,这个东西是否能让玩家直接走过去/翻过去,根据标准文档来确定尺寸。

我自己有一个比较简单的评估标准,来看某个物体到底应该不应该支持玩家行走通过:

当玩家镜头推平或处于常规角度(爆头线/架枪位)时,出现在镜头中的物体需要翻越通过,没有出现在镜头中的物体需要行走通过

例如图中的这个探照灯,早期版本是无法直接跨过去的,推动摇杆走到这里会顶住,玩家平视的情况下还看不见这个灯=。=好在后期修掉了这个BUG

CODM突尼斯死亡探照灯

2.2.1.2 门的判定相关

在手游上精确的通过指定路线,对于大盘玩家来说一直是比较麻烦的事,和键盘按下WASD四个键相比,玩家的手指控制能力差异实在是过大了

这意味着我们需要更宽的街道、更大的门来帮助玩家顺畅通过,但即便做的再大,也会有玩家顶着门框就是不过区,这里提供一种过门辅助的手段:过门吸附

过门辅助吸附框示意
CODM的过门辅助示意

吸附框的尺寸略大于门,确保玩家在门附近顶着墙的时候能够被吸过去,从而顺利通过窄门;

但这里需要注意的是,吸附框的宽度不宜过宽,最好需要玩家顶墙时再触发,否则玩家无法实现利用门为掩体的peek操作,刚一探头peek,人就直接被吸过去了

2.2.1.3 顶墙/顶障碍物位移相关

拐角位移案例

顶墙/顶障碍物导致的位移速度异常,往往和位移的实现方式有关

如图所示,玩家的位移方向的移动速度,会拆解成X轴和Y轴的速度来实现,在没有障碍物的情况下,X轴和Y轴的速度都是正常,玩家的移动不会有问题。

但假设玩家的位移朝向不变,此时顶住墙了,X轴提供的速度几乎归零,只有Y轴有速度时,玩家的移速就会偏慢

而且由于玩家做摇杆指向的不精准,会经常出现玩家认为自己在平行墙面移动,实际上靠墙遇到减速的情况

(如果还是没有理解这个问题,你可以现在放下手机或者站起来找一面墙,当你和墙面平行移动时,位移速度是正常的,但是当你与墙面夹角45度与墙亲密接触时,你的移动方向依然和墙面平行,但是速度会变慢不少)

和平精英顶墙处理
顶墙补偿示意

这里就需要引入优化方案:顶墙补偿

当玩家的碰撞体与墙壁/障碍物发生接触,同时玩家的朝向和墙体/障碍物的夹角达到一定阈值条件时,提供一个垂直于障碍物法线方向的距离/速度补偿,帮助玩家快速通过障碍物

2.2.2 跳跃优化

https://youtu.be/LrLHsbTK5bM?t=1904

跳跃这里,类似于平台吸附之类的概念可能已经见怪不怪了,这里贴一个《地平线:零之曙光》的分享

是一套动画驱动+程序驱动的系统

大致流程是通过记录玩家按下跳跃时的原始数据,预测跳跃轨迹,然后小幅调整速度和角度到指定落点

位移距离调整
空中转向调整
最终实现效果
  • 白色弧线:最初数值计算出的跳跃轨迹
  • 浅蓝色弧线:校正后的跳跃轨迹
  • 绿色大弧线:空中转向的调整轨迹

这一套系统,比起大家目前常用的跳跃距离固定,全靠平台上配吸附盒子强行吸到平台的设计,最大的优势是实现了动画系统的良好表现,再也没有滑步没有脚步悬空,配合Motion Matching的情况下不同跳跃距离能更有更流畅细致的动画表现

3A厂商的功力就体现在这些小小的细节上,不需要在通过各种手段做后续补偿,而保证玩家一开始的落点就是精准的

2.2.3 翻越优化

翻越补偿相关内容

翻越的实现会比较麻烦,涉及到触发距离、触发角度、障碍物高度判断/宽度判断,障碍物上方/后方是否有足量空间,障碍物本身是否可翻,翻越过程中是否能开火/转向等等细节

绝大多数手游会把跳跃键和翻越键集成为一个按键,在障碍物附近时,需要玩家和障碍物的距离和朝向角度符合标准,按钮才会从跳跃功能替换为翻越功能,如何更好的识别玩家的意图,补偿玩家的操作,主要的落脚点在于人物与障碍物的角度/距离和障碍物的判定上,同时还需要给判断失误的补偿手段

不过这样做仍然会出现一定量级的误判,如果需要更精细的操作颗粒度,推荐将跳跃和翻越拆开,彻底一劳永逸,否则补偿和补偿取消就是一个面多加水、水多加面的循环往复过程

2.2.3.1 距离补偿

距离补偿

一般来说,翻越只有在玩家顶住障碍物时才支持触发(例如PUBG端游早期),但这样的体验会是玩家快速奔跑——顶墙速度归零——播放翻越动画,感受上不连续,所以会额外做一个距离补偿,当玩家所处的位置和障碍物的距离在一定阈值内时,玩家点击跳跃键,此时播放翻越动画同时带一个向前的位移,将玩家吸附到相应的障碍物上完成翻越(如图所示)

在玩家跑动过程中可以将参数适当放大,来实现更好的跑动翻越效果

2.2.3.2 角度补偿

角度补偿

玩家在翻越时,很难像翻越的图示一样完全垂直的面向障碍物,从机制上都会做一定的角度冗余,玩家没有对准障碍物时仍然支持翻越,因为手游的操作精度更低,所以需要放大这个角度的限制

2.2.3.3 障碍物吸附

过窗/翻越吸附

这里的处理方式很像是上面提到的过门辅助,主要的应用场景是一些很小的窗户(可以理解为没有按照metrics文档的后续补救),在翻越通过某些较小的门窗、偏窄的障碍物,可以放大吸附框(即上图红框),通过吸附校正的形式,帮助玩家更准确的完成翻越

2.2.3.4 容错机制

往后拉摇杆取消翻越

在做翻越补偿的时候,我们的目标永远是帮助玩家更好的翻过去,但会忽略一个问题:如果玩家此时并不想翻,那么应该怎么处理

这个时候需要引入翻越取消的机制,常见的有翻越过程中点击跳跃键,跳跃取消翻越,或是跟CODM和PUBGM一样增加一个向后拉摇杆取消翻越

二、Camera

在我入行之前,camera是我很难理解的一个概念,很难理解是怎么工作的,现在其实也没玩明白,个人感觉这也是目前国内游戏行业和一线厂商差距最大的地方,震屏拆解虽然很抽象,但努把力大家也能做一下,可是更精致的镜头运用需要大量的影视化知识,学海无涯了属于是

在FPS游戏中,camera包含镜头本身和HUD两大部分,镜头常用到的功能大概会有三类,镜头控制(偏移、旋转、俯仰、推拉、缩放)、交互镜头/运镜演出和后处理(景深、镜头特效等),HUD我们在这里只聊和打击感有关的部分

1. 镜头

1.1 镜头控制

1.1.1 偏移、旋转与俯仰

爆炸震屏
Camera偏移、旋转、俯仰

无论看起来多复杂的屏幕震动,小到枪械检视时从上到下看枪,大到炸弹在身边爆炸,都是由镜头X/Y/Z轴的偏移/旋转曲线构成的,但每条曲线变化的频次、振幅、衰减、刚性、是否叠加随机噪波等,叠加出来的结果会千差万别

还会遇到两个问题:

  • 关键帧/小数帧对不齐:复刻某些端游表现的时候会出现,端游使用60帧动画,而自己的编辑器只有30帧,部分关键帧丢失导致效果不好
  • 引擎/编辑器曲线导入问题:3DMAX调试完毕进编辑器变成曲线,关键帧之间插值变化不可控或其他原因导致还原程度低,总觉得只是形似而神韵不在

设计上不直观+参数多+工具易用性问题,导致震屏曲线是一个很难调好的技术活,salute to 所有3D动作兄弟

开火震屏

镜头控制上需要注意的是,部分动作的镜头动画是不能叠加偏移和俯仰的,例如开火动画,因为子弹是从镜头中心射出,为了避免对子弹的弹道产生影响,开火的镜头动画只能做XY轴平面的旋转

1.1.2 推拉与缩放

武器举镜的场景FOV变化
CODM持枪FOV0&100对比

FPS游戏中会将场景FOV和武器FOV相分离,避免某些情况下调整FOV影响武器表现的问题

缩放也是通过调整FOV来实现的,通过调整场景FOV模拟出不同倍镜的放大效果,图示为举镜情况下场景FOV的变化和设置中手动调整武器FOV的变化

锁HFOV的和平精英

FOV还涉及到一个不同设备(手机/pad)的镜头显示范围规范,需要决定采用HFOV或是VFOV,个人建议是:

  • 锁定VFOV:保证不同设备上下视界一致,适用于存在大量高低差作战的游戏,避免由于屏幕比例不同获取更多高低差信息导致不平衡
  • 锁定HFOV:保证不同设备左右视界一致,适用于偏地面作战高低差有限的游戏,方形屏幕的可见区域会更多,但相对畸变更严重

也有更暴力的法子,有些游戏为了限制平板的强度,同FOV的情况下会缩小平板的视野,这个看项目组需要

跳跃过程的弹簧镜头变化

至于推拉,FPS游戏中,常规镜头没办法加摇臂,毕竟镜头模拟的是本人的视野,但有一些特殊情况下会切换,例如命运2当中的翻滚,不过这个不涉及镜头控制,更像是运镜演出了,后面会提到

图示中的镜头摇臂的推拉效果,镜头拉远再到拉近,能使整体的位移更加生动

如果要做的更极致一些,还可以叠加FOV的变化,例如warframe的速度越快FOV越大的设计

warframe的FOV与速度挂钩

1.2 交互镜头/运镜演出

纯粹的运镜演出往往是做沉浸感和场景叙事需要,举个例子:

大家最喜欢的上泰坦

还有许多经典镜头,例如荒野之息开塔,圣歌上战甲之类的,玩家按下按钮之后播放一段流畅的运镜演出(1P或者3P),能够大幅增加游戏过程中的沉浸感,这类镜头做的时候注意记录camera的状态,计算好淡入淡出时间,做好插值即可,但播放的演出镜头需要下大功夫

为了强化打击感的运镜演出,比较成功的例子是命运2处决和翻滚、COD系列的处决

命运2处决
双脚悬空的处决

顺便提一下,类似于处决、翻滚或是一些带位移的切换3P镜头的技能表演,需要考虑的除了相机位置朝向/状态,淡入/淡出时间、表演镜头本身以外,还需要额外考虑位移因素、施放过程中的打断条件、伤害上报等等边际条件

以COD的处决为例:

  • 处决的触发条件:玩家与敌方目标的位置判定,距离阈值/高度差阈值,敌方目标身后距离的限制
  • 处决过程中人物会涉及到强制位移,位移的极限距离/插值时间,状态的校验何时进行
  • 处决过程中受到伤害/震撼等是否打断处决
  • 处决过程中何时上报伤害完成击杀

游戏交互中的镜头机制:这些特殊镜头技巧与运镜方式,你了解吗?

如果对交互镜头和运镜感兴趣,还可以看看这篇文章,还列举了一些其他的应用场景

1.3 镜头处理

1.3.1 镜头遮罩

镜头遮罩是相对常见的类型,往往配合震屏一同出现,手雷爆炸、受击、技能释放之类的场景,能够清晰构造打击感和临场感,COD低血量的黑屏、WZ被打碎装甲的碎甲提示、APEX动力小子的针等等,很好用,但是很多时候提需求的时候会忘掉=。=

战地5濒死镜头遮罩

1.3.2 镜头后处理

Post-processing是一个很强大的功能集合,这里只举几个和打击感相关的实用范例

射击游戏通常会在玩家触发某种状态时,使用后处理来增强技能/状态的表现,例如英雄的技能,或是使用夜视仪和其他道具。使用后处理的同时往往会对角色进行一定的强化,例如移速加成、射速变化之类的,清晰告知玩家“你变强了”

目前国内的游戏用的还不多,大家都还在用后处理来表现功能差异,没做打击感相关的强化,也许是个突破口

APEX恶灵/动力小子/寻血猎犬都有类似设计
PUBG夜视仪效果
赛博朋克2077扫描效果

还有一些游戏开启技能后会产生弱化场景表现、高亮敌方目标之类的效果都能有效提升打击感

除了针对于关卡场景、角色做的统一处理,射击游戏中还有一类相对独特的处理形式,武器开镜开火的情况下做景深处理,模糊掉照门位置,强化准心和准心周围的目标,辅助玩家瞄准

未做景深处理(照门、准心表现清晰)
景深处理(照门模糊、准心及目标清晰)

2. HUD

hud这个词的来源是空军的头显,常见的包含屏幕上的人物状态提示、敌方状态提示、命中提示、武器状态提示、比分和地图指示等,这部分内容也相当繁杂,工作过程中除了策划,还有专业的UIUX同学一起来看

这里讨论打击感相关的hud表现,所以纯信息类的小地图、挨打的受击提示、任务指引、寻路等就不提了

2.1 准心及动效

2.1.1 准心

准心hud主要提供两个功能,协助玩家瞄准和武器状态提示

不同玩家瞄准过程中对于准心大小要求不同,点状、十字、稳定/动态等等,射击游戏发展到现在,准心自定义已经不再是什么新奇的功能

valorant准心设置面板

在状态提示上,绝大多数游戏,准心需要承担告知玩家当前枪械散发的功能,从这个目的出发:

  • 不同武器类型的准心需要有差异
  • 准心在开火过程中的表现需要有差异
最小散发和最大散发的准心对比
手炮和火箭筒的准心对比

目前我印象里还没有针对单把枪来设置准心的射击游戏,将自定义+多种类结合,会更细致(试想一下瓦罗兰特的警长可以设置圆形准心指示腰射范围=。=)

2.1.2 准心动效

涉及到打击感相关,提最常见的两类,命中反馈和弹量/换弹进度提示

2.1.2.1 命中反馈

命中反馈上,我们简单拆解下最经典的COD斜十字命中提示

命中和击杀分别为白色斜十字和红色斜十字,同时会区分普通命中和爆头

逐帧截图的斜十字准心

截图的视频是43帧/秒,总时长约0.37s,考虑到抽帧的可能,所以总时长约为0.4s,取24帧

大致看来1~8帧为缩放旋转阶段、9~16帧为保持阶段,17~24帧为淡化扩散阶段

比较有趣的是,在准心特效替换上,两代MW使用了不同的解决方案

两代MW替换方式的差异(我拆的,不保真)

特效替换方式改变,最直观的感受是MW2022的斜十字反馈更稳定,晃动表现基本由动效本身提供,不会像MW2019一样不断命中目标,动效不断从头播放,导致动效很难播完,反复在播前8帧

(但是!我之所以喜欢玩COD,不就是图打的爽么,图一个每一发命中都有即时反馈么,我觉得这个改动不行)

2.1.2.2 弹量/换弹提示

APEXM弹量提示

我们在最近几年看的弹量提示和换弹进度提醒大概是这样的,准心右下角的弧形进度条:

  • 66%以上时,显示为白色
  • 33%-66%时,显示为黄色
  • 33%以下时,显示为红色并伴随闪烁特效
  • 在换弹的过程中重播以上过程,进度条累计蓄满的时间等同于逻辑换弹时间(换弹前摇)

我印象中很早之前在育碧的游戏见过之类的进度条设计,似乎是全境封锁

进度条这个东西肯定是有比没有好,相对来说比纯粹的数字弹量提示更直观,但同时也有一个问题,即便做了换弹成功之后,进度条消失或是准心出现,整体的提示还是太弱了,玩家无法精确判断完成换弹的时间节点

换弹结束增加准心旋转提示

同组的其他策划大佬给我发过一个参考,在进度条消失基础上,同时让准心做了个动效提示,在显隐逻辑的基础上强化提示,图示这个准心旋转特效,甚至还拉了曲线的,不是插值的,真的细

2.2 命中提示

除了准心位置的命中反馈,为了进一步强化命中体验,可以新增命中跳字的设计

CODM命中跳字

CODM是比较干净的做法:

  • 从子弹的命中位置出发,确定一个终点,播一个动画;
  • 命中弱点时字号和颜色做一个差异化

会有比较复杂的做法,文字上还可以带更多信息和花样,例如:

  • 是否破甲
  • 对方带的什么甲
  • 我命中的什么部位
  • 武器属性
  • 叠加总伤害
  • 跳字的动画是否有区别/位置是否固定

项目组可以根据自己的需求来敲定

APEX跳字

2.3 击杀提示

CS1.5&CSGO击杀提示

击杀提示最早可以溯源到CS1.5时期右上角的击杀信息提示,但即便到CSGO的年代,击杀提示也没有做花活,只在信息呈现、敌我处理上做了迭代,可能是为了使屏幕足够干净保障竞技性

目前HUD上常见的击杀提示包括击杀信息、勋章、文字提示

瓦罗兰特增加了头像/底色等信息
要说瓦罗兰特没有参考过CF的勋章,我不太信
命运2日落击杀/行为提示

COD系列的击杀提示值得专门拎出来看,COD在勋章和击杀文字信息上,都做了更深一步的迭代,从单纯的击杀信息告知,升级到了玩家行为的奖励,从文字和勋章层面给足打击感

弹射黄字行为提示&角色连杀名片提示
COD:WWⅡ勋章

在不考虑画面干净程度,纯粹让玩家爽的程度来说,COD几乎利用完了屏幕的任何一个边边角角

2.4 人物信息/武器状态显示

APEXM底部状态栏

这一块内容其实比较固定,每款游戏都差不多,踩过两个坑供大家参考下:

A. UE4的UI刷新会慢一帧,意味着当前帧你点击开火,播放开火表现时,底部的UI状态栏依然显示是30发子弹,不要小看这一帧的差距,手感就是一帧两帧的差异,需要客户端做一个处理

B. UI的帧率,尽可能在引擎支持的基础上做高,提前预留好UI高帧率的性能空间。会有一些项目UI的帧率只有十几帧,开火时你发现子弹是两发三发这样扣的,给人的感觉很差

还有一个不算是坑了,算是个人建议:

尽量不要做帧数太长的UI特效

例如某些从左到右刷新的光效,或者从点击位置向四周扩散的光效,这类光效时间长了,玩家根本不清楚自己的点击是否生效,何时生效,最后的体验就是卡手,APEXM换弹子弹刷的这一下就很舒服,速度合适

2.5 血条

血条涉及到两块内容:显隐逻辑和增减表现

2.5.1 显隐逻辑

一般来说,血条的显隐由以下三个因素决定:

  • 枪械朝向的射线是否和敌方胶囊体重合,不建议用mesh做判断,不然会有各种咯吱窝和胯下不显示血条问题
  • 近期是否对该目标造成了伤害
  • 目标是否在视野范围内

在此基础上,再去定血条出现和消失的表现,射线经过的残留逻辑,受伤害的残留逻辑就行

预期是玩家扫过/对某个目标造成了伤害,只要在视野范围内,就能及时显示血条

(把血条揭示距离作为属性卖的,真的值得枪毙,哦他下一代没血条了,那没事了)

2.5.2 增减表现

增减表现更多和UI帧率、服务器伤害下发速度、客户端能不能做预表现有关系

我接触到的主要卡点是,服务器下发伤害包的速度很慢,依赖于服务器伤害校验的血条、命中跳字等都有延迟,处理起来很麻烦,还在想办法

核心诉求是保证玩家持续命中时,血条的下降是即时且流畅的,至于动效做成什么样,要看UIUX爹怎么发挥

泰坦陨落2血条表现

帧率高,表现好,我梦中的血条,泰坦陨落2永远滴神

三、Character

1. 一些动作标准与规范

1.1 静态idle/pose

1.1.1 枪械大小(绝对大小与屏占比)

在真正遇到这个问题之前,我也不觉得武器大小这件事到底有多复杂,看起来就是一个模型放大和缩小的问题,后来发现原来大家的标准都相对模糊

MP5与MP5射手步枪

在写实框架体系中的CODM也会出现商业化武器的模型大小不好控制的问题,那么在一些科幻题材,缺少现实参考的项目当中,这种问题只会更加严重

关于模型的绝对大小,提供两个解决思路:

A.基于现实尺寸做标准

写实类的产品是可以这样做的,编辑器内人物的高度是确定的,现实当中枪械的尺寸也是固定,对比长宽高做正确的放缩难度并不大;针对商业化的改模资源,确认主体机匣的大小不变,枪管、弹匣、枪托的位置可以在保证比例不失调的情况一定程度发挥

机匣主体的大小是相近的

上图两把枪机匣的大小仍然是接近的,但是枪托、枪管、弹匣的大小就偏大太多,枪托比机匣都大,问题根源看下来其实是改模枪各部位比例不合理

B.固定某个部件的大小做标准

在写实体系下,我们可以很好的找到参考,但如果到一些科幻风格,要大、要粗、要猛,这个时候如何来确定武器的大小

思路是动作同学提的,我们可以统一枪械某个部件的大小,例如固定宽度的导轨、固定大小的小型核反应炉或者电流产生装置,当这些部件大小统一、枪械比例正确的情况下,能够将武器模型大小限制在一定区间内

皮卡汀尼导轨

以导轨为例,导轨的宽度固定,那么这把枪在原画层面给了多长的导轨,就能确保确定枪械大概多长多宽,不至于随意放缩导致大小无法确定

除了武器的绝对大小,屏占比也一样重要

观察COD系列的历代产品,能总结出一个屏幕四分法的概念,一般来说,武器Idle的Pose位置会固定在右下分区,部分体积极大的武器会小幅辐射到左下分区,尽力避免侵占到右上分区影响玩家观察目标

COD18&COD19枪械屏占比
COD16 M4A1装镜前后pose位置对比

第二张图会更明显,装上准镜之后,枪械的位置还整体向下压了一段距离,看我框出来红框的位置会比较明显

这个四分区的标准还是比较通用,可以看到连doom这类追求粗、大、吊的游戏都在使用这个原则

Doom Enternal

1.1.2 枪械指向

枪械需要指向准心(通常为屏幕中心)位置

需要注意武器的摆放角度,还有对不齐的情况可能是1P镜头和场景镜头有角度偏差

GDC2015 命运的演示中,即使武器没有指向屏幕中心,仍然指向画面中的准心位置
MW M4A1指向
CFM M4

CFM看起来指向稍微没有那么精准,应该是为了美术表现做的一定妥协,这样摆侧面的细节看的更多些,但是持枪的姿势就会感觉不是特别舒服

1.2 视野遮挡

动态中主要关注点是视野遮挡问题

Destiny 中心视野保证

玩家战斗的关注点是以准心为轴的圆,左上角的图为需要保证的最小面积

局内战斗相关的动画,包括位移、技能、近战、换弹、切枪等,都需要保证这个最小面积不被覆盖,开阔的面积越大,动画播放时的安全感越足

但这个标准是不是必须要遵守呢,有请2077

将屏幕中心遮挡的严严实实的手枪换弹

可以看到2077并没有这个标准,把屏幕中心挡的严严实实,一切为了强化表现

PVE游戏对于视野的遮挡的要求也许没有PVP游戏那么严格,但是从策划的角度出发,我仍然希望项目初期制定动作标准时,能够把中心位置的视野空出来,这是一个底线,范围留多大,可以和动作同学讨论

但如果这里不坚持,那么后续出现遮挡半边屏幕的换弹动作出现时,自己会很被动

1.3 动画切分

动画前摇时间和后摇时间的概念,在数值篇里讲过一遍,当时是针对换弹来描述的

  • 前摇时间:从玩家开始换弹,到子弹数量变化为30的时间,这个时间走完后视为换弹成功
  • 后摇时间:剩余的动画表现时间,此时玩家可以打断动画,换弹仍然视为成功
MW换弹

因为我一直做射击,没有ACT方向的经验,所以最初我只觉得换弹是有必要的,其他动作让美术同学根据我给的时间严格来卡就行

换项目之后发现,这个策划数值上的需求和美术对表现上的需求,二者在很多场景都是有冲突的,除了换弹,切枪、开镜都有类似的问题,动画要20帧才好看,但数值上只给了15帧,寻求统一解决的方式就是允许打断,给美术同学5帧的后摇时间做表现

是一种“在紧急的情况下追求功能优先,在平常环境下追求美学优先”的默契

动画切分在实现方式上会有一个踩坑点:

有一种实现方案是美术主动将动画切成两段,然后分别配置,这种情况会导致美术资源被压缩两遍,最终的表现跟3Dmax差距很大,所以推荐的方式是美术整段动画导入,客户端去打一个标签,确定动画播到标签位置,动画少压缩一次,效果会好很多

2. 一些动作实例踩坑点/拆解

下面只列了很小的一部分,至于跳跃、翻越、滑铲、走墙、滑索、钩索、检视之类的内容,很难用踩坑或者拆解来描述,每一次制作都是艰苦奋战,因为没有万能的解决思路,需要具体问题具体分析

2.1 奔跑动画

2.1.1 帧数标准

奔跑动画建议固定帧数标准,确定好一个摆臂循环的标准帧数

不确定标准会有一个问题:奔跑摆臂速度和实际移动速度不一致,且表现不可控

例如美术认为冲锋枪跑的快,摆臂给15帧,机枪跑得慢,摆臂给20帧,但实际数值上配置的移速差异并没有这么大,如果机枪还有些百分比减移速的配件,反馈到动画层面,那么就更夸张,奔跑起来动作会像是在慢放

确保帧数一致后,武器不同移速下的奔跑表现区间是确定的

(这里其实可以讨论一个数值问题,叫做“不同武器的移动速度属性,是否需要做差异化”,这其实是PVP游戏中常用的一个数值维度,但我目前做下来会觉得感知并不够明显,当感知明显的时候,数值上就已经出问题了,可以看到目前许多游戏都在逐渐收回这块数值,从枪与枪移速不同收拢成枪系之间移速不同,甚至移速一致

个人觉得除了硬核PVP游戏,这个属性其实没有太大必要保留,否则处理其表现来很麻烦,root motion之类的位移方案也很难应用)

2.1.2 动作过渡

奔跑过程中最常衔接的动作是举镜和开火,这些动作衔接过程中融合表现需要处理

数值上,需要留够奔跑到开镜/开火的过度时间,避免开火穿帮

枪口朝左开火,子弹却射向屏幕中心

表现上,需要支持更自然的过度方式或是提前融合,跑动 → 举镜,而不是 跑动 → idle → 举镜

奔跑举镜过程中明显的先往右,再往左拉完成举镜,表现不够干脆

2.2 枪摆动画

枪摆动画这一块主要拼品质,简单聊一下动画的构成

我们在讨论枪摆的时候,会去掉镜头的影响,如果有分不清gunkick和viewkick的同学

可以看这篇文章,视频案例很清晰(十年前的文章,都包浆了)

https://denkirson.proboards.com/thread/5906

BFV枪摆的叠加(应该不是全部)
一种枪摆分类形式

武器开火/转向的枪摆表现是由多个动画或是程序逻辑共同叠加组成的

我倾向于分成两类,一类是基于模型坐标系的旋转和偏移,一类是基于某个固定轴点的旋转

当然也可以分成程序控制的枪摆,和动画做的资源,但细项都是差不多的

这边会以腰射开火为案例,简单列一些常用的动画

2.2.1 基于模型坐标系的旋转和位移

开火抖动

开火抖动:快速的小幅上下位移,模拟武器开火时的基础抖动,程序拉曲线来调

细致一些的做法可以再进一步考虑武器开火和停火时的抖动表现,例如增加枪口的上扬/回正,或是增加枪身的旋转,参考上面战地五的例子

武器开火的前后位移动画+抖动

前后位移:这是玩家广泛认知中的后坐力,一般靠动画出,几个需要考虑的点:

  • 动画是做纯粹的后退,还是加小幅的旋转,开镜状态下加了偏移是否影响瞄准
  • 后退动画和回正动画的关系,是播放两段不同的动画,还是可以直接反播或插值回去
  • 单发动画和连发动画的区别,是靠单发动画叠加,处理回正幅度实现连发差异,还是连续开火播放一段新的动画

至于动画怎么K更舒服更好看,这个只能看动作师傅的手艺了

武器开火的偏移+抖动

左右/上下位移:模拟开火过程中与后坐力对抗,转向/跳跃时的枪械偏移等各种控制武器的表现,动画出或者程序拉曲线都行

不过开火的这条曲线最好根据武器做差异化,提供配置选项或者重新上新的曲线,做通用的话一些更笨重,甚至是带脚架的枪也这么压,会有些轻飘飘的

2.2.2 基于固定轴点的旋转

瓦罗兰特枪摆

武器开火的过程中由于有散发的存在,我们可以给模型一个旋转偏移量,使其枪口位置和散发方向一致

但是这个旋转需要注意两点:

1.幅度限制:由于子弹和镜头的偏移量可能很大,所以需要给参数限制,确保方向一致即可,不需要和子弹偏移量完全一致,否则你会得到一把旋风冲锋龙卷风

2.轴点选择:之前的枪摆因为以位移为主,所以我没有强调过轴点的选择,这里做枪口偏移时,建议新增一个旋转轴点,建议以枪托抵肩点为轴,这样枪械摆动起来的角度变化会更自然

2.3 换弹动画

之前已经反复讲了换弹动画的切分,空仓换弹与普通换弹的区别,但是在目前这个拼内卷的阶段,只做这些是远远不够的,提供一些可以精进的细节:

换弹与弹链细节
  • 根据武器状态的多套换弹动画:例如98k装镜情况下对弹仓的遮挡/假装快手perk后换弹速度的变化
  • 武器的子弹细节:除了换弹过程本身,换弹前后的武器状态对比也能强化表现力,例如清晰显示弹链中子弹数量
  • 1P/3P视角换弹的精准同步:3P不使用通用换弹动画,而是和1P一致,参考视频:

https://www.bilibili.com/video/BV1HR4y1N7xS?share_source=copy_web&vd_source=fc61d83944a4020b04775afa12f60a0d

2.4 收/拿枪动画

R90装备动画

还是之前数值篇的时候提到过的,要不要同时做equip和unequip两种表现

我的看法依然是除了写实游戏,尽量避免做uneuip动画,收枪这个概念就很不干脆,即便做了也需要压缩收枪的时间,尽量减短对于手感的影响;从数值层面考虑,即便要作数值限制,也可以延长equip的时间,把表现做的更强更充分

2.5 开镜/关镜动画

2.5.1 开关镜方案

开关镜常用的两个方案分别是模型切换和光瞳

切模型开镜
光瞳开镜

切模型开镜:在开镜过程中的某个节点进行模型切换,替换更高的精度的准镜模型,开启镜内视野,同时隐藏枪械的部分位置避免遮挡或者穿帮

光瞳开镜:开镜过程中不切换模型,准心模型和现实一致持续显示镜内视野,在开镜的过程中模拟入瞳和出瞳的表现

从视觉效果上来看,绝大多数玩家都更喜欢光瞳开镜效果,开/关镜过程更流畅,没有卡顿感,缺点是由于模型没有切换,开镜状态下准镜的精度不高

但这世间真的没有两全的法子了吗?一定是有的

如果我们按照光瞳的标准制作视野没有遮挡的枪械模型,同时将模型切换的时间提前,从开镜那一刻就完成模型切换,是不是就可以解决这个问题

2077狙击枪开镜

2077就在开镜的瞬间在准镜位置叠加了资源,丰富了表现

只不过模型精度已经很高了,所以开镜过程没有做切换更高精度的模型,一定程度上证明了这个思路的可行性

2.5.2 状态机规划

举镜开火/腰射开火无缝切换

开镜相关的状态既需要跟人物的站蹲趴移动同时进行,也需要跟武器相关的开火、换弹、拉栓同时进行

状态机的设计需要满足这两个条件,需要跟客户端沟通是单独起一层,还是做更细致的拆分,例如开镜移动做到base层,开镜开火做到fire层之类的

需要提前用3C排查表之类的东西想明白,否则后面不好改

3.音频

音效是一个专业程度很深的领域,很依赖音频策划的水平,他对游戏玩法的认知,细节的拆解,风格的把控会决定项目的音频质量

这个会比较赌运气,如果音频同学游戏理解很深,那么合作起来会很愉快,如果音频同学不怎么玩游戏,细节上覆盖不全面,那么就需要战斗策划掌握音频相关的概念和基础常识,为版本质量兜底

这里主要分享一些基础概念,同时提一些打击感优化上容易遗漏的点

3.1 游戏音频的基础概念

了解清楚关于音频的基础概念,知道自己想要的是什么,目前缺失的是什么,才能跟音频策划做有效交流

这里用通俗的语言做简单解释,更深层次的含义和应用建议移步你们组的音频策划处

  • 音频事件/节点:

音频的播放一定建立在某种事件或是节点之上,例如按下开火播放开火音效,按下快慢机播放快慢机切换音效,换弹过程中中拔下弹匣、插入弹匣、插稳弹匣播放不同的音效

https://youtu.be/BGtLmi8YQPw?t=930

这一段M13换弹的音效包含了许多细节,拔下弹匣、弹匣与弹仓摩擦,插入弹匣,可以是客户端打时间戳在指定时间播放特定音效(打时间戳的好处时即便是实际动画会拉伸,但音频始终是对齐的),也可以音频根据动画表现输出一整段完全对应的音频

  • 音频类型:

从制作的角度出发可以分为下面几类

音乐(例如BGM、主题音乐)

音效(包含电子音效和拟声音效,例如UI点击、枪械开火、人物受击等)

语音(角色语音、对白)

环境(战场、街区、天气的音效)

  • 播放方式

单次播放/循环播放,这里需要去细致感受差异,同样一段音效用不同的处理方式都可以实现

例如连续开火的音频,可以是不断的播放单次开火音效,做首枪强化和尾音处理,也可以玩家持续开火的情况下循环播放一段更长的loop音效,这段音效里是连续X发开火的音效

  • 音效叠加/音效层级:

音效叠加有两层和微观两层含义:

宏观:我们在听到某种声音时,这是由多个声音叠加同时播放构成的,例如开火命中腿部时听到的音效,是由环境音效、武器开火和命中反馈音效组成的。

微观:以武器开火音效为例,这个音效同时也是多个资源叠加组成的,一般包括武器主体枪声、模拟武器内部组件碰撞的金属层、模拟枪口爆破冲击和抵肩表现的低音层、模拟子弹在当前空间飞行的尾音

这一部分内容很重要,遇到具体问题或是设计时,战斗策划需要明白自己想要的是什么音效,这个音效由哪些层级组成,或是这个表现是因为确实什么层级的音效,哪部分音效没播导致的,对具体音频素材构成完全把握,才能和音频策划有效交流

你搁着张口闭口就是“不够丰富”“打击感不足”“不高级”,那没有几个音频哥愿意心平气和跟你交流

  • 空间混响:

混响的概念和声场有关,不同的声场环境下,听到的声音效果是不同的(浴室唱歌效果好的原理)

简单来说就是玩家在游戏各个场景(空旷场地、室内)发出声音,音效需要做对应的处理,

  • 音效衰减:

3D音效存在传播范围,距离越远声音越小,需要设定音效的传播范围和衰减逻辑

  • 音效遮蔽:

3D音效在空间内传播时,透过障碍物会产生衰减,游戏内需要进行还原,尤其是FPS游戏,帮助玩家辨识脚步来自于楼上、楼下,亦或是转角后方

3.2 音频的打击感优化思路

我们接到打击感不足的课题时,有两种处理方式,

一种是从60分到80分,直接提升音效品质,同时推动客户端优化性能,释放更多的内存空间给音频

还有一种是0到60分,去增加音效的丰富度,强化音效的细节,我们主要聊这个

3.2.1 常见音效精细化

以前整理的CODMW和APEX的命中反馈/击杀录屏

我们以命中反馈为例,

首先是对于音效目标的拆解,不同目标下对音效质量要求是不一致的

最基础的目标:告知玩家他打中了

更高级的目标:清楚告知玩家自己的武器状态、命中状态、敌方目标状态,创造良好反馈

命中反馈条件拆解示例

将这些条件做组合,那么我们就能把单一的命中反馈音效,延展成了2*2*2*3=24种,再去考虑信息重要程度和玩家理解成本,例如命中头部不区分护甲状态,这样缩减资源数量,实现命中目标时获得丰富的反馈效果

3.2.2 高光时刻创造记忆点

俺最喜欢的音乐盒

从CSGO的音乐盒、COD无畏战士的BGM,再到OW的全场最佳音乐,valorant一杀到五杀的渐进式击杀音效,打击感既来自于每一颗子弹扎实的细节,更来自于玩家战斗过程中的高光体验

找到自己项目的高光时刻,用音效/音乐强化这个时刻,给玩家留下深刻印象

这也是打击感优化中性价比很高的部分

3.3 音频的优先级规划

坦白说这是我一直想推进,但是进度十分缓慢的部分,上线项目资源太多太杂,积重难返无法梳理,研发中的项目还在搞核心循环,优先级顶不上去

不过我觉得这一块真的很重要,目前暂时也没看到国内有项目吃透了这部分内容,把优先级和局内玩法结合的特别好,或者规则很清晰,大家都是凭感觉调调响度就糊弄过去了,谁先做好谁先降维打击

什么是音频优先级?

即多个音效同时播放时:

1.以什么样的规则来控制这些音效的优先级,假设只有5个通道,那么优先播哪5个?裁掉哪些?

2.以什么样的规则来控制响度,多个音效播放时,谁的响度更大谁的响度更小?

3.以什么样的规则来处理条件变化,当玩家保持移动,距离音源位置持续变化时,当场景内需要播放新的音效时,这些音效的响度、通道占用如何刷新

需要一套完整的规则来解决这些问题,例如按照音频的功能性,从高到低进行优先级排列

避免音频在局内乱播,天天收到一些爆炸声把脚步声盖了,开火把拆包声盖了之类的BUG,修复方式就是把这个调大把那个调小,很不优雅

守望先锋的音效威胁值思路

我自己的方案就不拿出来献丑了,分享一个守望先锋的思路,围绕着威胁值的变化做音效的调整,

核心诉求:玩家优先听到对战斗影响最大的音效

这一套要求局内做大量的条件上报,很有限,但是比较麻烦

https://youtu.be/60P0hzTTJ4Q

完整的GDC演讲链接,给了一些不错的参考方案和工具呈现,我参考这个提了一些局内音频响度、通道占用的监控工具的需求,修BUG很好用

4.特效

4.1同屏特效数量限制/特效优先级及LOD设计

特效模块就一个东西(主要是写累了)

很多人都会下意识觉得,打击感不够那咱么就疯狂的加特效、提升特效表现,这句话本身也没错,确实有用

放在射击游戏里就是去做弹线、弹孔、爆炸、不同材质的命中,甚至还可以做点断肢,头被打飞之类的东西

但是特效的增加需要一个全局的方案:同屏最大数量,不同lod特效的数量限制,特效停留时间,是否有提前退出机制等

特效/表现糊脸

命运2的特效除了这种极少数情况,例如碎盾时大面积的屏幕遮罩加上怪物的投掷道具特效糊脸

基本做到了特效表现好的同时,效果都相对克制,不会出现满屏花花绿绿啥都看不清的情况

主要手段是依靠限制怪物的攻击频次、控制特效的残留时间、以及大量使用边缘动态模糊

王者荣耀 21年5月的表现

这时候再看王者的例子,虽然镜头本身没有特效,但是技能特效多的时候也会出现看不清技能的问题

解决这个问题除了限制同屏特效数量以外

还可以和上文提到的音频一样,给特效也赋予优先级,同时做更精细的lod分级

当同屏数量超过X个时,高优先级的特效播放完整,中低优先级的特效播放低LOD版本

结语

几件事促成自己相对开放的写这篇分享

九月底的时候玩了网易的新游《blood strike》,抄的真的挺像的,我发现原来做表现,只要用力卷,大家都能做个八九不离十,但可惜局内真的不是很好玩,手感也不是特别好

看完边缘行者回去玩2077,突然发现原来2077的枪做的很不错,只不过当时并没有在意表现,只在关注数值、关注义肢、关注怎么把夜之城烧成灰

MW2022开测了,枪的表现发挥稳定,但是玩起来,3C/数值/系统一起结合一下,这个MP模式真的是这几年测试中最垃圾的一代

公司内部一些研发中产品的体验,发现可能版本连速度加速灵敏度都没调好,但用人家给的固定速度的版本跑下来,似乎差别也没有那么大

再看最近几年立项的射击游戏,饼一个比一个大,玩法包罗万象,武器作为众多游戏元素中的一个组件,枪械本身的占比是在持续下降的,可能连3C都不再重点为武器服务

于是我有些悲观,会觉得对于这些年立项的游戏而言,也许枪并不是很重要,枪械品质过硬只是一个nice to have的选项,游戏的玩法是否有趣,才是项目生死存亡的关键

好处是,武器策划压力会小一些,有更多的精力去钻研表现钻研效果(虽然可能没有开发人力)

坏处是,这种更复杂宏大的玩法框架下,关注武器的表现的玩家并不多,武器模块搞半天,可能压根没人看

国内的战斗/枪械/3C这一块的积累和一线厂差距很大,像是上面提到的跳跃定位方案,那是2017年的GDC,守望先锋的音频设计分享,那是2016的GDC,这些厂商五六年前的东西,我们至今都还没有摸清楚,我们还在反复的造轮子,造一些勉强能跑的轮子,刚跑起来可能就去其他地方再造个一模一样的轮子

前景也并不乐观

谈工期,内容量翻几倍,做资产都有压力,还要去磨表现

谈人才,各家厂商都招了很多3A大厂的海归,似乎也都没有太大的帮助,看不到太多方案共享和技术开源

一方面是差距很大,追赶很困难

一方面是确实性价比不高,必须先看其他模块

难免有一种无力感

所以没什么好藏着掖着的,国内策划自力更生的年代,能力提升更需要互相帮助

做类似东西的时候翻翻这一篇,少踩坑省点时间,去验证一些更重要的内容,多好

毕业生看完入行少走一些弯路,更好

做游戏还是得有些理想主义情怀

自驱、进取、沉淀

然后做个大的

“V,无名小卒,还是扬名立万?”

来源:知乎 www.zhihu.com

作者:Minke

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载