Margit el Augurio Caído levanta el bastón. Se queda congelado en el aire un segundo y medio.
Tú ya estás rodando. Tu pulgar ha apretado la B antes de que tu cerebro terminara de procesar lo que veías, porque las ocho muertes anteriores te han enseñado una cosa: los movimientos iniciales de Margit esconden dos secuencias completamente distintas, y la única pista es el temblor de la punta del bastón. Pero esta vez no te ha dado tiempo a distinguirlo: has rodado antes de ver la punta. El tajo diferido de Margit cae con precisión milimétrica sobre el último fotograma de tus i-frames. YOU DIED.
Novena muerte. Te quedas mirando la pantalla y empiezas a notar algo inquietante: cuantas más veces mueres, más «legible» se vuelve Margit. No es que se haya vuelto más débil —los datos del jefe no cambian tras cada muerte—, es que tu cerebro está compilando su repertorio de movimientos en un conjunto de reglas: punta hacia delante = embestida triple; punta hacia arriba = martillazo sagrado; distancia mayor que un cuerpo = cuchillos voladores. Las reglas son pocas, cada una cristalinamente clara, y cada una tiene su ventana de respuesta exacta.
Este es el rasgo más contraintuitivo de la IA de FromSoftware: cuanto más simple es, más inteligente te parece.
No es IA, es un PDA
En junio de 2026, un artículo de ingeniería inversa publicado en nega.tv reventó Hacker News y Lobsters. Su contenido puede resumirse en un hallazgo sorprendente: el sistema de IA enemiga de FromSoftware —usado desde Demon’s Souls hasta Elden Ring— no se basa en árboles de comportamiento (Behavior Trees), ni en planificadores GOAP, ni tiene la más remota relación con el deep learning. Es, en esencia, un autómata con pila (Pushdown Automaton, PDA) programado en Havok Script (una variante de Lua para videojuegos, ya descatalogada), con estructuras de datos más espartanas que las de casi cualquier AAA.
FromSoftware llama «Goal» a la unidad básica de su IA. Un Goal es una tabla de funciones inmutable con tres callbacks fundamentales: activate (se ejecuta al iniciarse o cuando se agotan los subobjetivos), update (cada frame, devuelve Continue/Success/Failure), e interrupt (responde a eventos externos). Cada Actor (NPC o jefe) mantiene una pila de Goals. No es una simple máquina de estados finita: es un PDA con pila.
La lógica en ejecución es de una sencillez desarmante: cada frame se actualiza el Goal en la cima de la pila. Si el Goal actual necesita desplegar subcomportamientos, apila una pila de Sub-Goals y al frame siguiente se ejecuta el de arriba. Cuando un Goal termina, hace pop. Si un Goal falla, toda la cadena de subobjetivos salta de la pila y el control vuelve al Goal padre.
Veamos un ejemplo: CoolBossBattle. La función activate del jefe contiene un conjunto de acciones candidatas con pesos: a larga distancia, rayo mortal pesa 15 y ataque con salto pesa 65; a distancia media, golpe de tierra pesa 5, combo ligero pesa 60 y combo pesado pesa 35. Los pesos son dinámicos: los movimientos en enfriamiento tienen peso cero, y cuanto menos vida le queda al jefe, más pesan ciertos ataques letales. Cada ciclo de decisión es simplemente una selección aleatoria ponderada, seguida de un push del Goal de ataque correspondiente a la pila.
Aquí no hay «planificación». El jefe no predice dónde estarás dentro de tres segundos, no construye un modelo del mundo, no ejecuta una búsqueda de Monte Carlo. Solo saca una carta de la baraja de movimientos cada ciclo de decisión, basándose en un puñado de condiciones perfectamente definidas: distancia, enfriamiento, vida restante, número aleatorio.
Pero entonces, ¿por qué es tan difícil?
Aquí está la paradoja central de la filosofía de diseño de FromSoftware: hacer que el comportamiento enemigo sea predecible es justo lo que hace el combate más difícil.
Existe la idea equivocada de que «difícil = inteligente». Pero si recuerdas los momentos que de verdad te hicieron tirar el mando, verás que las muertes más frustrantes no ocurrieron porque el enemigo fuera demasiado listo, sino porque no entendías qué estaba haciendo. Cuando el comportamiento de un NPC parece aleatorio, inconsistente o directamente «tramposo», el jugador pasa en un instante de «necesito mejorar» a «este juego me está troleando». Se corta el aprendizaje. La frustración lo ocupa todo.
FromSoftware hace justo lo contrario. El repertorio de cada jefe es cerrado. La animación de inicio de cada ataque, los frames activos de golpe y los frames de recuperación son fijos. El jefe no «aprende» de tu estilo de juego: simplemente saca una y otra vez del mismo mazo aleatorio ponderado. Pero eso significa precisamente que tú puedes aprender al jefe. La diferencia entre la novena muerte y la primera no es que el jefe sea más débil, es que tu cerebro ha completado la ingeniería inversa de un sistema determinista.
El usuario de Lobsters icefox lo dijo sin adornos: «Ser más listo que la IA enemiga es una de las pocas ventajas que tienes en Elden Ring». Leído al revés es aún más preciso: que FromSoftware diseñe la IA para que el jugador pueda «burlarla» es la condición de posibilidad de que el combate de esta saga funcione.
La formulación de ingeniería de esta filosofía es: predecibilidad = jugabilidad. El comportamiento emergente no viene de algoritmos de decisión complejos, sino de la explosión combinatoria de reglas simples frente a las distintas conductas de los jugadores. El tajo diferido es icónico no por usar IA avanzada, sino porque en la animación del Attack Goal se insertó una pausa extra de espera. Traducido para el jugador: «Aprende a contar frames».
Por qué los AAA que persiguen el ML se pegan el tortazo
Poner el sistema de FromSoftware junto a las tendencias actuales de IA en AAA produce un contraste casi cómico.
En la última década, el gran relato de la IA en videojuegos ha sido «hagamos NPCs más inteligentes». Los árboles de comportamiento se convirtieron en el estándar de facto: Halo 2 los usó a gran escala en 2004, y las secuelas llevaron el sistema al límite. GOAP (Goal Oriented Action Planning) fue mitificado hasta hoy gracias a los enemigos de F.E.A.R. (2005), que flanqueaban, saltaban coberturas y gritaban «¡está recargando!». La Utility AI demostró en Los Sims que podía impulsar simulaciones complejas de vida cotidiana. Cualquiera de estas soluciones es más compleja que el PDA de FromSoftware: los BT tienen nodos secuencia, selectores, paralelos y decoradores; GOAP requiere búsqueda A* sobre el espacio de acciones; Utility AI puntúa cada opción.
Pero la complejidad tiene un coste infravalorado: la pérdida de control. Cuanto más depende el diseñador de un planificador genérico que ensambla secuencias de comportamiento automáticamente, menos puede predecir qué hará el NPC en una situación concreta. El clásico de GOAP es que «el planificador a veces decide golpear la puerta con una escalera en vez de abrirla». Y la expansión de los BT suele ir acompañada de la maldición del «árbol que ya no entiende ni su padre»: hace más de una década, Damian Isla de Bungie ya advirtió en su charla de GDC que la complejidad del BT de Halo 3 había llegado a un punto en que los diseñadores ya no podían comprender completamente las cadenas causales del comportamiento.
Para FromSoftware, esto no es un problema: porque directamente no le dan a la IA la capacidad de «autoplanificarse». El comportamiento de cada jefe está coreografiado frame a frame por el diseñador. El animador decide los frames de anticipación y los frames activos del ataque. El diseñador de combate decide los tiempos de enfriamiento y la distribución de pesos. Lo que el jugador percibe como «inteligencia» es el efecto emergente de esas tres capas de artesanía superpuestas, no el producto de un algoritmo actuando por su cuenta.
Esto es una línea divisoria en filosofía de la ingeniería. A un lado: «dale a la IA un marco de inteligencia general para que decida sola qué hacer». Al otro: «dale al diseñador una infraestructura lo bastante simple y combinable para que controle manualmente cada decisión de la IA». FromSoftware ha apostado por lo segundo, y ha ganado.
El sistema de interrupciones: el regulador de dificultad oculto
Además del stack de Goals y la selección aleatoria ponderada, el sistema de IA de FromSoftware tiene una tercera pata: las interrupciones (Interrupt).
Cada Goal puede registrar un callback de interrupción. Cuando ocurre un evento concreto —el jugador usa un objeto, lanza un hechizo, se sitúa en una zona específica a la espalda del jefe—, el evento de interrupción burbujea hacia arriba por el stack de Goals hasta que el callback interrupt de alguno devuelve true («yo me encargo»). La lógica de gestión puede incluir: vaciar el stack actual, hacer push inmediato de un nuevo Goal de ataque, o modificar el estado del Goal padre.
Por eso el Cazador de Campanas (Bell Bearing Hunter) casi siempre se abalanza sobre ti en cuanto bebes del frasco: en su sistema de interrupciones hay una regla que dice: detectar evento UseItem + 85% de probabilidad → vaciar acción actual, cargar de inmediato. Tú crees que el jefe «lee tus inputs», pero solo está respondiendo a un callback cableado a fuego.
La genialidad de este sistema es que permite al diseñador controlar con precisión milimétrica la intensidad de reacción del jefe al comportamiento del jugador sin mezclar esa lógica con el bucle de decisión base. El comportamiento rutinario del jefe (distancia media → sacar carta del mazo) y su comportamiento reactivo (estás bebiendo → te interrumpo) son dos canales lógicos independientes.
En HN alguien preguntó: ¿este sistema puede con escenarios más complejos que un Boss de Soulsborne? La respuesta del autor de nega.tv es que «puede llegar muy lejos». La razón es simple: la complejidad del framework PDA depende del número y la calidad de los Goals, no del framework en sí. ¿Quieres una aldea abierta donde cada NPC tenga rutinas diarias y red social? Necesitarás miles de Goals y un sistema de orquestación complejo. ¿Quieres un Boss para el recuerdo? Te bastan quince Goals y doscientas líneas de Havok Script.
Vuelta a lo básico: por qué ganó la baja tecnología
Volviendo a la pregunta del principio: ¿por qué las máquinas de estados de FromSoftware funcionan mejor que la IA de casi cualquier AAA?
La respuesta no está en la tecnología, sino en la filosofía de diseño. FromSoftware jamás ha tratado la IA como una herramienta para «simular inteligencia»: la ha tratado como un medio de comunicación del diseño de combate. El comportamiento del jefe es el idioma que el diseñador le habla al jugador. Cada golpe, cada ventana de recuperación, cada señal de «aquí puedes meter un golpe extra» es deliberado. Cuando la IA se vuelve demasiado compleja, demasiado impredecible, ese idioma se rompe. El jugador ya no está «aprendiendo el combate», sino «tragándose la tirada de dado».
Y hay ventajas de ingeniería más prosaicas. El PDA es mucho más eficiente en ejecución que un BT: normalmente solo necesita actualizar el Goal de la cima de la pila en cada frame, sin tener que recorrer el árbol entero desde el nodo raíz. El sistema de Goals de FromSoftware escribe el flujo de control en código imperativo, y el modelo de datos es minimalista: cada Actor tiene un array de floats y los Goals leen y escriben por índice. Nada de Blackboards, nada de buses de eventos, nada de árboles enormes llenos de nodos condición/secuencia/selector. El autor del artículo insiste en la actualización: en la mayoría de los AAA verías «árboles de comportamiento con decenas de miles de nodos y cientos de nodos independientes implementando flujo de control y acciones», mientras que el comportamiento de un Boss de FromSoftware suele ser «bastante pequeño».
Esto no significa, por supuesto, que el PDA sea una panacea sin costes. Escribir IA en Havok Script implica decirle adiós a las herramientas visuales de edición de comportamiento: los diseñadores programan. La depuración del sistema de interrupciones se vuelve exponencialmente más difícil según crece la profundidad del stack de Goals. Y la ausencia de un planificador genérico significa que cada jefe está hecho a mano y es difícilmente reutilizable. Pero para FromSoftware eso no es un bug, es un feature.
Al final, si una decisión técnica es correcta no depende de lo avanzada que sea, sino de si encaja con el problema que pretende resolver. El problema de FromSoftware nunca fue «hacer IA más inteligente», sino «hacer enemigos más legibles, más aprendibles y más justos». Usar un PDA en vez de GOAP, usar máquinas de estados en vez de deep learning, no es señal de atraso: es que lo que necesitaban era justo lo que la baja tecnología podía darles.
Este artículo se basa en información pública y discusiones de la comunidad. Si tienes experiencia directa en este ámbito, no dudes en señalar carencias o imprecisiones.