游戏设计师,车迷,电影饭,设计控,技术宅
随着RPG类游戏打开了大型网络游戏的市场,在桌面平台继承了RPG许多特点的FPS几乎是可以预见地将成为玩家们的下一个兴奋点。
与桌面平台不同,先行的和现行的网络FPS游戏几乎都选择了对硬件配置更低的CS模式。但是,服务于局域网的CS模式毕竟对于更为宽广的互联网而言,存在许多“不合适”的地方。首当其冲的,便是CS模式下的射击命中判定方式。
首先从硬件资源的立场出发,CS模式弱化了子弹飞行状态。无论是弹道下垂还是长距离飞行时间这两点处于节约硬件资源的角度,CS模式进行了弱化。为了保证游戏的乐趣和复杂型,CS模式最大的贡献在于复杂化了子弹的弹道表现,枪械在连续射击的情况下非常容易发生“散射”的状态——最终的命中点呈散布状态——当连续射击一定时间后,弹点分布几乎是无规律的。玩家们很形象地称这种行为叫“飘”。CS本身正是利用这一点,开辟了独立于Quake之外的一类FPS形式。
我们可以想象,当枪械开火时,子弹是一种弹幕状态呈椎形飞向目标,每一发子弹拥有着独立判定计算。这种情况下的射击命中判定是:
命中概率=目标面积/子弹散布点
因此,CS模式下入门和近阶与熟练玩家的区别便在对“弹道失控”的控制上。CS模式两种流行的进阶打法,一种是“压枪”,即保持着连续射击的频率压低枪口,使上飘的子弹维持在一个可控制范围内;另一种便是“点射”,保持最低频率的射击追求最高的射击精度。这种用物理方式计算弹道在网络游戏中,最大的弊端莫过于“流弹”的判定难度。由于每发子弹单独计算判定,因此出现玩家们被“流弹”击中的情况屡见不鲜。一方面这大大影响玩家们的游戏互动感,另一方面则加重了硬件资源的消耗。
其次便是网络连接速度对于射击判定的影响。众所周知,由于玩家的操作没有任何AI辅助,FPS类游戏对于网络连接速度的要求极高,0.5秒的延时便会毁掉FPS游戏的手感。这一点,倒不是CS模式造成的,却也是CS模式在网络游戏下最大的软肋。
因此,我们综合上面两点,试图提出一种新的枪械射击命中判定:命中率。这里命中率不是由上面的目标面积和弹点散布计算而来,这里的命中率取决于两个要素:
一,与目标之间的距离,距离越远命中率越低;
二,连续射击时间,连续射击时间越长,命中率越低。
这乍看之下只是把CS模式换了一个说法,事实上,这正是把CS模式下复杂的物理弹道命中计算简化为单纯的公式计算。从结果上来看,二者最终的计算结果没有区别,CS利用复杂的物理弹道随机计算最终所要表达的,正是这样一个结果——命中率的衰减曲线源自与弹点散布。而此时的命中判定则变成了:
命中数量=射击数量*命中率
从硬件资源的角度来看,命中率模式改变了之前“先射击后命中”的判定模式,枪械每次攻击必定对准星所对准的地方进行一次计算,如果是可攻击目标则根据两者间距离和当时武器射击频率情况进行一次命中可能的计算,变成了一种“先确认再计算命中可能”的模式。这从根本上解决了“流弹”对于硬件资源的消耗,更为重要的是减低了上手操作门槛,玩家们主要的射击工作重新移到了“瞄准”上,而不是像CS一样对于射击中的枪口的微操。更为重要的是,由于单发射击精度也要算入命中率,因此CS中玩家们偏爱的利用大威力低精度武器进行纯点射——比如AK47——代替长距离攻击武器行为会受到影响,这丰富了玩家们对于武器的选择,增加了游戏的可玩点。
而在网络延迟的克服性上,命中率模式由于只牵涉到玩家之间的距离问题和开火时间,射击结果和手感的挂勾也不再那么致命。引擎在任何情况下只需要计算目标是否在一定时间内出在攻击者的攻击可能范围之内,即可算出目标被攻击的情况。
----
本文用途特殊,请勿断章取义。欢迎讨论

