El imperio de DirectX: un breve relato narrado en lenguaje informático

¿Qué significa eso de DirectX, esa palabra en neón que tantas veces hemos visto instalando juegos, arrancando aplicaciones, en pegatinas entre las cajas de nuestros equipos informáticos? Una hélice que cambió de estilo, aunque mantuvo su verde eléctrico.

Para hablar de esta API (interfaz de programación de aplicaciones) hay que remontarse a los tiempos de Windows NT. Quizá antes: en aquel principio —situando la familia de sistemas DOS (Disk Operating System) como principio moderno—, los juegos tenían control total sobre el hardware. No existían capas de personalización, nada de estándares que marcaran cómo mejorar el hardware de vídeo, ni acelerarlo ni retrasarlo para optimizar el rendimiento. Hacía falta un diálogo, una convivencia. Y aquí entra en juego esa tal “DirectX”.

Nace una estrella

A finales de 1994, la maquinaria de Microsoft estaba a punto de lanzar un nuevo sistema operativo, su flamante Windows 95. Pero algunos de los mejores programadores del equipo no las tenían todas consigo. El equipo de desarrollo quería portear la interfaz OpenGL de Windows NT a Windows 95. No pudieron hacerlo. Craig Eisler y Alex St. John sabían que los desarrolladores de videojuegos preferían seguir trabajando en MS-DOS.

Entretanto, ese mismo año, Westwood Studios presentó su plataformas ‘The Lion King’, uno de esos juegos creados para las masas, con una licencia jugosa, un revulsivo para poner las cartas a favor. Ojalá. Mientras en SNES vendía un millón de copias, en PC apenas alcanzaba las 200.000, lastrado por problemas en su interfaz y con un puñado de incompatibilidades en algunos sistemas. El juego fue programado en WinG, un lenguaje optimizado para operar bajo Windows 95 que invitase a portear los juegos de DOS a Windows.

La jugada no funcionó. Mientras DOS permitía acceso directo a tarjetas de vídeo, teclados y ratones, Windows 95 restringía el acceso y exigía un puñado de drivers autorizados. Por aquel entonces se utilizaba el estándar de la asociación VESA para las gráficas, y las librerías de Sound Blaster de Creative para las tarjetas de audio. ¿Cómo abarcar a todo el hardware, precisamente en el ecosistema gamer, donde la cantidad de periféricos se disparaba (joysticks, sticks arcade, volantes, etc)?

Eisler y St. John aliaron fuerzas con Eric Engstrom sabían que podían hacer algo mejor y crearon un pequeño esbozo de lo que pretendían conseguir. Presentaron un powerpoint a un grupo de desarrolladores y los superiores dieron luz verde. A vísperas de vacaciones, Craig se pasó los días escribiendo código. Necesitaban una beta estable para la CGDC, la actual Game Developers Conference. Esa herramienta se denominaría DirectX, y sería una de las librerías más utilizada en el desarrollo de videojuegos.

Aquello se convirtió en una carrera contrarreloj. Mientras una tal PlayStation sonaba en el horizonte, Craig y cía. consiguieron poner en marcha el juguete sobre una gráfica ATI Mach64 y una tarjeta de audio Soundblaster apenas dos días antes de la conferencia. Como el propio Craig indica, «los CD’s llegaron literalmente un par de horas antes de que tuviéramos que subir al escenario».

En septiembre de 1995 aterrizó la primera versión de DirectX bajo el paquete Windows Games SDK. Esta nueva API unificaba compatibilidad total con W95, pero operaba sorprendentemente bien majo sistemas anteriores. Justo un año después, en la GDC de 1996 y auspiciado bajo un puñado de juegos, el evento de presentación de DirectX fue un éxito total, aupado por las herramientas Direct3D —basada en la tecnología de la compañía Rendermorphics, recién adquirida por Microsoft—, DirectPlay, y un juego online mostrado en tiempo real: MechWarrior 2.

Y su reinado duró diez años

Lo que vino a continuación solo puede denominarse como “edad dorada”. Unos avances espolearon otros y las ediciones de DirectX se fueron sucediendo con equilibrio divino. DirectX 2 se formalizó el 5 de junio de 1996; Direct X 3 el 15 de septiembre de 1996, momento en el que la ATI 3D Rage II prometía aceleración 3D en resoluciones 1280x1024p.

Y DirectX 4, bueno, este nunca llegó —de hecho, el salto comercial fue de 3.0b A 5.2—. Fue un pequeño tropiezo en la nomenclatura. Apenas habían pasado unos meses desde la tercera versión, cuando los desarrolladores exigían cada vez avances superiores. Pongámonos en contexto: es diciembre de 1996, momento en el que peleaban en el mismo mercado Diablo, Quake, Duke Nukem 3D, Civilization 2. Ah, y Super Mario 64, poniendo patas arriba el plataformeo tridimensional. Para alcanzar tal ritmo, las versiones 4 y 5 se desarrollaron en paralelo: una propondría pequeñas mejoras, otra un cambio importante. Al final ganó la apuesta más alta.

