Motores gráficos en los fps

Este artículo está creado como participación para el concurso Quake Wars: Enemy Territory de El blog de Manu.

Los motores gráficos o “Engines” son la base gráfica y conceptual de los first person shooters. Aunque se podría afirmar que el primer título que utilizó ese concepto y prácticamente definió el género fue Wolfenstein 3d, realmente habría que remontarse a 1991 con Ultima Underworld para descubrir el primer juego que utilizaba una vista en primera persona y una representación gráfica tal y como fue definida hace años para los fps, pero el señor John Carmack (a quien mentaremos muy a menudo en este artículo) afirmó que era capaz de crear un motor mucho más potente, rápido y versátil que aquel. Y así nació Wolfenstein. Y Doom. Y Quake… y seguimos contando.

Doom Engine:

No hay más remedio que nombrar en primer lugar al título que redefinió el género de los fps y le dio el empujón necesario para convertirse en la institución que es actualmente. El gurú de la programación John Carmack ideó un sistema de generación de gráficos que a ojos del jugador parecían entornos en tres dimensiones, pero no era más que una ilusión generada a partir de un mapa plano en dos dimensiones “solevado”.

En 1993 apareció Doom, y tanto este como sus secuelas utilizaban un revolucionario sistema de creación de entornos. En él, los niveles están estructurados en vértices, sectores, sidedefs (o caras de un sector) y cosas (“things”) para representar los enemigos y objetos. Los vectores que se definen a la hora de crear un mapa están unidos por sidedefs, que forman las paredes del decorado. Los sectores son figuras geométricas cerradas que forman habitaciones, y cada uno de sus lados genera la pared que luego vemos en el juego, a la que se le pueden asociar texturas. Igualmente, las habitaciones están delimitadas además de por las paredes por un suelo y un techo al que se le puede modificar la altura.

“Doom 2”

Todo este entramado geométrico es dibujado en pantalla utilizando el particionado binario del espacio (BSP ó Binary space partitioning), que no es más que un algoritmo de dibujado de gráficos que divide el proceso en un árbol binario que organiza la construcción del mapa de forma jerárquica para que el renderizado de los gráficos en pantalla sea eficiente y se dibuje de forma correcta con respecto a la posición de la cámara.

El único impedimento de todo este sistema era evidentemente la imposibilidad de utilizar la tercera dimensión y la colocación de unos sectores sobre otros en el eje Z, pero con un buen hacer en el diseño de los mapas se podía engañar con facilidad al jugador. Carmack, John Romero y el resto de su equipo crearon esta maravilla de la programación con los recursos de la época, que fue tan solo la punta del iceberg dado lo que estaba por venir.

“Sir John Carmack”

En 1995 se lanzó al mercado Doom 2, sin mejoras en el motor pero añadiendo más monstruos y armas, así como Ultimate Doom, que tan solo era un compendio de nuevos mapas. El Doom Engine también pue utilizado por otros juegos de Id Software, como Heretic y Hexen, así como otros títulos como Strife o el curioso HacX, una “Total Conversión” de Doom 2 que fue vendida como juego independiente.

Quake Engine:

Tras la marcha de John Romero de Id Software, John Carmack fue el encargado de volver a revolucionar el género de los fps con un motor gráfico que daría un enorme salto cualitativo de lo visto hasta entonces. A mediados de 1996, Quake salió a la calle, con una repercusión mayor incluso que la que supuso Doom en su campo. Por primera vez estábamos ante un juego de estas características verdaderamente en 3d, donde se habían suplido los sprites planos de los enemigos por modelos tridimensionales, así como unos escenarios totalmente poligonales que verdaderamente usaban la tercera dimensión con diferentes planos de altura. El motor estaba programado en C y su vertiente orientada a objetos, pero Carmack ideó un sublenguaje llamado QuakeC para agilizar la programación de ciertas partes, por lo que se facilitó la edición del juego tanto de cara a los propios desarrolladores como más tarde la comunidad amateur.

“El primer Quake”

