通过吃鸡了解游戏的战斗系统(二):枪械的物理设计
关于射击类游戏通用的设计——枪械的物理设计。
一、物理引擎
一般来说,TPS类游戏可以归属在3D游戏之内。为了更好的呈现游戏世界的真实性,提供更好的游戏代入感。TPS类型的游戏都会使用物理引擎来进行游戏的制作。
什么是物理引擎呢?
物理引擎通过为刚性物体赋予真实的物理属性的方式来计算运动、旋转和碰撞反映。为每个游戏使用物理引擎并不是完全必要的—简单的“牛顿”物理(比如加速和减速)也可以在一定程度上通过编程或编写脚本来实现。然而,当游戏需要比较复杂的物体碰撞、滚动、滑动或者弹跳的时候(比如赛车类游戏或者保龄球游戏),通过编程的方法就比较困难了。
除了大面碰撞或一些常见的物理效果外,射击类游戏,还有很多需要深入计算的物理现象,比如后坐力、子弹弹道等等这些物理计算如果借助物理引擎,单纯的靠代码编辑无疑是很难的。
目前常用的物理引擎有:
寒霜
Unity 3D
虚幻 4
CryeEgine3
二、射击游戏中的物理特性
射击游戏中牵扯到大量的物理特性。如果以科学的态度来说这事儿,那可以写好几本物理书。所以我们这里只按照作为游戏化方式处理过后易于上手、又保留一定真实性的做法,来分析其中涉及到的物理特性。
2.1 后坐力
枪械发射时子弹壳同样受到火药气体的压力,从而推动枪机后坐,后坐的枪机撞击和枪托相连的机框,从而产生后坐力,因此理论上口径越大,撞击越猛,后坐越强,但是枪在设计时有缓冲机构,可以延长撞击时间从而减低后坐力,同时,高效的枪口制退器同样可以减小后坐力(原理类似火箭向后喷气),所以,后坐力的大小和口径有关,但枪械本身的结构设计影响更大。
在连续发射子弹的状态下,因为枪的威力,产生了一定的反作用力,这种作用力会使持枪不稳,造成射击精度不够。
我用几张图来说明不同枪械的后坐力:
自动步枪
下图是猎枪或者说是霰弹枪的后坐力慢镜头:
霰弹枪
下图是我武警特战人员,用手枪速射的效果。
根据上面几张图,可以看到不同的枪械,拥有不同的后坐力。
而在游戏中,要保留这种特性,但是又不能太过于真实让用户难以操作。所以会进行一定的弱化。
那么在游戏中,会弱化到什么程度呢?可以参考下图手枪的后坐力优化效果。
绝地求生
在连续射击时,枪械的后坐力才会有明显的体现,这时会出现控制不住的情况,感觉枪口不听话,很难打中人。
而这时,射击类游戏中的技巧“压枪”就出现了。
什么是压枪?
压枪的意思是当枪支连射后坐力变大时,使用拖动鼠标地方法控制好弹道尽量打在一个目标上。
每个射击游戏枪械的后坐力是完全不同的,需要在游戏时多多练习和习惯。一般压枪需要先习惯点射的子弹散布,再熟悉连射的子弹散布,根据这些数据,我们针对性的去压枪。
通过练习,可以做到将散布不均匀的弹道控制在一个密集的区域内,更好的对敌人造成有效的伤害。
在绝地求生中,某一武器在连续射击时,子弹分布如下图所示:
压枪之前,连续射击弹道分布成了一条直线:
压强之后,控制在了一个区域内:
而枪械的后坐力跟枪管长度、枪身质量、子弹出膛速度、子弹质量、口径、枪托形状等等一系列参数有关,我们就不展开讨论了。
在研发类似的游戏时,大多通过多次的模拟调整,通过正态分布的办法,来设计弹道散布的范围。
2.2 子弹弹道
子弹弹道分为内弹道与外弹道。我们这里只简单说明外弹道。
外弹道主要是讨论弹头飞出枪口后,影响其飞行的各种因素。
任何在地球上的物体,都会受到地心引力的影响。弹头一出枪口, 加速就停止了。引力会将弹头往地面拉。 所以任何弹头的飞行路线都是弧形的。如果枪管与地面平行, 弹头永远不会和枪管延长线的任何一点交会。所以, 枪管都是微微朝上的。
下图是一张G3步枪的弹道图,大家可以直观的理解弹道的含义。
G3自动步枪
红线:视线
黑线:子弹轨迹
因此,在设计枪械的弹道时,可以参考如下的计算公式,来计算弹丸的弹道曲线(不考虑空气阻力)
s=ut+1/2at2
其中:
s=distance (距离)
u=initial velocity(弹丸初速)也写成 Muzzle velocity
a=acceleration(加速度)
t=time passed(时间)
如上图可以看出,在子弹射出后,距离越远,其子弹下坠的幅度越大,所以要打中远距离的目标就需要抬高枪口,增加射击角度,用以命中目标,这就是“归零点”。
射击方式
在大部分游戏中,很少有做的与现实相似的情况,大部分弹道屈居于平直,让玩家更好操作。而做的趋近于真实的游戏,更多的是面相军迷等专业的爱好者。比如《狙击精英》系列。
总结
射击游戏中核心的系统设计就讲解完了。主要是科普一些制作的原理与技巧。其实当一名游戏设计师并没有那么简单。