Historia y evolución de los engines 3D

Motor: CryEngine

Los motores 3D no sólo se utilizan como base para videojuegos, son de vital importancia en simulaciones de todo tipo (entrenamientos militares, quirúrgicos y policiales).

Un engine 3D (también conocido como middleware) es un conjunto de sentencias de programación que necesita una computadora para crear entornos visuales y representar ambientes que sean lo más similar a la realidad posible, aunque no siempre se logró alcanzar niveles de realismo creíbles a causa de las obvias limitaciones tecnológicas de hace unos años. Hoy en día, tampoco se alcanzó el realismo absoluto; sin embargo, las tarjetas gráficas actuales tienen un poder de procesamiento enorme (incluso mayor que el de un microprocesador), lo que indica que hasta una computadora hogareña le pisa los talones a las grandes estaciones gráficas para representar entornos en tres dimensiones.
Los motores 3D no sólo se utilizan como base para videojuegos, son de vital importancia en simulaciones de todo tipo (entrenamientos militares, quirúrgicos y policiales).
También existen los motores 2D: muchos recordarán el término SCUMM en el que se basaron una gran cantidad de aventuras gráficas de la casa LucasArts; pero por obvias razones los engines bidimensionales son de mucha menor complejidad. En este informe nos centraremos únicamente en los motores tridimensionales.
Un mismo motor 3D puede ser utilizado en más de un videojuego (como el caso de CryEngine2 que fue usado para juegos como Crysis, Blue Mars, Entropia Universe), aunque hay empresas que han concebido un motor dedicado y exclusivo para un juego en particular (por ejemplo: el Iron Engine en el juego Sins of a Solar Empire).

De todo y para todos
Existen motores desarrollados por importantes empresas durante años. La inversión de tiempo y dinero para su creación es tal, que la licencia para que otras empresas puedan usarlos asciende a costos muy altos, aún más en los motores multiplataforma. Por su parte, en menor medida que los motores propietarios, existen motores gratuitos y de código abierto, siendo Unity uno de los más famosos al ser compatible con Windows, GNU/Linux y Mac OS X (aunque su licencia es paga para plataformas como Android, PS3, XBOX 360 o Wii).
No debemos confundir los motores 3D con las API’s o librerías de abstracción, como DirectX o OpenGL. La cadena de dependencias comienza con el juego o aplicación software, desarrollado partiendo de un motor gráfico que, a su vez, se basa en una capa de abstracción de hardware. Una capa de abstracción suele ser parte de los sistemas operativos modernos y se encarga de interactuar en forma directa con el hardware: tarjetas gráficas (ya sea una nVidia GeForce GT240 o una ATI Radeon HD5850), tarjetas de sonido (ya sea una X-Fi 5.1 o una Realtek genérica), dispositivos de entrada (diversos modelos de joysticks o volantes) y de comunicación (tarjetas de red o módems).

El salón de la fama
Si bien los motores gráficos nacieron junto con los videojuegos (a principios de la década de 1970), nos centraremos en los principales motores tridimensionales (que increíblemente nacieron a mediados de los años 80); dejando de lado las primeras incursiones en engines 3D, repasaremos los más destacados e interesantes, comenzando con los que adquirieron un nivel de madurez aceptable y terminando en la actualidad (que gracias al poder de procesamiento de hoy en día la calidad gráfica es cercana a imágenes cinematográficas).

Doom
El legendario juego de la empresa Id Software, es considerado un desarrollo basado en un motor 3D, sin embargo no era más que 2D basado en sprites que representaban objetos, personajes y cualquier otro elemento que tuviese movimiento. Por ese motivo, las habitaciones estaban en el mismo plano (no se podía ir al sótano ni a la azotea); y debido al uso de sprites 2D emulando entornos en tres dimensiones, fue un motor rápido capaz de correr en equipos 386 con tarjetas VGA estándar para la época (1993). Este motor que llevó el mismo nombre que el juego para el cual se desarrolló, cobró tanto éxito que también se usó para otros títulos, como Heretic, HeXen y Doom II, entre otros.

Build
Ya para 1994 las exigencias de los usuarios en materia gráfica era mayor que el año anterior. Fue entonces cuando nació este motor un tanto similar a Doom, pero con ciertas ventajas como la posibilidad de mirar hacia arriba o abajo, dando una mayor sensación tridimensional. Fue utilizado inicialmente en juegos como Duke Nukem 3D y Blood; pero debido a su éxito y escaso consumo de recursos (una 486 y una placa SVGA eran más que suficientes), este motor fue el alma de una enorme sucesión de títulos.

Quake
Este fue el primer motor tridimensional propiamente dicho de la casa Id Software, compatible con tarjetas 3Dfx (es decir, permitía aceleración por hardware). Gracias a que las tarjetas gráficas empezaban a implementar el Z-buffering y este motor le sacaba provecho a esa funcionalidad, se ahorraban grandes cantidades de consumo del CPU.
Este motor tenía otro truco interno para economizar tiempo de procesamiento: constaba de un pre-rendering que desechaba zonas del mapa y objetos que el jugador no podía ver, lo cual recortaba la cantidad de polígonos casi a la mitad.