Otra de las novedades fue la utilización de fuentes de luz que interactuaban con los modelos en tiempo real, mejora que unida a la estética futurista/macabra marca de la casa dotaron a Quake de una ambientación terrorífica que lograba sobresaltarnos cada vez que doblábamos una esquina.

Para poder mover todo esto en un vetusto Pentium Carmack ideó varios métodos de generación de terrenos que aligerabam el procesamiento gráfico por parte de la cpu. Uno de ellos fue la reducción de la complejidad de los escenarios para mostrar exclusivamente las caras de los polígonos que ve el jugador. Para ello, en el preprocesamiento de los escenarios se calculan las partes del entorno que no podrían ser vistas, dejando solo las caras visibles y reduciendo el número de vértices totales. En la imagen siguiente imagen se puede ver mejor el sistema utilizado.

Otro de los trucos utilizados consistía en el uso y gestión del Z-buffering para ocultar los objetos que no son visibles por haber secciones que ocultan su visión. Así, por ejemplo, era muy común ver en Quake que las salas de gran tamaño estaban separadas entre ellas por pequeños pasillos, esto se usaba para que el procesador no cargara las habitaciones contiguas hasta que fueran visibles, por lo que al existir pasillos pequeños que las conectaban, hasta que no se cruzaran no se podían ver las habitaciones anexas.

También se realizaron grandes avances en el juego multijugador, que aunque en un principio solo se orientó para su uso en red local, Carmack se sacaría de la manga el sistema QuakeWorld, que mejoraba la latencia de los jugadores al jugar de forma remota rescribiendo todo el código relacionado con el juego en red, ya que en un principio Quake no estaba pensado para ello. Gracias a este avance y la expansión de la red hacia la gran masa de usuarios que comenzaron su andadura online en los 90, comenzó a extenderse el juego por red en los videojuegos, hasta el punto de que QuakeWorld traía un programa de gestión de partidas para agilizar la entrada en partidas llamado QuakeSpy, que después pasaría a llamarse GameSpy, ¿os suena?

Existen muchísimos más avances y curiosidades dignas de mención, como que gracias al él existió la posibilidad de usar por primera vez las por aquel entonces novedosas tarjetas gráficas en la versión optimizada para ello del juego, el GLQuake, o que la banda sonora fue a cargo de Trent Reznor, el músico creador de Nine Inch Nails, pero todo esto daría para un solo artículo, así que con lo aquí expuesto ya se puede hacer uno la idea de lo que supuso Quake para la industria del videojuego.

“Quake 2”

Versiones modificadas del Quake Engine y el utilizado en su secuela fueron usados también por Hexen 2, Sin o el polémico Daikatana de John Romero, además de servir como base para la creación del motor usado por VALVe para su primer Half-Life, el Goldsrc Engine.

Tras el éxito de Quake, en 1997 vio la luz su secuela, mejorando el motor original y añadiendo el soporte nativo para el uso de OpenGL. Se volvió a dar un paso de gigante de cara a su antecesor, y gracias a las capacidades de los ordenadores de la época se pudo mejorar el apartado gráfico y el detalle en los modelos y escenarios.

Dos años después con la salida de Quake 3: Arena se alcanzó la consagración de la saga en cuanto al juego online, ya que estaba prácticamente orientado su uso en modo multijugador, por lo que no existía una campaña individual ni una historia concreta, y todo consistía en enfrentarse a varios contrincantes en escenarios cerrados, acercándose a la filosofía de su rival, la saga Unreal Tournament.

Esta vez no se incluyó el soporte para su ejecución por software, por lo que se requería una tarjeta aceleradora 3d para jugar. Los gráficos del juego se basan en el uso intensivo de shaders para aplicar diferentes efectos y funcionalidades dividiendo el modelado de personajes y escenarios en capas. Además, por primera vez se utilizaron splines para representar superficies curvas. Como siempre, una ristra de novedades en el motor se presentaron con él, como el sistema de física y gravedad que caracteriza al juego haciéndolo tan frenético, o la aparición en los escenarios de portales de teletransporte, niebla, efectos de reflejo o la división de los personajes en diferentes secciones, que propiciaron las salvajes explosiones de los cuerpos al ser impactados por un arma de gran calibre.