评论
看了前面的帖子, 发现原来是有关网游的。。。
网游在本地运算的话。。。 壳不牢固 很容易出外挂的 =.=
不知道你们做的什么背景的游戏。。实在不行做quake的枪械系统好了。。。 railgun无限穿,火箭炮。。电浆枪。。。 普通的火药弹就别出了。。。就说,单兵全是能量装甲 对火药弹免疫了。。。 然后枪支连发速度降低。。。最快的电浆枪也要1秒一发。。。也算省资源了。而且像quake2的6号枪一样,子弹有速度的。railgun高斯武器充能缓慢 5秒一发 着弹点小且命中100%.... 非要格林机关枪,那就做5个管子齐射好了。。。。。啊啊啊 辐射3苦等哇~~~
有些东西还是高科技背景好作,不用真实物理模型,还省得诠释。。。车辆也做成halo里面外形摩托。嘎嘎嘎嘎~
游戏早就定型了,没得改了
命中率机制,我想可以做出一种变化的着弹点规则。。。 比如:
扣扳机
第一发子弹
着弹点图形 (o)
o是瞄准点 ( ) 是着弹区
目标在着弹点之内 则命中100%
第3发子弹
着弹区变为 ( | | )
( o )
o是瞄准点
目标身位暴露在着弹区的:上左侧 上右侧 上中时 命中30% 若目标覆盖2个着弹区,则命中提高为60% 由于跳枪, 瞄准点附近命中率为10%
想想好像也挺有意思。。。 但是没想出来这跟流弹有什么关系。。。。 也许我想的跟作者不一样。
另外。。这个实现方法也没感觉很节省硬件资源。。。 每发射一发或者几发子弹,系统都要依照着弹区不同做出投射模型,还要对其进行分区。 并且此着弹区模型还像手电一样不碰墙就结束。 另外此模型不大好作子弹穿透效果,可能会遇到打中前面的人, 子弹应该穿过去,后面的依照概率计算却没被打中的情况。。。如果要作穿透模型,规则又要复杂化。
有点头大。。。不想了。 一起讨论
因为不管怎么说,也是把一个“射线空间求交”运算变成了一个“平面位置判定”运算了啊。
另外透射的问题是非常复杂的……牵涉到了材质对射程对杀伤力两方面的衰减问题,这个模型我已经在项目里做过了……我觉得有点吃力不讨好
除非这个游戏能做到像CS一样保障大家的延迟在 200ms 以下……否则看不出有什么实战价值
不过,应该说 cs的瞄准系统与quake最大区别就是拟真吧。。虽然说弹道并不是对真枪的完全拟真,却加上了连发枪口上跳机制,根本上说算是对后坐力的模拟。 由于此机制导致子弹命中有一定规律却又不是完全可控,由此引发的压枪,点射等技术。这应该是cs魅力的一部分吧。。
命中率机制,感觉还不大可能。据我感觉,网络延迟造成的玩家A与B的相对位置在各自的电脑上不同,才是影响判定的根本所在吧?比如 A看到B在这个地方,于是他向此处瞄准, 但是B其实已经在瞄准处前方了, 只是因为延迟问题导致A看到的是3秒之前的B。于是A落空了.... 如果是命中率机制的话, A的准星同样也没在B身上,命中率也是0%
另外,命中率机制感觉有个问题,就是把某些可控因素也去掉了,使得射击变成一种"碰运气"的动作。也许是作者说得不大详细,判定机制也没考虑好。。在我感觉,这种无序机制由于电脑计算干涉,有可能出现顶着脑袋打飞了的事情,虽然概率很小,而且很容易让玩家对磨练射击技巧失去兴趣
。
最后。。。AK 确实是好枪,无论游戏中还是现实中。 其实要想丰富可玩点, 直接改进下真实弹道好了。由于AK扳机很重,真实情况下首发命中不会说像游戏里面那么百发百重。
说得不是很肯定,只是讨论。。希望作者能详细说下命中率判定机制。
解决方法是,在A的机器上,击中的是三秒前的B……你会说这个差距很明显。但是有个前提我们不得不考虑,当延迟超过 500ms 之后,网络游戏的可玩性就已经急剧下降了
所以说,一般来说,只要延迟控制在 500ms 即 0.5 秒内,是不会有太大差异的。此外呢,如果游戏气氛营造得当,场面比较“乱”的话,那就更没问题了。
命中概率的这种判定方式其实并非降低了游戏的挑战性,但是对射击技巧的要求的确是降低了……说难听了,这个的确是不如联机游戏有挑战性,但是往号听说,我们是在向大面积的玩家做妥协,我们是在模拟战场的气氛(在战场上,射击技巧并非决胜要素)呢