RenderWare
La primera versión fue lanzada en el año 1996 y llegó hasta una cuarta revisión. Este motor no fue muy conocido entre el público en general como lo fueron otros motores; sin embargo RenderWare se sigue usando incluso hoy en día en títulos para PC, XBOX 360, Mac OS X, PSP y Nintendo Wii. Tanto es así que nada más y nada menos que más de 200 juegos se han basado en este engine 3D (entre ellos: GTA 3, Airpot Tycoon, Evolution GT y Commandos: Strike Force). Fue el primer motor 3D en permitir a los programadores alterar parámetros en tiempo real, es decir, no era necesario recompilar el código para introducir modificaciones en el color o tamaño de un objeto determinado, lo mismo corría para apartados como la física, relacionados a la gravedad o inercia (efectos muy primitivos por aquel entonces).

Quake II
También llamado Id Tech II, introdujo plena compatibilidad con OpenGL, lo cual garantizaba que iba a ser soportado por la gran mayoría de placas gráficas nativamente.
Introdujo efectos con luces de color y un nuevo modelo de juego cuyo código fue desarrollado en C y se cargaba desde librerías DLL en vez del tradicional lenguaje QuakeC, que era propietario.

GoldSRC
Desarrollado en 1998, fue el engine 3D que logró poner a la misma altura las PC con las consolas de videojuegos, marcando un punto de inflexión en esta constante evolución. Dio vida a excepcionales juegos como Half-Life y todos sus derivados (Counter Strike, Team Fortress Classic, Opposing Forces y Blue Shift, entre otros).
Es un motor basado en Quake (aunque con un 70% de código fuente nuevo) con muchas mejoras adicionales, como la posibilidad de correr mediante Direct3D, OpenGL o software.

Unreal
Del año 1998, se perfilaba como un engine 3D exclusivo para videojuegos FPS (first person shooter), pero logró consolidarse como algo más que eso: fue el corazón de títulos del género RPG (role playing game) como Mass Effect. Encarnó al videojuego homónimo y su versión multijugador llamada Unreal Tournament.
Además de tener su propio lenguaje de scripts (UnrealScript), Epic ofreció un editor de mapas y de modificaciones del programa llamado UnrealEd. Las posibilidades de renderizado pasaban tanto por software como por hardware. El motor ofrecía detección de colisiones, iluminación de colores y un rudimentario método de filtro de texturas. Aprovechó las extensiones multimedia de los nuevos procesadores de la época: tanto AMD 3DNow!, como Intel MMX y SSE.

Quake III
También llamado Id Tech III, hizo un uso extensivo de sombras y shaders así como también superficies curvas y la posibilidad de usar millones de colores para las texturas, incluyendo transparencias. Todos los efectos anteriores requerían una tarjeta 3D compatible con OpenGL y una PC de 300 MHz como mínimo. Los títulos más destacados que aprovecharon este motor, fueron Quake III Arena, Call of Duty, Return to Castle Wolfenstein.

Unreal II
Concebido en 2002, apadrinó juegos como Lineage II, Ghost Recon 2, Postal 2, Splinter Cell, Rainbow Six 3, Unreal II (también Tournament 2003 y 2004).
Se trató de una versión mejorada del motor original sumando soporte de física y 64 bits. También agregó efectos especiales como líquidos en movimiento, siendo capaz de operar diez veces más polígonos que su versión anterior.

Source
Considerado por muchos como uno de los mejores motores 3D, logró una muy buena calidad (con un muy buen nivel de realismo, tanto en gráficos como en física) con un consumo moderado de recursos. En su época de lanzamiento (año 2003), no era necesario contar con computadoras o tarjetas gráficas excesivamente costosas.
Dio lugar a títulos como Half Life 2, Counter Strike: Source, Postal III y Portal, entre otros.
Hacía uso de avanzadas tecnologías de iluminación, shaders y sombras dinámicas, con superficies líquidas de alto realismo; como así también del soporte multiprocesador.

CryEngine
Crytek desarrolló este engine para una demo 3D en tarjetas GeForce 3 (llamada X-Isle) y a causa del interés del público, se terminó gestando el famoso juego Far Cry, para luego convertirse en el motor de varias consolas de juegos.
Ofrecía grandes detalles visuales, pudiendo generar modelos de agua muy realista, vegetación muy abundante y ambientes de tamaño casi ilimitado.

Unreal 3
La tercera versión del motor Unreal tiene soporte para DirectX 9, 10 y 11 (además de XBOX 360, PS3 y Mac OS X); incorporando procesamiento multithreading, soporte para nVidia PhysX (para procesar física por hardware), efectos mejorados de partículas, HDR de 64 bits de color y un largo etcétera.
Los títulos más destacados de este motor son Unreal Tournament 3, Mass Effect 1 y 2 y Rainbow Six: Vegas.

Euphoria
Vio la luz gracias al mítico Grand Theft Auto IV. Se trata de un engine 3D que puede generar animaciones en tiempo real a pedido, gracias a la combinación de inteligencia artificial, física y biomecánica, dando como resultado una simulación muy natural del personaje, animal o cuerpo humano.
Esta inteligencia adaptativa permite controlar los movimientos de los personajes, lo cual suma realismo a las animaciones y da un toque de distinción a cada sujeto.

Dunia
Este motor utilizado en Far Cry 2, conserva sólo el 3% de código que CryEngine, y es mucho más eficiente en el consumo de recursos que CryEngine 2 (utilizado en el juego Crysis). Dunia aprovecha las bondades de procesadores multicore y puede generar escenarios destructibles, IA dinámica y posibilidad de usar mapas de gran tamaño.

Javier Richarte
javier.richarte@dattamagazine.com

Este artículo pertenece a la edición de julio de 2011 de DattaMagazine. Podés leerlo en su versión original en http://dattamagazine.com/julio-2011/