“Quake 3: Arena”

El Quake 3 Engine fue utilizado por Lucasarts para su saga Jedi Knight, o la gente de Infinity Guard para sus primeros Call of Duty. También se usó para resucitar una vieja franquicia con Return to Castle Wolfenstein o para el segundo Soldier of Fortune, pero sin duda el motor de Carmack es de los más extendidos en las comunidades de jugadores y de desarrollo de mods gracias a que Id ha ido liberando el código de sus motores con el paso de los años bajo licencia GPL, por lo que existen un sinfín de ports para casi todas las plataformas. Deberían seguir su ejemplo todas las compañías.

Unreal Engine

1998 fue un gran año para los fps. Además de la salida de Half-Life y la consagración de Quake 2, pudimos asistir a la creación de un motor tan práctico como rentable para sus creadores. Epic Games fue la encargada de su creación para el desarrollo del videojuego Unreal.

Por primera vez veíamos en un videojuego escenarios que se acercaban peligrosamente al fotorealismo. Los enormes entornos naturales que se podían ver rompieron con la clásica estética urbana y futurista de los títulos que se habían visto hasta entonces. Un correcto renderizado de modelos con una carga poligonal considerable, un sistema de colisiones simple pero efectivo, una inteligencia artificial para los enemigos bastante buena y un buen rendimiento para el juego online consagraron al juego y dieron vía libre a la continuación de la franquicia con la saga Unreal Tournament.

La compañía decidió sacar partido a su engine, por lo que se puso a disposición de otras compañías la licencia para su uso en otros juegos. Así, la primera versión del Unreal Engine ha sido utilizada en una veintena de títulos, algunos tan conocidos como Deus Ex o el Clive Barker’s Undying, así como en la edición de Unreal Tournament del 99, aunque para estos últimos se realizaron pequeñas mejoras que hicieron evolucionar al motor a su versión 1.5.

“Unreal”

La segunda versión del Unreal Engine nació en el desarrollo de Unreal Tournament 2003. Para ello se reescribió casi desde cero el código original y se incluyeron nuevas funcionalidades como el sistema de física Ragdoll o nuevos algoritmos de colisiones para su uso en vehículos para Unreal Tournament 2004. Además, se adaptó el motor para poder ser portado a las consolas, de ahí que vieramos algunas entregas de la saga Tournament en PS2, Xbox o Dreamcast. Igualmente, otro buen puñado de juegos lo utilizaron, y esta vez sí que fue extendido su uso para títulos realmente conocidos, como la sagas sagas de Tom Clancy’s y sus Splinter Cell, Ghost Recon 2 o Raimbow Six 3. Postal 2, Lineage 2 o el propagandístico America’s Army tambien hacen uso de él. Ubisoft fue la que mejor amortizó la compra, usándolo en gran cantidad de sus juegos.

La hegemonía del Unreal Engine 2 y su actualización a 2005 tuvo uso desde el 2002 hasta el 2006, año en el que se presentó la tercera versión de su motor utilizada en muchos títulos de la actual generación de consolas. Su uso está orientado a DirectX9 y 10, así como las consolas Xbox 360 y Playstation 3. En él se incluyeron las funcionalidades de los nuevos tiempos, como el HDR, sombras e iluminación dinámica y el Normal Mapping, evolución del Bump Maping para el sombreado de modelos. Además, se suple el anterior sistema de colisiones arrastrado desde la primera versión por el nuevo PhysX, así como la implementación de un nuevo sistema de animación facial y sincronización labial.

“Unreal Tournament 2003”

Actualmente motor es el más avanzado y utilizado por los fps en consolas, y gracias a él se han producido joyas contemporaneas como Bioshock o Gears of War, así como la edición de Unreal Tournament del año pasado, además de otros tantos títulos. Como en anteriores versiones, con cada nuevo juego se implementan nuevas funcionalidades y mejoras, por lo que en el próximo Gears of War 2 veremos el debut de la versión 3.5. El cuento de nunca acabar, pero que siga así muchos años.

Valve: Goldsrc y el motor source

