二、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的处决为例:
- 处决的触发条件:玩家与敌方目标的位置判定,距离阈值/高度差阈值,敌方目标身后距离的限制
- 处决过程中人物会涉及到强制位移,位移的极限距离/插值时间,状态的校验何时进行
- 处决过程中受到伤害/震撼等是否打断处决
- 处决过程中何时上报伤害完成击杀
游戏交互中的镜头机制:这些特殊镜头技巧与运镜方式,你了解吗?
mp.weixin.qq.com/s/0QMuHjZgQot6dp6ZqzhTzA
如果对交互镜头和运镜感兴趣,还可以看看这篇文章,还列举了一些其他的应用场景。
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永远滴神。
热门跟贴