El equipo de DirectX prefirió no lanzar nada de forma apresurada y esperar hasta el verano de 1997, momento donde DirectX 5 hace acto de aparición. Y su colección de APIs, como es lógico, fue creciendo en horizontal: de DirectInput (teclados, ratones, joysticks, pads) a Direct3DSound (sonido 3D, claro); de Direct3D al pack DirectX Media —compuesto por un puñado de herramientas como DirectAnimation, DirectShow, DirectX Video Acceleration…—.

La segunda edición de Windows 98 trajo consigo DirectX 6.0, lanzada el 7 de agosto de 1998. Tomando por modelo algunos avances logrados en consolas, el nuevo paquete de herramientas incluía funciones 3D como compresión de texturas o mapeo de relieve. Aún se lanzaría una edición 6.1 para dar soporte a más avances de Intel, o a la API DirectMusic, acercando a las masas las herramientas MIDI para componer y reproducir música y efectos en tiempo real.

DirectX 7 y 8 llegaron correlativamente en 1999 y 2000 acompañados por nuevos OS y nuevos avances. Pero no fue hasta la versión 8.1, lanzada el 12 de noviembre de 2001, cuando algo cambiaría. Ya era hora de dar un paso adelante.

Llega una caja a casa

Ese algo tenía un nombre propio, heredando la primera X de DirectX. La división lúdica de Microsoft, Microsoft Game Studios, debutó como productora en 2002, afianzando la relación que ya había desarrollado con juegos como Age of Empires, Monster Truck Madness o experimentos menos afortunados como Deadly Tide y Hover!, un “captura la bandera” diseñado al alimón con la propia Pixar.

DirectX 9.0, lanzado el 24 de diciembre de 2002, sería el pie de entrada para un nuevo hardware. ¿Una arquitectura de PC dentro de un mercado doméstico? Sí, y funcionó. Se llamaba Xbox y sería la primera de una larga dinastía de consolas.

La sucesión de números se dilató ostensiblemente: DirectX 9.0c tuvo versiones en diciembre de 2005, febrero, abril y septiembre de 2006. Ya no se componían de distintos módulos, donde había que rascar y pulir todas las librerías y lenguajes para lograr una consistencia y compatibilidad. Ahora se trataba de un único archivo comprimido, descargable desde Internet.

Esto propició los cambios finales de DirectX 10, donde la API de desarrollo de Xbox empujó el propio ecosistema de DirectX: DirectInput se sustituye por XInput; DirectPlay por XBox Live; DirectShow por MediaFoundation. Y así. No todo el mundo estaba conforme con esta visión. En mitad de un lavado de cara con un recién estrenado Windows Vista, DirectX 10, iba a llamarse Windows Graphics Foundation. Pero tira más la tradición que la confusión.

Una relación que siguió estrechándose durante los años más recientes. El 25 de diciembre de 2014 hace acto de aparición DirectX 11.3, homogeneizando compatibilidad con Xbox One, Windows 10 y Windows 8.1. DirectX 12 —con el juego de estrategia en tiempo real Ashes of the Singularity como primer ejemplo en usar esta tecnología— hace lo propio con nuevos y viejos modelos de Xbox.

Nuevos actores sobre el escenario

Eso sí, la batalla está más reñida que nunca, con la API multiplataforma Vulkan resucitando la herencia de OpenGL, rival directo de DirectX 12 en características y rendimiento. Algunos de los mayores popes de la industria tecnológica, como Imperium Games, pasó de DirectX 12 a Vulkan; Valve hace lo propio con Dota2 y CSGO; e id Software lleva años apostando por esta API para sus Doom o el reciente Wolfenstein II: The New Colossus.

¿Y qué obtenemos de todo esto? ¿Qué beneficio sustancial recibe el usuario de esta prolongada batalla de nomenclaturas y revisiones? Un progreso tecnológico enorme, donde la competencia sienta mejor que los nombres propios y donde hoy podemos usar sistemas portátiles como un Triton 700 o un Helios 300 y jugar a los últimos lanzamientos a la máxima resolución, con millones de partículas en movimiento, sombras dinámicas y una arquitectura mucho más avanzada.

Esta es una pequeña historia como muchas otras. Una de inconformismo y retos superados. Sin estos avances programáticos, muchos sistemas simplemente no podrían “leer” los videojuegos actuales —ni los desarrolladores apostar por nuevos motores gráficos—. A sabiendas que los equipos portátiles han alcanzado en rendimiento a muchos homónimos de sobremesa, no es mal momento para echar la vista atrás.

Imagen de cabecera | Microsoft

En InGET | Qué son los benchmarks y cómo te ayudan en tu experiencia gaming

En InGET | ¿Llegas tarde a los eSports? Estos son los juegos con más oportunidades para crecer

Israel Fernández