Sin duda, el motor más fructífero para sus creadores. En 1998, con Quake 2 y Unreal como los reyes de los fps en la época, VALVe Sofware lanzó al mercado Half-Life en noviembre de ese año. La compañía fue fundada en 1996 por Gabe Newell y Mike Harrington, empleados de Microsoft con muchas tablas a sus espaldas e importantes aportaciones en diferentes distribuciones del sistema operativo Windows.

Para la creación de Half-Life se utilizó como base la variante para el juego multijugador del Quake engine de Carmack, el QuakeWorld, pero que modificado con tino dio lugar a uno de los motores más estables y versátiles que se han creado: El Goldsrc. Sus bondades son casi incontables, la posibilidad de trabajar tanto con Direct3D como con OpenGL, unos requerimientos ínfimos para la época en comparación con lo que era capaz de mostrar en pantalla y unas posibilidades enormesa la hora de mostrar eventos de activación en pantalla que a día de hoy se ha convertido en marca de la casa.

“Half-Life”

La gran maniobra de VALVe dio pie a la creación un sinfín de expansiones y variantes del título original, algunos realizados por ellos mismos y otros por third-parties. Opposin Force y Blue Shift fueron creadas por Gearbox Software como expansiones del título original, que ampliaban el argumento del juego original con nuevos puntos de vista del suceso de Black Mesa, pero el verdadero éxito del programa fueron los juegos independientes multijugador que redefinieron el género para su uso online y que a día de hoy sigue siendo el título más jugado fue sin duda Counter-Strike, seguido de Day of Defeat, que despertó el interés por el combate histórico y las representaciones de la segunda guerra mundial, abriendo el camino para futuros títulos similares como las sagas Medal of Honor y Call of Duty.

La versatilidad de Goldsrc permitía extrapolar el motor a casi cualquier género y temática, y dado que junto a Half-Life se proporcionaban las herramientas de desarrollo para la creación de mods de forma totalmente gratuita, fue cuestión de tiempo que se formara una gran comunidad amateur que desarrollara ampliaciones y juegos independientes de toda índole. Otro punto a favor de VALVe.

Varios años después y casi sin avisar, el anunciamiento de un nuevo Half-Life fue realizado en el E3 del año 2003, con la presentación de un nuevo engine totalmente nuevo que iba a volver a revolucionar a la industria. El Motor Source estaba en camino, aunque hubo un pequeño traspiés a la hora de su salida ya que se filtró el juego en la red, por lo que se rehicieron y mejoraron partes del juego para que su venta no se viera afectada por este problema, por lo que al final, acabó saliendo en 2004.

“Half-Life 2”

El motor fue concebido para correr en DirectX 9, con un uso magistral de shaders que permite efectos dinámicos de luz y sombras, que unidos a la construcción de terrenos minimizando costes al usar texturas y modelos de baja resolución en la lejanía, se pudo volver a disfrutar de unos increíbles gráficos con unos requerimientos mínimos. Otras características son la sincronización labial y la gesticulación facial de los modelos, una representación del agua fotorealista o una gran capacidad para el uso de filtros como antialiasing y demás filtrados, pero principal atractivo del nuevo motor fue la inclusión del sistema de física Havok, que dotaba a los objetos de un comportamiento realista a la hora de interactuar con ellos acorde a su masa y peso.

Para no quedarse atrás, VALVe añadió más funcionalidades al motor con la salida de los siguientes capítulos de la saga como el Episode 1 y los nuevos títulos anexos aunados en el Orange Box, de reciente factura. La estrella indiscutible de las expansiones fue el HDR, así como el Motion Blur aplicado al giro de cámara y la ampliación de nuevos horizontes gráficos con el estilo cartoon de Team Fortress 2.

“Team Fortress 2”

De todas formas, y en este caso particular, los juegos creados por VALVe, aunque técnicamente sean una maravilla, sustentan todo su éxito en el desarrollo de ideas innovadoras, argumentos absorbentes y personajes carismáticos, demostrando una vez más que por muchos adelantos tecnológicos que se produzcan, el verdadero éxito se consigue con una base jugable sobria y un correcto equilibrio entre innovación y diversión.

Engines y más engines:

