28 de enero, 2015
Artículo indiespensable
Indiespensable
Dev Lavde 20# – Física I

Mirar la lluvia por la ventana de clase no ayudaba a hacer más cortos los días grises del invierno Madrileño. Escuchar a «El Púas» dando la brasa con la física, menos aún. Que si velocidad, que si aceleración, que si fuerzas… Pero sin esas aburridas fórmulas que estudiábamos en la E.G.B., E.S.O., o lo que sea que haya ahora, no se podría hacer siquiera los menús de muchos juegos que jugamos hoy día. La física y las matemáticas están estrechamente relacionadas con el desarrollo de videojuegos, que se lo digan a los chavales del colegio San Juan Bosco. Así que nada, sacad el cuaderno de cuadritos, un bolígrafo bic azul, tirad el chicle y prestad atención: Empieza la clase de física.

¿Por qué los juegos necesitan física? ¿Qué tipo de fórmulas físicas puede necesitar un juego? ¿Cómo encajan dentro de la programación? ¿Qué elementos de un juego conviene simular y cuáles no? ¿Qué es un ragdoll? ¿Y cómo funcionan esas cortinas tan chulas que había en Splinter Cell por todas partes? Intentaré aclarar estas y otras cuestiones durante los próximos artículos. Como siempre sin entrar a un nivel muy técnico, después de todo, ya decía Stephen Hawking en Breve Historia del Tiempo que cada fórmula que se escribe divide los ingresos por la mitad. Aquí no tenemos de eso, pero tampoco queremos aburrir al personal en exceso.

La física en videojuegos entraña desafíos excepcionales, y a menudo ni siquiera afecta en gran medida a la jugabilidad: en la mayoría de casos sólo se usa para alcanzar un mayor realismo visual. Pero está tan presente que sería prácticamente inconcebible un juego sin ella. Aunque simplemente sea por la detección de colisiones, es absolutamente necesaria. Si aún tenéis alguna duda, siempre podéis probar a escribir «Noclip» en la consola de comandos del Quake y ver lo que ocurre (bueno, eso es lo que os diría si aún estuviéramos en 1997).

Actualmente se pueden ver cada vez mejores y mayores efectos relacionados con la física: partículas, fluidos, telas, explosiones que afectan a todo el entorno y destruyen objetos en miles de pedazos, sin olvidarnos de todas esas cajas tan bien hechas… Y los juegos cuyo núcleo jugable está directamente fundamentado en una simulación física están a la orden del día: World of Goo (2D Boy, 2008), Crayon Physics Deluxe (Petri Purho, 2009), Bridge Constructor (Headup Games, 2011), etc.

En muchos otros juegos puede no ser tan evidente la presencia de fórmulas físicas, pero hasta los juegos más sencillos necesitan alguna manera de dotar de movimiento a los objetos con los que interactúa el jugador. Es por eso que la física ha estado presente durante toda la historia de los videojuegos: Pong (Atari, 1972), Tetris (Alexey Pajitnov, 1984), Arkanoid (Taito, 1986)… A lo mejor es sólo porque los ingenieros que los hacían eran un poco nerd. Pero lo cierto es que todos estos juego clonados infinitas veces necesitan calcular posiciones y velocidad de los elementos jugables y determinar, en tiempo real, cómo unos afectan a otros, lo que no sería posible de no ser por la física. ¿Incluso el Pong? Sí, incluso el Pong.

Cinemática

Una de las características principales de los videojuegos es el movimiento. Y las leyes de la cinemática, qué casualidad, sirven exactamente para calcularlo. Es lo más básico que se va a necesitar en un juego: El espacio recorrido por un objeto en movimiento es igual a la velocidad multiplicada por el tiempo.

Las fórmulas cinemáticas se pueden usar para calcular la trayectoria de proyectiles y partículas, o realizar movimientos muy sencillos de objetos, como animar hacia fuera de la pantalla las ventanitas del menú. Se complica un poco con la necesidad de movimientos parabólicos, circulares, o cualquier cosa más compleja que un desplazamiento en línea recta.

Dinámica

Con la cinemática no suele ser suficiente, y se hace necesario utilizar simulación dinámica para conseguir el efecto deseado en los objetos del juego. Se parte de aquellas fórmulas de Newton con masa y fuerzas que, junto con las fórmulas cinemáticas, modelan la interacción entre objetos, la atracción de la gravedad, etc. Adquieren una mayor complejidad cuando la aplicación de esas fuerzas no se hace en el centro de masas, produciendo aceleraciones angulares, y rotando los objetos. Pero son especialmente necesarias para la simulación de vehículos, y en juegos basados en físicas como Crayon Physics Deluxe.

