Alan Wolfe: entrevista exclusiva para AT
Nueva entrevista para AT. Esta vez con Alan Wolfe, un Senior Graphics Developer Technology Engineer de NVIDIA. Él es un desarrollador con una dilatada experiencia en esta industria, habiendo trabajando en empresas tan conocidas del sector como Blizzard Entertainment, Midway Games, Monolith, etc.
Alan también tiene interesantes proyectos personales que tu puedes ver en su blog personal. Pero si quieres conocer más sobre él, te invito a continuar leyendo la entrevista completa…
Architecnología: ¿Quién es Alan Wolfe? (Descríbete, por favor)
Alan Wolfe: Mi nombre es Alan Wolfe y soy un programador de juegos y gráficos autodidacta que trabaja actualmente en NVIDIA, anteriormente trabajé en Blizzard donde participé en Starcraft 2, Diablo IV, y algunas cosas súper secretas también. Comencé a programar juegos en modo 13h days (486 y 16 bits de programación) y en los últimos tiempos he aprendido muchas de las cosas más geniales que sé de los escenógrafos de las demostraciones, la gente de shadertoy.com, así como de la increíble comunidad de desarrolladores de juegos y gráficos en twitter.
Tengo mi propio blog técnico con más de 200 entradas en https://blog.demofox.org/. El objetivo principal de la escritura es hacer una variedad de temas más accesibles para la gente. El artículo más popular recientemente es el de «casual path tracing» que muestra cómo hacer imágenes fotorrealistas manteniendo las matemáticas al mínimo.
Tengo casi 40 años, pero en los últimos dos años me he dedicado al skateboarding y al bodysurfing, y he hecho unos 15 años de artes marciales. Dato curioso: En mi prueba de cinturón negro de primer grado, golpeé con los nudillos desnudos a un tipo delante de los monjes Shaolin. Me sentí un poco como Mortal Kombat jaja… Sin embargo, hoy en día entreno de manera más informal.
También tengo dos hijos: una hija de 3 años y un hijo de 6 años.
AT: ¿Cuándo y cómo te comenzó a interesar la tecnología?
A.W.: Siendo un adolescente en los 90. Siento que nací en el momento justo para subirme al tren de la tecnología moderna. Todos mis amigos estaban metidos en varias áreas de la tecnología. Me gustaba escribir y los videojuegos, así que vi la programación como una forma de hacer historias interactivas. Lo curioso es que mi carrera ha ido increíblemente en la dirección opuesta, donde he pasado mi tiempo en las entrañas del motor gráfico, o haciendo sistemas de juego, y casi ninguno haciendo cosas que uno consideraría «hacer historias interactivas».
AT: ¿Tienes algún referente? ¿Alguien que te haya inspirado?
A.W.: Tengo un par de personas que me inspiraron y me ayudaron a continuar con mi aprendizaje.
Un tío mío «Tío Chris» me vio programando en QBASIC y aprendiendo todo lo que pude, así que me puso con un compilador de C++ (El instalador era como de 20+ discos) «Borland C/C++ for DOS» y algunos libros para empezar. Eso realmente me puso en el camino correcto, y todo lo demás que ha venido desde entonces no habría sucedido sin esa ayuda. ¡Gracias tío Chris!
Otra persona que me ayudó mucho fue mi profesor de informática AP en la escuela secundaria «Mr. Forester» Dana Hills en Dana Point CA. Vio que yo y otra persona estábamos muy adelantados en la clase, así que hizo una clase de «AP CS de segundo año» dentro de esa clase sólo para nosotros, y nos enseñó un montón de cosas realmente geniales. Ahí fue donde aprendí tipos de datos abstractos y algoritmos relacionales, lo cual es supremamente fundamental si vas a trabajar en un campo en el que elaboras tus propios algoritmos y si el rendimiento realmente importa. No tengo ningún título, y casi dejé de estudiar en la Escuela Superior (más cierto que no), así que esto fue increíblemente valioso.
Por último, mi gran inspiración, y mi ídolo hasta el día de hoy, es John Carmack. Inventó el género de los shooters en primera persona, e inventó una tonelada de tecnología para hacerlo posible. Impulsó los gráficos y el desarrollo de juegos mucho más allá de lo que había y sentó las bases de lo que juegos actuales como Call of Duty, Battlefield, Fortnite y otros. Ha comentado algunas cosas que he publicado en Twitter, y eso me ha hecho sentir coo «¡Carai se fijó en mí!».
AT: Actualmente ocupas eres Senior Graphics Developer Technology Engineer. ¿Cuál es tu tarea específica dentro de NVIDIA?
A.W.: He estado en NVIDIA por poco más de medio año. Es un gran lugar para trabajar con un montón de cosas diferentes que van desde la robótica hasta el machine learning y los gráficos en tiempo real.
Hasta ahora he pasado la mayor parte del tiempo trabajando en el plugin RTXGI para Unreal Engine, que es un algoritmo que utiliza el trazado de rayos para hacer «iluminación global» o iluminación de rebote. Normalmente las superficies de los juegos se iluminan principalmente con luz directa… luz que viene directamente de una fuente de luz como una lámpara o el sol. Si quieres que la luz rebote de una pared roja en el suelo, de modo que haya un poco de luz roja en el suelo, eso es mucho más desafiante. El RTXGI permite eso, pero requiere el Ray Tracing para funcionar.
Di un enlace a mi blog sobre el path tracing antes. El trazado de caminos te da iluminación global «gratis» así como otros efectos como la oclusión ambiental, pero el problema es que es demasiado lento para funcionar en tiempo real actualmente (eso puede cambiar en el futuro). El realismo es grande en los juegos modernos, y el trazado de caminos es la «verdad fundamental» a la que todos aspiramos. El RTXGI ayuda a la gente a acercarse a esa verdad fundamental y a la vez es lo suficientemente rápido para su uso en tiempo real, como en los videojuegos.
AT: Tú también has trabajado en Warner Bros., Blizzard Entertainment, etc., con más de 20 años de experiencia en la industira. ¿Cuál ha sido el mayor desafío al que te has enfrentado?
A.W.: Para ser honesto, las cosas no técnicas han sido las más difíciles. Piensas que al entrar en un campo técnico, y tratar con problemas técnicos, las cosas serán medibles y basadas en datos objetivos. ¡Pero no es así! Mientras los humanos se involucren, el término «objetivo» es un poco un ideal inalcanzable.
Una cosa importante para hacer como programador, además de aprender la materia técnica, es practicar la comunicación y la persuasión.
AT: ¿Cómo ves el mundo del gaming en el futuro? ¿Cuál piensas que será el siguiente gran salto?
A.W.: La próxima ronda de consolas debería ser interesantes. Se siente como si la RV estuviera muriendo y el trazado de rayos estuviera creciendo. Tendremos que ver cuán cierto es eso.
Durante el próximo tiempo, creo que los juegos mejorarán a medida que la gente encuentre nuevas formas de usar el hardware de trazado de rayos, y se hagan nuevas investigaciones para nuevas técnicas de muestreo y similares. Más allá de eso, siento que el realismo en los videojuegos llegará a su punto máximo y veremos algunos renderizados post-realistas realmente interesantes, a menudo construidos sobre las técnicas que usamos para el realismo.
Por ejemplo, si vieras «Into the Spiderverse», esa película estaba muy estilizada pero se basaba en un renderizado muy realista de path tracing. Creo que eso será sólo el principio, y la gente encontrará algunas formas interesantes de renderizar de forma no realista que aún se ven muy bien.
AT: Hay muchos proyectos sobre RV/RA que pretendía revolucionar el mundo del videojuego, pero la realidad es que muchos gamers prefieren una pantalla y un mando… ¿Piensas que se podrá superar esa tecnología de la vieja escuela o seguirán siendo dominantes?
A.W.: Realmente espero que la RV y la RA encuentren un hogar duradero en nuestro mundo. La RV es tan increíblemente inmersiva, y la RA nos permite no sólo jugar virtualmente en el espacio que nos rodea, sino que también nos permite adquirir habilidades que de otra manera no tendríamos, como saber dónde poner la mano para atrapar una pelota que se nos viene encima, o ser capaces de navegar por las estrellas de un vistazo.
Si eso ocurre…. quién puede decir. Parece como una eventualidad cuyo tiempo puede no haber llegado todavía.
AT: Muchos desarrolladores persiguen videojuegos muy realistas, con gráficos impresionantes… pero a veces, ves videojuegos como Minecraft que realmente tienen un éxito brutal, o los retro, los clásicos que aún tienen legiones de seguidores. ¿Cuál piensas que es la clave del éxito de un videojuego?
A.W.: Cuando me uní a Blizzard y me uní al equipo de Starcraft 2, creía que la gran tecnología era lo que hacía grandes juegos. Con el paso del tiempo, me di cuenta de que eso no es cierto.
He trabajado en 7 estudios de juegos diferentes y Blizzard fue, de lejos, el más exitoso, e hizo los juegos que más disfruté.
La salsa secreta allí era preocuparse por el producto final, ¡lo creas o no! Todos en esa compañía, de arriba a abajo, se preocuparon en primer lugar por hacer un gran juego. Sin importar las diferencias de opinión de la gente, todos estaban de acuerdo en hacer grandes juegos.
Los juegos de Blizzard no siempre han tenido los mejores gráficos y no son conocidos por ser los más innovadores en cuanto a tecnología, pero hacen grandes juegos.
Si tu objetivo es intentar hacer algo con un tiempo limitado, o tratar de vestir una máquina tragaperras para que parezca un juego, o tratar de satisfacer alguna moda cultural pasajera, los jugadores pueden percibir eso.
Si te importa tu juego, a las otras personas también le importará.
AT: Veo que el TDP/TGP aumenta más y más, y que se hace cada vez más complicado reducir los nodos en las foundries. Existen videojuegos horriblemente optimizados. Como desarrollador, ¿Piensas que se invierten suficientes recursos para optimizar el software y que no demande cada vez más y más recursos?
A.W.: Lo que pasa con la optimización es que se optimiza tanto como se necesita, y no más.
Una vez que el juego se ejecuta lo suficientemente rápido, no hay razón para que se gaste más tiempo, esfuerzo y dinero tratando de exprimir más de él. Ese es el tiempo que podrías dedicar a añadir más al juego, o a arreglar otros errores.
Esto de aquí es básicamente por lo que podríamos ejecutar un procesador de textos en un 486 que tenía 4 MB de RAM, y ahora se necesitan 4 GB de RAM en una máquina moderna.
Las cosas tienden a crecer para consumir los recursos que se les da. Esto es cierto para el desarrollo de software, pero también para la vida misma.
AT: ¿Por qué C++ es el rey del desarrollo en cuanto a videojuegos?
A.W.: Para mí, C++ es el lenguaje más expresivo que existe.
Alguien puede sentarse a un compilador de C++ y escribir un sintetizador de música en tiempo real, un software de base de datos, un cliente de chat encriptado de red Peer-to-Peer, o un videojuego renderizado en 3D.
Muchos otros lenguajes se adaptan a propósitos específicos. Muy pocos tienen la capacidad de ir tan lejos como C++.
Rust y D son ciertamente contendientes, pero tienen que superar la resistencia a la adopción. Por ejemplo, las consolas tienen compiladores hechos por las compañías que las fabrican. Si esos compiladores sólo soportan C++, nadie va a cambiar si quieren enviar su juego en esas consolas.
AT: Hay herramientas de código abierto, APIs graficas para desarrollo, etc. Pero ¿Por qué crees que la filosofía FOSS no ha tenido la misma recepción en el mundo de los videojuegos? No hay demasiados títulos open-source… ¿Es solo cuestión de negocios o hay algo más?
A.W.: La falta de software libre en el desarrollo de juegos se debe definitivamente a preocupaciones comerciales.
La gente es muy reservada en los juegos, son muy competitivos, y también tienen mucho miedo a las confrontaciones legales.
Si una compañía de juegos publica una biblioteca que les ha ayudado a desarrollar un juego, eso es regalarle una ventaja a un competidor.
Además, si alguien usa esa biblioteca y hay un error que hace que un juego se rompa cuando se lanza, la compañía puede estar expuesta a ser demandada.
Por último, la propia biblioteca puede contener información secreta o puede mostrar a la gente cómo extraer información secreta de un juego, por ejemplo, filtrando contenido futuro al conocer el servidor desde el que se descargará el futuro contenido.
Es mucho riesgo para las empresas que no tienen recompensa.
Algunas personas publican software de código abierto a pesar de esto, y se ganan mi respeto por hacerlo.
Otra forma en que la idea del software libre se manifiesta es a través de contenido generado por el usuario, como en el juego «Dreams». También vimos esto hace años con Warcraft 3, básicamente dando a luz tanto al género de defensa de torres como a los MOBAs.
Me gustaría ver más juegos con contenido generado por el usuario.
Lo desafortunado es que el UGC añade una carga bastante grande al desarrollo. No sólo tienes que probar lo que han hecho tus creadores de mapas, también tienes que probar todo lo que sería posible.
Además, cuando se arreglan errores o se añaden características, hay que asegurarse de que no romper ningún UGC existente.
Es todo un reto.
AT: ¿Por qué piensas que los videojuegos por streaming en la nube no han terminado de despegar?
A.W.: El cloud gaming es una idea interesante. Creo que definitivamente despegará en algún momento… ¿a quién no le gustan los juegos de alta gama por un precio bajo?
Sin embargo, hay dos cosas que deben ser superadas… la primera es la latencia de entrada (lag). Es difícil imaginarme a mí mismo jugando al Quake a través de la nube.
La segunda es el modelo de negocio. Hay diferentes partes tirando y empujando a su favor y creo que pasará algún tiempo antes de que se encuentre un modelo de negocio que haga felices a todas las partes.
AT: Finalizo con una cuestión sobre seguridad. Hace un tiempo, en una entrevista pregunté a un auditor sobre si se le estaba dando suficiente atención a la seguridad en el lado del hardware. Me dijo que sí, que era seguro. Poco después de esa entrevista aparecieron Meltdown, Spectre, y un largo etc. Jajaja. Espero que esta vez no ocurra lo mismo… La pregunta es: ¿Piensas que los videojuegos están suficientemente auditados? Veo algunas entradas CVE publicadas relacionadas sobre videojuegos, pero no abundan especialmente…
A.W.: Al igual que la optimización, la seguridad tiene el concepto de ser «suficientemente buena» en contraposición a la perfección, o incluso necesariamente objetivamente buena.
El gran truco de la seguridad es no ser la fruta que cuelga más bajo.
Imagínese como una manzana en un árbol. Un cibercriminal es un transeúnte hambriento. Si eres la manzana que cuelga más baja del árbol, ¡probablemente te van a recoger!
Si te subes al árbol (aplicando algunas medidas de seguridad que no tiene tu competencia), no serás la manzana que sea elegida.
Saber cuánto tienes que hacer para estar lo suficientemente seguro es un desafío.
Por suerte, los juegos modernos pueden ser parcheados muy rápidamente por el lado del cliente, o a menudo tienen componentes del lado del servidor que pueden ser cambiados más rápidamente ya que las compañías de juegos son propietarias de los servidores.
La charla de seguridad anterior se refiere a la seguridad del juego en sí, como el hackeo para obtener botines o bots.
Sin embargo, hay otro aspecto de la seguridad y es si al ejecutar mi juego vas a recibir malware de otro jugador al ejecutarlo.
Los juegos han tenido un buen historial en eso debido a la comunicación entre clientes o servidores con mensajes muy específicos. Es posible que puedas tener una sobrecarga de buffer o similar, pero no es probable que tenga un resultado deseado. En el mejor de los casos, podrías colapsar un servidor, o colapsar un cliente de juego de un jugador. Los juegos han tenido un buen historial sobre esto.
Volviendo al secreto, la mayor preocupación de seguridad que he visto en las compañías de juegos es evitar la fuga de los juegos que salen, o el futuro contenido de esos juegos. Y eso es así porque son la fuente de ingresos.
Para terminar…
Cuando era niño, muy poca gente se ganaba la vida haciendo videojuegos y sonaba raro si decías que eso era lo que querías hacer.
Hoy en día, es una verdadera carrera con un salario digno, y el concepto de «crunch» o horas extras no pagadas parece estar empezando a disminuir a medida que la industria crece – en 8 años eventualmente trabajé 2 noches hasta tarde, por ejemplo, mientras que una década antes, una vez trabajé 60-80 horas semanales durante 9 meses seguidos.
Estoy muy contento de haber elegido el desarrollo de juegos, y más tarde la programación de gráficos específicamente, y he encontrado que es un empleo muy gratificante que nunca me aburre.
Si el desarrollo de juegos es algo que te interesa, no temas que no puedes o que no estarás a la altura del desafío del trabajo.
El principal requisito para ser un desarrollador de juegos exitoso es querer hacerlo. Las técnicas y herramientas se pueden aprender, pero la pasión es mucho más difícil de adquirir.
Gracias Alan!