电子玩乐
首发于电子玩乐
CSGO深度教学2——弹道机制与控枪

CSGO深度教学2——弹道机制与控枪

原文首发在完美世界CSGO官方微信公众号,转发请注明出处和作者。

在第一期介绍了Hitbox和子弹击中Hitbox后的伤害机制,第二期将要介绍的是如何在更短的时间内使更多的子弹命中敌人,也就是怎样提高枪法的理论依据。

弹道机制

首先谈一下子弹“飞行”的机制,我们在此称之为弹道机制。至于为什么“飞行”加引号,是因为大部分FPS类型游戏的子弹(Bullet)机制都是函数型,子弹并非实体而仅仅是一个空间直线函数。也就是在武器击发的瞬间,游戏引擎和服务器会将当时的状态参数带入进一个函数公式,生成子弹的运行轨迹,这个轨迹一般为直线,而这条直线如果与Hitbox重合,则判定为命中。这个过程是瞬发的,也就是说子弹是瞬间完成整条轨迹,因此并不用花费时间在空中“飞行”。

从这个图片可以看出子弹命中Hitbox的轨迹是一条条直线(红色

CS系列游戏也遵循这样一个典型的弹道机制,CS:GO中影响子弹飞行轨迹最关键的两个因素就是后坐力(Recoil)和随机散布(Inaccuracy),本文将通过介绍这两个概念和其相关的机制,从理论上解释子弹是如何“飞行”的。最终可以从中总结出怎样将尽量抵消和减轻Recoil和Inaccuracy的影响的理论方法,达到使扫射更密集的目的。同时通过介绍扫射时子弹命中的样式图形“Spray Pattern”来具体阐述大家应该怎样去控枪。这也是各位玩家成为进阶选手的必修理论课。(为了与国外习惯名称对接,下文这几个概念直接使用英文名称)

后坐力Recoil

下面这个动图是在鼠标保持不动(准星固定)的情况下,左键不松手AK连续击发30发的弹着点轨迹示意图。可以从图中看出,在后坐力(Recoil)的影响下,子弹先基本垂直的向上弹跳,然后转向左上方,最后保持在基本水平的一个区域内来回摆动。而且,除了前一两发子弹外,弹着点基本上与准星位置是不同的。扫射时,子弹命中的位置主要跟准星指向相关,同时也很小程度的受人的视角的影响,而基本上所有子弹的弹着点都在你的准星上方。

AK扫射弹着点轨迹

因为弹着点都在准星上方,所以很自然的,即使是新手也会在扫射的时候向下压枪,即把准星压向敌人的下方,来尽量抵消后坐力导致的子弹上跳。而职业选手和高玩控枪可以一直持续到水平摆动阶段,也就是保证连续将十几发甚至30发子弹都控制在一个密集的区域,这样可以使更多的子弹命中瞄准的区域和目标。而每一把武器后坐力导致的子弹弹跳模式(Recoil Pattern,游戏中参数为Recoilseed)是绝对始终一致的,即每一次扫射子弹的上跳的弹着点都会遵循这个特定的轨迹,不会产生变化,这也是可以通过反复练习来达到精准控枪扫射的前提。例如M4A4和M4A1的Recoilseed编号均为38965,但由于下文所提到的Inaccuracy的影响稍微不同,导致两把武器的扫射弹道看起来是不同的。

子弹随机散布Inaccuracy

以静止站立不动时单发定点射击来举例说明Inaccuracy的机制,这个机制与现实中枪械是相同的。以静止单发定点射击为例说明,理论上子弹是会直线飞往准星中心,但受Inaccuracy影响,在水平轴X轴和垂直轴Y轴上会产生随机的一个偏差(Spread),导致子弹不会命中准星中心。在下图中,笔者使用SCAR20在站立不开镜、准星不动的情况下进行单发射击,这时该武器的Inaccuracy为25.80,处于较高水平,最终开镜观察弹着点分布,可见子弹基本上都散布在中心周围较大的一个圆形区域内(图左);而在同一位置开双倍镜射击,此时的Inaccuracy为2.00,十发子弹的弹着点基本上为同一个点(图右)。通过对比就可以直观的得出Inaccuracy对弹着点的影响方式和程度。

Inaccuracy对单发定点射击影响示意图

同理,在扫射时,子弹命中位置是受Recoil Pattern函数计算出的所应命中的位置基础之上再叠加一个随机偏差(Inaccuracy影响)。这也就是虽然每一把武器的Recoil Pattern在每一次扫射时都是固定的,但每次定点扫射三十发的弹着点都稍微有些不同的原因所在。2016年8月4日,CS:GO进行了一次更新,将扫射时的Inaccuracy变化机制做了一些修改,目前在扫射的前几发,Inaccuracy递增较小,子弹基本垂直上跳;而在几发后,其Inaccuracy递增至最大值,这时的散布较以前更大。这次更新鼓励了短点射、5-6发扫射等技术,跪地三十发控枪的打法受到了一定程度的削弱。

连续三次AK扫射中,可见弹着点分布受Inaccuracy影响是不同的

另外,同一把武器Inaccuracy数值受人物姿态影响,数值为蹲伏小于站立,站立小于跑动,跑动小于跳跃。也就是说站立或者蹲下扫射要比跑打准确的多,这个机制是在对枪时必须考虑的因素,要选择自己适合的姿态来平衡精准度和被击中的风险,同时练习好急停射击。在蹲伏和站立状态下也更好进行扫射控枪。

扫射图形Spray Patterns

我们可以通过MOD的方式来人为将Inaccuracy设置为0,这时候定点扫射的图形(Pattern)就是完全仅受Recoil影响而不受Inaccuracy影响的理论图形,我们称之为Spray Pattern。上文已经讲过,每一种武器的Spray pattern都是固定不变的。我们可以通过学习这个Spray Pattern来分析武器的子弹分布模式。

下图为AK和M4A4的Spray Pattern,可见两者非常类似,都是先垂直上跳,然后偏向左方,最终在一个水平区域内来回摆动。但M4A4的精度明显高于AK,其散布相对较为集中。


动图:AK Spray Pattern


动图:M4A4 Spray Pattern

同时,扫射图形基本只适用于分析全自动武器(即按住左键可以连发的武器),半自动武器(即每一发都需要单击左键,例如手枪)的Spray pattern机制与全自动武器稍有不同,其spray pattern并不是固定不变的,而是每一次稍带随机性。

如何控枪Spray Control

现在我们已经了解了Recoil、Inaccuracy、Spray Pattern等理论知识,现在就可以依据这些信息来研究控枪的方法,来尽量抵消Recoil和Inaccuracy因素的影响,将扫射的子弹控制得更密集。首先下图说明了单纯垂直压枪对弹道的影响(剔除了水平方向的Inaccuracy影响),即前几发可以控制在一个点,而子弹进入水平晃动阶段后就整体失控了,不能达到控枪的效果。


AK垂直压枪弹道轨迹


M4A4垂直压枪弹道轨迹

因此要实现多发的控枪,除了垂直方向的压枪之外,必须还要结合水平方向的修正,才能保证30发都能集中命中目标。这时候的控枪准星轨迹就是一条曲线,可以抵消子弹的上跳。下图为理论上的AK和M4A4压枪轨迹,如果按照这条曲线路径和准星移动速度进行压枪,可以将弹着点控制在相当密集的区域内。玩家可以通过按照这条轨迹不断练习,将控枪提高到相当高的水平。


AK完美控枪曲线


M4A4完美控枪曲线

玩家可以到下面的网址查看各个枪械的控枪曲线:

CS:GO Recoil Compensation by twowordbird

另外要说的是,CS:GO的弹道机制实际上比本文所介绍的复杂的多,弹道的函数中包括几十个参数,其中每一个都会影响到这发子弹的轨迹。本文只是建立了一个CS:GO弹道机制原理性的示意性模型,但已经足以阐述清楚弹道机制是怎样运作的。至于每一个参数具体的作用及数值,感兴趣的玩家可以查询资料文档了解相关内容。

发布于 2017-02-10

文章被以下专栏收录

    EDM与电竞相关原创资讯,及时更新请关注微信号“电子玩乐”,号码ElectroFun。联系作者请私信。