从CS风靡网吧开始,到如今各类吃鸡游戏频频登顶手游排行榜,射击类游戏自面世以来就成为了众多玩家最热衷的游戏类型之一。“爆头”作为射击类游戏最具代表性的技术操作,赋予了射击游戏独特的竞技性和观赏性。
不知道你有没有遇到过这样的情况:全身装备齐全,手雷医疗包满载,想着这把应该妥妥吃鸡了,结果不知哪里来的子弹让你瞬间倒地。愤而查看回放,却发现敌人并没有瞄得非常准却也命中了头部。bug?开挂?你气得想摔手机/键盘。别急,看过下面的介绍,相信能平复一些你心中的怨气。
“爆头”最早源于RARE工作室1997年出品的第一人称射击游戏《007-黄金眼》,游戏中引入了伤害计算机制,敌人根据被击中位置的不同,会有不同的反应,也会产生不一样的伤害。这样的机制让游戏的体验更加丰富,也更逼近真实的战斗效果。
但是你知道游戏程序是如何计算某一枪是否爆头的吗?
首先,你需要了解射击游戏是如何来计算伤害的。不同游戏引擎的实现方式可能有所不同,但根本的原理是大体类似的。在伤害计算过程中,所有可能会受到伤害的物体或角色都会被抽象成若干几何体的集合,举个最简单的例子,一个人就可以抽象成一个球体(头部)和几个立方体的集合。这些几何体,我们可以命名为伤害盒子。枪械射击过程可以抽象为向目标发射虚拟的射线,当游戏程序检测到射线打在伤害盒子上时,就会根据枪械的攻击力确定目标损耗的血量。这里就完成了一次伤害的计算。
更复杂一点的情况,如果枪械射出的子弹会受到重力、风速等环境因素的影响,射线也就变成了一条更复杂的曲线,而目标身上的伤害盒子也可以更加。
伤害盒子示意图
至于爆头伤害,是由绑定在头部的伤害盒子属性决定的,不同的伤害盒子可以对应不同的伤害加深系数。普通部位的系数一般是100%,即没有伤害加深;而头部的伤害盒子接收的伤害加深系数通常来说是200%或更多。
了解了游戏引擎计算伤害的基础原理,我们再来说一说为什么有时候你觉得并没有打到你的子弹却产生了爆头伤害。
一种可能的原因是伤害盒子的形状不完全匹配。绑定在模型上的伤害盒子,通常不会和模型形状完全一致。手游中常见普通怪物的模型,是由数万甚至数十万的三角形网格构成的,可以模拟各种复杂的形状,但伤害盒子的数量增加往往会产生巨量的计算,因此同一个模型上伤害盒子的数量不会很多,形状也通常比较简单,甚至有些游戏引擎只有球形、立方体等几种非常简单的类型。
如果我们用球形来模拟头部的伤害,由于人的头部是椭球型,会造成子弹擦过头部时也会被算入爆头伤害。看起来好像是出现了问题,实际上是背后看不见的伤害盒子产生的影响。
头部伤害盒子尺寸示意图
另一种可能就是网络延迟的原因。我们现在常见的多人对战射击游戏,都是需要网络服务器提供运算支持的,保证不同玩家间的数据一致。但像伤害计算这样和游戏引擎密切相关的内容,往往还是以玩家客户端的电脑或手机计算结果为主,再通过客户端与服务器的信息传输同步给其他同区域内的玩家。网络传输是需要时间的,因此网络的波动或延迟也会造成部分信息的不完全一致,导致看上去好像是对方出现了bug或者开了挂。
了解了这些,相信下次遇到类似的情况,你就不会第一时间拍案而起怒喷对手开了锁头挂了。平静下心情,开始下一局吧!
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved