¿Cómo funcionan las balas en los videojuegos?

Los juegos FPS (shooter en primera persona, shooter en primera persona) se han convertido en una parte integral de la industria de los videojuegos desde el advenimiento del Wolfenstein 3D más popular en 1992. Desde entonces, el género ha evolucionado: los gráficos han mejorado, los presupuestos de desarrollo han aumentado y el ecosistema de deportes electrónicos se ha desarrollado. Pero, ¿qué hay de su base: la mecánica de tiro? ¿Cómo fue el desarrollo en este frente? ¿Por qué las armas parecen reales en algunos juegos y les gustan los juguetes en otros?

Hitscan


En la era anterior, muchos juegos para representar escenas 3D en imágenes 2D usaban una técnica llamada raycasting . Raycasting permite que el motor determine el primer objeto con el que se cruza el haz. Pero entonces los desarrolladores hicieron la pregunta: "¿Qué pasa si liberas un rayo del cañón del arma para simular una bala?" Gracias a esta idea, nació un hitcan ("escaneo de golpes").


Ejemplo de Raycasting

En la mayoría de las implementaciones de armas con hitscan, cuando un jugador dispara, el motor físico realiza las siguientes operaciones:

  • Define la dirección en la que apunta el arma.
  • Libera un rayo de un cañón de arma a una distancia predeterminada.
  • Utiliza la emisión de rayos para determinar si un rayo ha golpeado el objeto.

Si el motor determina que el objeto está en la línea de fuego, entonces él le informará de esto, diciendo que la bala lo "golpeó". Entonces el objetivo puede realizar todos los cálculos necesarios para registrar el daño.


De la unidad . El punto A denota un arma que emite un rayo hasta el punto máximo B. El rayo choca con un cubo al que el motor informa que fue golpeado.

Hitscan es inherentemente simple, pero se pueden hacer muchas modificaciones diferentes para agregar otra lógica:

  • Si continuamos el rayo más allá del primer objeto que golpea, podemos perforar varios objetos en la línea, como el cañón de riel en Quake
  • Si eliminamos el alcance máximo del haz, obtenemos un láser que volará para siempre hasta que golpee algo
  • Puede hacer que algunas superficies reflejen mediante programación para que las balas reboten en ellas.


Supervisión La habilidad de desvío del personaje Genji es un ejemplo de una superficie reflectante.

La principal ventaja del raycasting es su tremenda velocidad de procesamiento. Se calcula rápidamente y no requiere memoria adicional ni tiempo de procesador para crear un nuevo objeto físico. Esto significa que el código de red necesario para sincronizar múltiples clientes será mínimo, ya que el servidor solo necesita rastrear la dirección del haz. El retroceso también se realiza simplemente, para simular este efecto, es suficiente agregar una ligera desviación a la vista del arma.

Por lo tanto, no es sorprendente que hitscan se use en la lógica de disparo de muchos juegos. Ejemplos clásicos son Wolfenstein 3D y Doom , pero esta tecnología también se usa en juegos modernos. Personajes como Soldier 76, McCree y Overwatch Doom Widow usan armas con hitscan, y la mayoría de las armas en Call of Duty también se basan en hitscan.




Overwatch, Call of Duty, Wolfenstein 3D

Entonces, ¿por qué este enfoque no se usa en todos los juegos?

En primer lugar, como probablemente haya notado, los rayos tienen una velocidad de movimiento infinitamente alta, es decir, alcanzan instantáneamente el punto final. No hay tiempo para el movimiento de una bala entre una bala disparando y golpeando un objeto. Esto significa que si un rayo golpea un objeto, es imposible evitar una bala, incluso si el objetivo está a varios kilómetros del jugador.


Halo Tenga en cuenta que el destello del hocico y los efectos de golpear el suelo ocurren simultáneamente.

En segundo lugar, la mayoría de las implementaciones de hitscan usan haces directos. Esto significa que es difícil tener en cuenta el viento, la gravedad y otros factores externos que pueden afectar la bala después de volar fuera del tronco. Los programadores pueden agregar todo tipo de trucos para que el rayo imite balas reales, pero tan pronto como el jugador "disparó" el rayo, no hay forma de cambiar su camino en el medio.

En muchos juegos casuales, todavía se usa hitscan porque simplifica la curva de aprendizaje para la mayoría de los jugadores nuevos. Pero, ¿qué pasa con los juegos que buscan transmitir la sensación "real" de disparar? Con tales restricciones, esto es imposible de lograr, por lo que se necesita un método diferente.

Balística de un objeto volador


Este término puede parecer complicado, pero en un nivel abstracto, la idea es bastante simple. Cada bala o proyectil disparado desde un arma crea un nuevo objeto físico en la escena. Tiene su propia masa, velocidad y cuadro delimitador del contacto (hitbox), que son rastreados por el motor del juego.


Max Payne 3

