FPS游戏中的后坐力浅谈

晓枪 2025-01-13 10:42:31

今天我们来稍微讲一下FPS游戏里的后坐力,首先要提的一点是,众所周知,FPS游戏里玩家操控的第一人称角色,通常都是手+摄像机,有些游戏会加再个下半身,很少有游戏搞一个完整的身体给第一人称。

(说到这里,我曾经以为光环是有完整身体的,因为能看见腿。直到大四的时候和朋友联机,因为网络卡顿而看见……第一人称那两条腿的上方是空的。嗯,倒是有个髋连着两条腿,但是从腰开始到躯干没有模型。很可惜当时没截屏。)

这样一来想在游戏中实现后坐力效果,主要考虑玩家摄像机的晃动和角色手部的动作就行了,比较省事。

△ 比如叛乱,就没有第一人称脚部模型

△ 使命召唤19就可以看见两条腿

但正因为省事,使得游戏里的后坐力与现实中差别很大。现实中开一枪,不仅可以看到枪口火光,还会感受到枪托压着肩膀,带动你的整个身体在扭转、运动,以及枪声震撼你的耳朵,如果打的子弹加了很多缓燃剂,你还能闻到股臭味。

可以这么说,现实引擎考虑的特别多,声学的、光学的、触觉的、力学的应有尽有,但游戏引擎嘛……连脚都没有,就不要追求太多了。如果玩的是主机游戏,你可以感觉到手柄震了震。PC的话……除了视觉效果啥也没有。什么你说游戏声音?真按现实标准做,不说设备,玩家那听声辩位的耳朵还要不要了。

现实开枪总或多或少的对射手感官有一些负面影响。游戏则不能去选择去还原这些。

传统上,FPS类游戏的后坐力都是将视觉表现和数值计算拆开的。开火时枪和手的抖动,就是纯表现效果,抖得再厉害也不一定完全打不中人(毕竟FPS游戏的子弹通常都是从摄像机里打出去的,枪抖,关我弹道什么事)。

△ 光环的BR,黄圈中所示的子弹尾迹,如果从枪口发出是没有这么明显的,实际上子弹是从摄像机射出,而尾迹的特效则从枪口开始

所以,为了得到更“爽”的开火反馈,有些开发者会通过将这些差距全变成视觉效果的方式,塞进后坐力反馈里去。

也就是说,动画师只需要保证怎么让枪和手抖得带感就行了,而其他人要考虑的就。

如果要详细说说后坐力系统的处理逻辑,大致可以分为4个部分。

1. Spread。即发射当前子弹时的随机散布值。前文提到,游戏中枪的抖动只是纯视觉效果,为了符合枪抖得越厉害子弹散布越大的直觉,Spread值要将各种因素造成的影响都计算在内。即:虽然子弹都是从摄像机射出,但跑动、连续开火的时候,Sperad值变大,子弹越不容易打中目标。

2. View Kick。即开火后摄像机的上跳(旋转)。开火时摄像机往上跳(向上旋转),玩家就需要通过压枪,把摄像机压下来(向下旋转),以保证准星能一直对准目标。

以上两条是程序控制。

3. Gun Kick.即开火后枪和手的抖动。一般这个抖动会做成角色动画,动画师会做多个动画,开火时随机选择一个播放,以防每次开火枪抖得轨迹都一样。

4. Visual Recoil。即开火后镜头的晃动。与View Kick不同的是,Visual Recoil不会影响子弹射出时的方向,单纯就是屏幕自己在那震。

这条路的代表是COD,比如COD16用机瞄的时候可以感觉到枪抖得厉害,但还是能打到人,哈拉少。这就是策划控制了Spread和View Kick的参数,使玩家可以比较好的控制。而美术强化了视觉效果。

除此之外,COD16在程序上也做了一些细节。在很久以前我和同事对COD16进行竞品分析的时候发现:如果使用机械瞄具,开火时照门可能会乱抖乱晃,但准星都保持在屏幕中心,这样枪的抖动不太会影响玩家瞄准。他们可能是在开火时每帧计算准星与屏幕中心位置的偏移量,再将偏移量从屏幕空间转换出来(可能是角色的相对空间,也可能是世界场景空间),用转换后的偏移量来把枪(连带着准星)挪到屏幕中心。

当然还有别的路,比如给数值计算加点料,强调一下射击的不可控性之类的,就像squad那样。但这些都是有一定规模的开发组,有经验丰富的动画师或者战斗策划的条件下,进行的开发。而各种小体量游戏或者独立游戏如果没有足够的人员,通常就会选择...抄,没办法条件有限的嘛。而鉴于传统方案又方便又有很多游戏使用,导致其它方案都属于小众方案。

综上所述,游戏和现实中,枪械的反馈逻辑是完全不同的。尽管游戏也形成了模拟枪械使用感受的思路,但游戏与现实之间的差异实在太大,不是游戏人员再苦一苦就能解决的。也正因如此,游戏和现实中的枪械差异才特别大

0 阅读:1
晓枪

晓枪

欢迎大家关注,给我点赞!