Estos no son ni mucho menos los únicos engines comerciales que existen, y se quedan en el tintero un buen puñado de ellos que posiblemente den para otro artículo, como el Lithtech de Monolith y Microsoft, que en sus sucesivas versiones ha servido de base para medio centenar de juegos, el propio motor de Wolfenstein 3D que fue utilizado en otros tantos o el espectacular CryEngine que ha parido joyas del fotorealismo y la estética como Far Cry o el todopoderoso Crysis. En definitiva, los motores gráficos son la piedra angular de los fps, una base en la que se sustentan los juegos y definen su forma de plantearlos. Cada vez vemos físicas y comportamientos más realistas, escenarios más fieles a la realidad y argumentos dignos de una película de Hollywood.

Han pasado 15 años desde que apareció Doom, y las diferencias entre este y los títulos actuales saltan a la vista. ¿Qué encontraremos dentro de otros 15 años? ¡Ardo en deseos por saberlo!

Anuncios

24 comentarios

  1. Gracias hombre, al final me he ido enrollando enrollando, y mira tú lo que ha salido, que me da para escribir otros tres hablando del tema.

    Claro, como tú tienes ya tu Quake Wars ;-)

  2. Gran artículo sí señor. Creo que me he pasado todos los clásicos que mencionas desde que matase al Hitler robótico de Wolfestein en mi venerable 286. Mención especial para Duke Nukem, el primer juego en entrar en mi flamante (por entonces) Pentium 100. No obstante he de reconocer que conforme han ido pasando los años, pocos FPS han conseguido engancharme realmente.

    PD: El engine que más he disfrutado de todos los que mencionas es el Unreal Engine. Gracias principalmente a las dos joyas que mentas: Deus Ex y Undying.

  3. ElRoSSo, lo tengo pero pasará a manos de Deny, que el juego es de la plei3, y ya conoceras de mi alergia a esas consolas. X-D
    A ver si Deny gana el de Manu y me pasa el de la 360. ;D

  4. En realidad el “Doom Engine” no es más que un Raycasting Engine, una forma de transformar un plano 2D en alturas mediante cálculos trigonométricos. El primer Raycaster está lejos de ser el de Doom, probablemente fué uno de catacumbas (que no recuerdo) o Wolfenstein 3D, aunque estos eran motores ortongonales sin alturas, fué Doom el primer raycaster no-ortogonal. Antes de ellos Rise of the Triad había introducido el concepto ortogonal con alturas

    El sumun de los Raycasters fué el gran motor BUILD (mucho más improtante que cualquier de estos, exceptuando el de Quake) que era un motor raycasting no ortogonal dopadísimo (el Crysis de los FPS pseudo-3D), y por supuesto el Shadow Warriors el gran referente de este motor con el uso de Voxels

    También te faltan los motores de Novalogic con el uso de los Voxelscapes para desarrollar el terreno, muy usado en los Delta Force, aunque no era un motor Voxel real, porque eran cuadrados 2D, no eran cubos que es lo que es un Voxel (volumetric Pixel)

    Yo también hablaría (hablé de el hace tiempo en mi blog) de Voxelstein que es un proyecto amateur para hacer (la demo es INCREÍBLE) un Wolfenstein con un motor Voxel real (3d), eso sí, requiere un PC de la leche porque usar Voxels consume muchos recursos

  5. Genial artículo. Solo comentar que el uso de luces dinámicas y entornos complétamente 3d con completa libertad de movimientos fueron estrenados por descent, antes que por quake, y que ya en los 80 hubieron juegos en completas 3d poligonales y desarrollados en primera persona al estilo de los fps actuales, como podría ser driller.

  6. stranno: es cierto que ha olvidado Build (imperdonable omisión, por cierto), pero este NO UTILIZA RAYOS (raycasting), al menos no de la forma que otros. Es algo que Silverman está ya cansado de decir. Es un motor poligonal, de ahí que Polymost (versión OpenGL de Build) reutilice buena parte de su código base.

    Respecto al artículo, quitando la omisión de Build (imperdonable, imperdonable e imperdonable), está bastante bien.

  7. Stranno: Creo que el primer raycaster a pelo fue el Ultima Underworld. Tienes razón en que el primer juego de éstas características que podía gestionar varias things por diferentes alturas era el Rott, pero aunque todos tus apuntes son ciertos y correctos, no quería excederme más de lo que ya he hecho en el artículo, que 3000 palabras y pico palabras se me han quedao cortas y todo. Ya digo, que posiblemente hable de otros engines e historias relacionadas.

    Nuño: Al Build le metí muchísima caña en tiempos, tanto para Duke Nukem como para los brutales Shadow Warrior y Redneck Rampage, así que posiblemente, hable de todo ésto más adelante. Ya os digo, que he mentado tan solo algunos de los más conocidos, ni mucho menos todos los importantes. Vamos, que se pide a gritos una segunda parte para completar el listado de una forma digna.

    Manolito: Gran apunte con lo del Descent, el problema es que no sé hasta que punto se puede considerar un fps al uso, pues aunque podamos manejar la navecilla en primera persona disparar y tal, creo que no entra la temática aquí expuesta.

  8. Build no es poligonal, es un Raycaster, y de hecho es el ejemplo más claro que existe de que es un Raycaster porque en otros juegos quizá no entiendas que significa un motor Raycasting ya que los mapas no son más que meras lineas

    Pero esque en BUIL (tanto Duke, como Blood, como Shadow) puedes ver el entorno 2D en el que se mueve el personaje viendo el mapa, eso es en realidad el juego, cuando quitas el mapa y ves el arma esa es la ilusión tridimensional que consiste en dar altura a los segmentos

    BUILD es un motor gráfico no ortogonal, y bien es verdad que no es no-ortogonal al estilo Doom, ya que BUILD es infinitamente más avanzado y puede realizar tareas en tiempo real sobre los segmentos. Además BUILD tiene objetos 3D cierto es, pero mediante voxels, no tiene un solo poligono ningún juego programado en BUILD

    De hecho TODOS los Duke Nukem son estrictamente 2D, el único Duke que es 3D es el de Sega Saturn, que está hecho poligonalmente usando un motor 3D propietario

    Que existan versiones OPENGL de motores gráficos RayCasting no lo dudo, los Jx (jDoom, jShadow …) es lo que hacen, pero bueno, eso no son más que game-engines

  9. Excelente artículo, por supuesto que se puede profundizar mucho más ( el tema da para ello ), pero no se trata de escribir un libro :)

    Eso sí, estaré pendiente para la segunda parte…

    Saludos

  10. […] Motores gráficos en los FPS: Artículo inscrito en el concurso que organizó Manu hace unos días, y que ha resultado ganador. No es para menos, porque la calidad es sobresaliente y ElRoSSo se lo merece. Nos hace un recorrido sobre la historia y evolución de los diferentes motores gráficos en los juegos en primera persona, desde Doom hasta Team Fortress 2. […]

  11. Impresionante artículo, de fácil y muy amena lectura que se convierte en uno de esos que no caducan con el tiempo y en un futuro estaremos encantados de volver a leer.

    Mis felicitaciones por la calidad del artículo y por supuesto por tu merecido premio.

    Saludos

  12. Joer Den, después de eso que has dicho se ma roto el elástico del gallumbo de lo ancho que me has dejao. Gracias por vuestros comentarios y menciones en blogs. Intentaré corresponder con una segunda parte, que la cosa da bastante de sí. :-)

  13. Artículo buenísimo donde los haya.Da gusto encontrarse información de este tipo, un premio sin duda merecido, ojalá si realizas la segunda parte llegue al mismo nivel de calidad.

  14. estaria mejor muchisimo mas resumido, tanto tanto para nada. yo tenia que hacer un trabajo, y no esta en con deciones, la sigienti vez no me metere a qui.

  15. […] Motores gráficos en los fps: Uno de los primeros (y únicos) artículos en los que dejo un poco de lado la guasa para aportar un texto rigoroso y a mi juicio bastante interesante. En este caso hago un resumen de la evolución de los engines más revolucionarios de la historia contemporánea de los videojuegos de disparos. […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s