IA, automatización y arquitectura de motores
Llevo más de 17 años en juegos AAA en Ubisoft, Eidos, Tencent y Bandai Namco. Empecé como technical designer y terminé como director técnico sénior. Vengo del bajo nivel: C++, memoria, optimización de GPU. Hoy también lo uso para montar LLM locales (sin nube) y flujos de agentes que un equipo puede usar a diario. He dirigido equipos técnicos repartidos entre varios estudios y países, y donde más sirvo es cuando una producción se atasca en un problema técnico difícil. Tengo TDAH y altas capacidades. Pienso en sistemas, y se nota en cómo depuro.
Pragmatismo.
Cuando contrato, busco potencial y un nivel técnico real, no palabras clave en un CV. Para puestos sénior y lead, quiero gente capaz de diseñar una arquitectura que aguante la producción, no gente que se sabe la teoría de la clean architecture pero nunca ha tenido que pelearse con el hardware. Mis entrevistas técnicas son sobre todo resolución de problemas en vivo: le pido al candidato que defienda una decisión difícil, por ejemplo elegir un algoritmo y no otro para ganar unos milisegundos en el hilo de render. La comunicación cuenta tanto como el código. Un programador brillante que no sabe documentar una decisión ni trabajar con el equipo de arte le va a costar al proyecto más de lo que aporta.
No llevo a nadie de la mano. Intento que la gente sea autónoma dándole un método. Empujo a los ingenieros junior e intermedios a entender lo que pasa de verdad en la memoria y en la GPU, en vez de fiarse del motor o del framework que les tocó. Quiero que vean venir los cuellos de botella y que me traigan una solución, no solo una pregunta. Los dejo equivocarse donde el error no rompe nada, y el responsable de que la infraestructura del equipo siga estable soy yo.
No hago microgestión. Mi trabajo es preparar el entorno técnico y la organización para que los ingenieros puedan avanzar. Quito lo que frena a todo el mundo, y respondo de que la arquitectura aguante a largo plazo.
Tres semanas antes de mandar una vertical slice a los inversores, un cambio grande en la compresión de texturas rompió nuestra gestión de memoria. Los kits de desarrollo se caían al azar después de unos diez minutos de juego. El equipo estaba bajo presión, cada uno subía arreglos locales que se contradecían, y la regresión iba a peor.
Congelé todas las subidas de código que no tuvieran que ver con el bug. Metí a tres especialistas de sistemas en una sala aparte y hacíamos un punto cada hora en el que solo se hablaba de hechos y de volcados de memoria. El CTO quería un culpable, así que asumí el problema yo y mantuve al equipo fuera de la política. Mirando cómo se asignaban las páginas de memoria, encontré un conflicto de hilos en el motor de render que nadie había visto. En 48 horas teníamos un parche para sortearlo y el build estuvo estable a tiempo, sin meter al resto del estudio en crunch.
Proyectos: Assassin's Creed (III, Unity, Odyssey, Valhalla y DLC), Rainbow Six Siege (+ DLC), For Honor.
Proyecto: Deus Ex: Human Revolution.
Un ejecutable de 38 KB con meteorología completa y ciclo de día y noche.
Escenas fotorrealistas en GLSL, con base física (PBR), totalmente procedurales.
Mi propio motor de render, escrito en C# con OpenTK.
Una instalación de LLM local, sin nube, sobre Llama 4, Docker y OpenWebUI, con AutoGen encima.
Los comienzos de un sistema de menús multiplataforma en Unity.