Detección de colisiones

Sin embargo, aún con las fórmulas dinámicas y cinemáticas, falta una parte fundamental en la simulación. Para poder calcular cómo un objeto afecta a otro, primero hay que saber cuando ambos se encuentran en contacto.

Éste es uno de los problemas más difíciles de resolver y más costoso en términos computacionales. Es muy frecuente que se utilicen diversas técnicas de optimización como algoritmos de particionamiento espacial que dividen el mundo en pequeñas zonas para aliviar los cálculos, debido al elevadísimo número de operaciones que supondría calcular las colisiones para todos los objetos al mismo tiempo. Es por ello también que se utilizan modelos simplificados en los cálculos de física (a veces incluso simples esferas) en lugar de los modelos gráficos que se muestran en pantalla. Tener distintos niveles de detalle en los modelos físicos, permite simplificar mucho los cálculos usando los modelos de mayor detalle sólo cuando una colisión se ha detectado en el modelo simplificado, pero puede complicar la programación y la generación de contenido.

La detección de colisiones es tan compleja y falible, que incluso con todos los avances en los juegos de última generación, aún de vez en cuando podemos encontrarnos algún personaje que cae sin remedio a través del suelo hacia la infinidad del vacío virtual.

Motores de física

Nada de esto es nuevo y miles de ingenieros han dedicado sus vidas a estudiar y aplicar cálculos de física en videojuegos. Para facilitar la tarea de los desarrolladores es muy frecuente que todos esos cálculos se agrupen en un motor o una librería, que se encargará de gestionar la simulación de una escena con físicas. El motor de física controla todo lo que ocurre en la simulación, e informa de los eventos que puedan ocurrir, como colisiones, roturas, etc.

Todos recordaremos aquella intensa promoción cruzada entre Mirror’s Edge (DICE, 2008) y PhysX, el motor de física que actualmente podemos encontrar en gran variedad de juegos ya que viene incluido en Unreal Engine y Unity3D. Otro ejemplo muy conocido es Havok que es parte del motor Source, base de Half-Life 2 (Valve, 2004) y Portal (Valve, 2007) y también es utilizado por juegos de última generación como Infamous: Second Son (Sucker Punch, 2014). Por supuesto, también los hay open source: Bullet, es una librería de física ampliamente utilizada, y, si no son necesarias las tres dimensiones en el juego a desarrollar, una alternativa muy válida es Box2D o Liquid Fun, que utiliza el propio Box2D para realizar simulación de fluidos y cuerpos blandos y elásticos.

También existen motores de física más especializados como Euphoria, en este caso capaz de mezclar física e inteligencia artificial para mejorar el movimiento de personajes mediante la simulación de músculos. Hemos podido ver Euphoria bastante en acción desde que fue introducido en Star Wars: The Force Unleashed (Lucas Arts, 2008), ya que viene siendo utilizado por Rockstar desde Grand Theft Auto 4 (2008).

En resumen

La física proporciona a los juegos comportamientos emergentes, un mayor realismo visual, o, directamente una nueva dimensión jugable con la que interactuar. Sin embargo, no es nada sencilla de programar, y además suele ser muy costosa en términos computacionales, tanto que las tarjetas gráficas modernas incluyen hardware específico para realizar cálculos de física.

Lo de hoy es una simple introducción al por qué de esa física. Pero hay mucho que tratar en este tema, ya que es uno de los componentes más importantes de los juegos en la actualidad. Incluso en un juego muy sencillo es casi imposible que el desarrollador se libre de lo más básico de la cinemática, aunque sea simplemente para animar un menú. Y la complejidad crece exponencialmente cuando se hace uso de personajes animados que interactúan libremente con el entorno. Aunque el motor gráfico incluya una librería de física que haga el trabajo duro, se hace imprescindible conocer ciertos conceptos: Colliders, triggers, joints, ragdolls… Nunca está de más tener una ligera noción sobre lo que ocurre debajo del interfaz del motor.

Acerca de Enrique Hervás


Humano Nivel 32. Diseñador y Programador de videojuegos Nivel 6. De esos a los que sus padres prohibieron jugar a "las maquinitas" por estar demasiado enganchados. No sabían lo que les esperaba. Actualmente trabajo como Game Designer en Exient, e intento no olvidarme de mi pasado indie de Game Jams y jueguitos con Join2 Games

No hay comentarios