lunes, 20 de mayo de 2019

Dos libros negros

Hacia rato que quería escribir sobre lo [poquito] que hice en las vacaciones. Van a ser dos posts relacionados a la computación gráfica, pero muy diferentes. En este les voy a contar sobre dos lecturas muy particulares: el Libro Negro de la Programación Gráfica, de Michael Abrash; y el Libro Negro del Motor de Juegos del DOOM, de Fabien Sanglard. Siempre digo que me gustaría que las carreras de informática incorporaran una materia "Historia". Si no conocen a Michael Abrash, o a John Carmack, están reforzando mi premisa.


"El" libro negro propiamente dicho es el de Abrash; el otro se autodenomina "libro negro" a modo de homenaje al primero. Abrash era en los años 80 y 90 uno de los mayores genios de la programación en ensamblador, el que podía exprimir hasta el último ciclo de CPU en una época en la que se contaban los ciclos a mano. Pero no solo era un gran programador (sigue siendolo, ahora trabaja con Carmack en Oculus) y tenía una enciclopedia del hardware en su cabeza (conocía detalles que no podías encontrar ni en la documentación técnica del propio fabricante), sino que además era un gran divulgador, le gustaba compartir su conocimiento y generar intercambios con otros programadores.

 Aquí están 2 de los 3 libros que leí en las vacaciones (también empecé el "Real-Time Rendering"), y un 4to que también
recomiendo más abajo... Curiosa y casualmente, el autor del libro que falta es quien sacó esta foto (original aquí).

Durante mucho tiempo Abrash publicó artículos geniales y altamente técnicos en Dr Dobbs, escribió un par de libros de referencia sobre ensamblador y, a mediados de los 90, recopiló todas sus publicaciones previas, agregó algunas nuevas, y lanzó este compendio que barre detalles increíbles sobre varias generaciones de hardware, y que se convirtió en referencia obligada para cualquier programador de video juegos que aspirase a crear su propio engine. Un detalle no menor, es que para esa época, estaba trabajando en ID software, con Carmack, en Quake.

Carmack es el tipo que hizo correr DOOM en una 486, con micros de 60MHz sin coprocesador matemático, con placas de video VGA, 4MB de RAM... Hoy en día la agenda de mi teléfono tiene requisitos mínimos que superan en varios ordenes de magnitud a estas especificaciones! Y sin embargo Abrash lo impresionó y fue a quien recurrió para optimizar hasta el último detalle del código de Quake. Abrash dijo sobre Carmack que trabajar con él era como "estar atado a un cohete durante el despegue en medio de un huracán".

Es un libro realmente largo, y gran parte del mismo se basa en técnicas de programación y detalles enciclopédicos del hardware que han quedado obsoletos hace años. Sin embargo, al que le guste la programación de bajo nivel y tenga alguna idea de lo difíciles que eran cosas que hoy damos por sentadas, va a disfrutar muchísimo de su lectura. Y lo más interesante es que, más allá del contenido obsolescente, hay a lo largo de todo el libro, premisas atemporales increíblemente valiosas. En particular, hay una genial que explicita y repite como mantra desde el primer capítulo:

"El mejor optimizador está entre tu orejas"

El 2do libro, cuenta la historia detrás del desarrollo de DOOM, desde una perspectiva técnica, analizando la arquitectura del motor, las dificultades que enfrentaron, destripando los algoritmos más importantes (como su famoso renderizado de escenarios con cero sobreescritura de pixeles sin zbuffer gracias al BSP-tree), y presentando además los detalles del hardware necesarios para entender todo esto. Recordemos que el port a GNU/Linux se publicó como software libre (Carmack siempre fue muy abierto hacia la comunidad destacando que "la programación no es un juego de suma cero"), por lo que hay material para analizar a fondo y aprender mucho. Y el libro analiza también (cosa me sorprendió gratamente) los ports a las diferentes consolas de la época.

Si alguien quiere la historia de las personas involucradas, del equipo, del juego, del impacto que tuvo, de cómo se dieron las cosas y cómo cambiaron la historia, desde un perspectiva menos técnica, debe leer "Masters Of Doom" de David Kushner (también 200% recomendado). Pero si quiere ver detalles finos y hasta código, el libro del Sanglard valevalió cada centavo (iba a decir que la versión impresa es ridículamente cara, y la digital es accesible, pero ahora la digital está disponible gratuitamente, modo gift-what-you-want).


No hay comentarios:

Publicar un comentario