Los beneficios de la balística se manifiestan plenamente en los juegos en los que el realismo tiene la máxima prioridad. Dado que cada objeto volador existe por sí solo, podemos tener en cuenta la influencia del viento, la fricción, la gravedad, la temperatura, cualquier fuerza que deba actuar sobre la bala. Ahora que podemos cambiar la física, los jugadores pueden usar armas más diversas, no solo pistolas y láseres simples; Podemos agregar granadas y cohetes a nuestro arsenal.

Dado que las balas en dicho sistema no se mueven a la velocidad de la luz, también es posible obtener propiedades temporales:

  • Bullet Time utilizado por Max Payne , Sniper Elite y Superhot .
  • El tiempo de viaje de la bala, es decir, al disparar a largas distancias (o al disparar un proyectil que se mueve lentamente), la prevención se vuelve crítica.
  • Explosiones de proyectiles demoradas, como granadas

Debido a estos cálculos adicionales, el procesamiento se vuelve más costoso que el uso de hitscan. Para garantizar la sincronización, los servidores tienen que hacer mucho más trabajo, es necesario eliminar las discrepancias o conflictos en la lógica del lado del cliente, para que todos los jugadores dentro del mismo servidor estén en las mismas condiciones.




Supercaliente, Battlefield 1, Overwatch

Hay muchas soluciones alternativas para maximizar la productividad. Por ejemplo, el motor puede almacenar un grupo de objetos cargados antes del inicio del juego y "encenderlos" según sea necesario. Después de tocar la superficie, puede reproducir la animación de la balística y apagar la bala, guardándola para el futuro. Este método le permite ahorrar recursos informáticos y memoria ocupada por la creación y destrucción múltiple de objetos.

También hay muchas formas de realizar cálculos, pero a un alto nivel, la diferencia radica en dónde deciden procesar el "tacto" del juego, una unidad de tiempo:

  • El reloj se calcula por separado de la lógica de renderizado, es decir, el juego tendrá una reproducción más precisa de los objetos incluso cuando se omiten los marcos. Se necesita más lógica para calcular el tiempo exacto transcurrido desde la representación anterior.
  • Cálculo de una medida en cada cuadro; física vinculante a la velocidad de fotogramas. Si desactiva la restricción en la velocidad máxima de cuadros o si el juego comienza a saltar cuadros, entonces la física del mundo se acelerará o disminuirá.

Los efectos de vincular el movimiento a las medidas son claramente visibles cuando los proyectiles se mueven lo suficientemente rápido como para recorrer una distancia bastante grande entre las medidas. Las situaciones pueden surgir cuando los objetos "pasan" entre sí, porque en el motor nunca se cruzan.

Todo esto parece complicado, mucha gente piensa que este es un método relativamente nuevo; sin embargo, ¡en realidad ocurrió antes de hitscan! Antes de los juegos de FPS, había muchos tiradores de arriba hacia abajo como Asteroides , Space Invaders o Galaxian . Estos son juegos arcade de los años 70, en los que ya se han implementado balística de proyectiles, aunque de manera bastante primitiva.


Asteroides Las conchas son bastante difíciles de ver, ¡pero lo son!

Pero incluso con todas estas características, no podemos recrear un modelo realista del mundo real. ¿Hay alguna forma de aprovechar ambos métodos?

Sistemas híbridos


La mayoría de los motores de juego son capaces de manejar ambos tipos de simulaciones de balas: hitscan y balística. Esto le permite realizar una gran selección de armas; juegos como Halo , GTA y Half-Life tienen armas que pueden soportar ambos tipos de física.



Halo El rifle de asalto usa el hitcan; Needler usa balística de proyectiles

Los desarrolladores también pueden mezclar ambas técnicas para cubrir las debilidades de cada sistema y proporcionar un comportamiento más realista. Por ejemplo, para eliminar el problema de pasar objetos entre sí, cada bala en cada ciclo del motor puede emitir un haz. Esto permite que el motor vea si alguno de los rayos se cruza entre medidas, chocando en el aire.

También se pueden combinar para mejorar las características del juego. Un gran ejemplo de esto es la serie Sniper Elite ; Después de apretar el gatillo, el motor usa el hitcan para determinar si el disparo se realiza lo suficientemente cerca de cualquier objeto detectable como para disparar a cámara lenta. Si es así, se dispara una bala con el cálculo de balística en el modo "tiempo de bala".


Francotirador elite

Entonces, ¡examinamos los conceptos básicos del comportamiento de las balas en los videojuegos! Curiosamente, las mejoras en esta área están principalmente en pequeñas optimizaciones y mejoras, y no en el procesamiento a gran escala. Después del lanzamiento de los primeros juegos revolucionarios, no hicimos ningún paso o avance significativo.

Que sigue ¿Cómo se desarrollará esta área en el futuro?

No creo que en el futuro cercano el enfoque híbrido desaparezca, ya que proporciona beneficios adicionales. Pero predigo que habrá muchas mejoras por parte de la balística de los proyectiles. La frecuencia de cálculo del reloj continúa aumentando (porque la potencia de la CPU está creciendo), y podemos acercarnos al límite asintótico de la simulación de la bala del "mundo real".

Source: https://habr.com/ru/post/475420/


All Articles