GamerDicExplicado

Hitbox y headshot, explicado: qué comprueba el juego cuando disparas

Un objetivo de ejemplo con dos cajas invisibles: cómo se comprueba un disparo instantáneo y un proyectil, por qué la cabeza multiplica el daño y cuándo el dibujo y la caja no coinciden.

Todos los números de esta página son valores de ejemplo y la propia página los calcula a partir de unos pocos datos con nombre: la distancia, dos velocidades, la gravedad, el tamaño de las dos cajas y el daño. No son cifras de ningún juego concreto, y el multiplicador ×2 de la cabeza es solo un ejemplo. El modelo en 2D y las cuentas (tiempo = distancia / velocidad, caída = ½ × g × t²) son de esta página; las definiciones vienen de las fuentes de abajo.

Lo que ves es el modelo; lo que el juego comprueba es una caja invisible que lo sigue.

Un personaje tiene dos capas: el modelo, lo que se dibuja en pantalla, y la hitbox: formas simples e invisibles pegadas al personaje que se mueven con él. En este ejemplo son dos rectángulos, uno de 0,6 × 1,4 m para el cuerpo y otro de 0,25 × 0,25 m para la cabeza. Cuando disparas, el juego no mira el dibujo: mira esas cajas. En los juegos de lucha, la caja que recibe el golpe suele llamarse hurtbox.

Comprobar un rayo contra unos pocos rectángulos es barato; contra cada triángulo del modelo, no.

Un modelo está hecho de muchísimos triángulos, y comprobar un disparo contra cada uno de ellos, para cada jugador y en cada instante, cuesta mucho cálculo. Comprobarlo contra unos pocos rectángulos es inmediato: basta con ver si el rayo entra entre sus bordes. Por eso los juegos usan cajas, esferas y otras formas simples en lugar del modelo. El precio es que la caja y el dibujo nunca coinciden del todo.

Hitscan: rayo recto, 0 s de vuelo; cruza la caja entre 39,7 y 40,3 m.

Con hitscan, el disparo no es un objeto que vuela, sino una línea recta que sale del cañón. En el mismo instante el juego busca la primera caja que cruza esa línea: el tiempo de vuelo es 0 s y no hay caída. Aquí el objetivo está a 40 m y apuntas al centro del cuerpo: el rayo entra en la caja a 39,7 m y sale a 40,3 m. Entrar en la caja es el impacto.

Un proyectil tarda 0,40 s en recorrer 40 m y la gravedad lo baja 0,78 m.

Un proyectil es un objeto que se mueve. A 100 m/s tarda 0,40 s en recorrer 40 m, y mientras vuela la gravedad lo va bajando: 0,5 × 9,81 × 0,40² = 0,78 m. Se usa la gravedad de la Tierra; cada juego elige la suya, y aquí no hay rozamiento del aire. Si apuntas a la cabeza, el proyectil llega más abajo y da en la caja del cuerpo.

La cabeza es una caja aparte y pequeña: 6,9 % del área del objetivo vista de frente.

Un headshot existe porque la cabeza tiene su propia caja. Es pequeña: 0,25 × 0,25 = 0,0625 m², frente a los 0,84 m² de la caja del cuerpo (0,6 × 1,4). Vista de frente, la cabeza es solo el 6,9 % del área del objetivo. Acertar ahí es más difícil, y el juego sabe en qué caja ha entrado el disparo, así que puede tratar ese impacto de forma distinta.

El multiplicador compensa: 30 al cuerpo, 30 × 2 = 60 a la cabeza; 4 impactos contra 2.

Para que valga la pena apuntar a una caja tan pequeña, el impacto en la cabeza multiplica el daño. Con un daño base de 30 y un multiplicador de ejemplo ×2, un headshot quita 60. Contra 100 de vida hacen falta 4 impactos en el cuerpo, o 2 en la cabeza. Un headshot suma daño y a menudo es mortal, pero no siempre: con estos valores deja al rival con 40 de vida.

Un disparo en el brazo, a 0,45 m del centro, falla: la caja solo llega a 0,30 m.

Un disparo pasa por el brazo levantado, a 0,45 m de la línea central: en pantalla lo tocas, pero la caja solo llega a 0,30 m, así que es un fallo. Al revés, un disparo a 0,25 m del centro pasa junto al torso, que mide 0,20 m de medio ancho, pero cae dentro de la caja: impacto sin tocar nada visible. La regla es la misma: decide la caja, no el dibujo.

Apuntas donde está ahora: en 0,40 s se mueve 2,0 m y el proyectil pasa a su lado.

Con un proyectil, la caja se comprueba cuando llega, no cuando disparas. El objetivo cruza de lado a 5 m/s. Apuntas a donde está ahora, ya corrigiendo la caída, y la mira está encima de él al disparar. Pero el proyectil tarda 0,40 s, y en ese tiempo el objetivo se mueve 5 × 0,40 = 2,0 m. Llega a 2,0 m del centro, con una caja de 0,30 m de medio ancho: fallo.

Adelanta la mira 2,0 m y súbela 0,78 m: acierta con un margen de 0,06 s.

La solución es apuntar a donde estará: 5 × 0,40 = 2,0 m por delante y 0,78 m más arriba por la caída. El margen es pequeño: con 0,30 m de medio ancho y 5 m/s, un error de 0,06 s en el paso del objetivo sigue siendo impacto. Si se para o se da la vuelta, vuelve a fallar. Si además hay ping alto, se suma otro retraso: mira Lag y ping, paso a paso.

Lag y ping, paso a paso

Límites del modelo: todo es 2D, con una vista lateral para el vuelo y una vista de frente para las cajas; en la vista lateral la caja se dibuja con el mismo rectángulo de 0,6 × 1,4 m. Hay una sola caja para el cuerpo y otra para la cabeza, mientras que los shooters reales comprueban cajas o esferas en tres dimensiones, a veces varias por extremidad. El proyectil va a velocidad constante, sin rozamiento del aire ni viento, sobre suelo plano; el objetivo se mueve en línea recta a velocidad constante y la reacción es instantánea. No hay retraso de red ni compensación de lag. Los juegos reales cambian cómo siguen las cajas a la animación, cuántas hay y qué multiplicadores usan.

Términos del diccionario

Fuentes

  1. Hitbox, Wikipedia (forma invisible para detectar colisiones, rectángulos en 2D y cuboides en 3D, sigue a un punto del objeto visible; hurtbox; el término no está estandarizado)
  2. Glossary of video game terms, Wikipedia (hitscan: impactos a lo largo de una trayectoria sin tiempo de vuelo; headshot: daño extra, a menudo mortal)
  3. Collision detection, Wikipedia (las cajas se usan por su sencillez y sus pruebas de intersección rápidas)
  4. Physics.Raycast, documentación de Unity (lanza un rayo contra los colliders de la escena y dice si lo cruza)
  5. Ray-casting, documentación de Godot (lanzar un rayo y comprobar qué toca)
  6. Projectile motion, Wikipedia (velocidad horizontal constante y aceleración g hacia abajo, sin rozamiento del aire)
  7. Deflection (ballistics), Wikipedia (disparar por delante de un objetivo en movimiento)