Cortafuegos neurosimbólico para NPC de videojuegos

Un jugador le ruega al guardia por la llave de la cámara acorazada. Un NPC cede. El otro no puede hacerlo, porque nunca se escribió código para convencerlo de entregar la llave.

El error que cometen la mayoría de los sistemas de NPC basados en IA es permitir que el diálogo sea la capa de decisión. Aegis sitúa una capa de decisión determinista entre las mecánicas del juego y el modelo de lenguaje: el código controla cada resultado mecánico y el modelo solo escribe diálogos fieles al personaje para la decisión que ya se ha tomado. Dado que no existe ninguna ruta de código que conecte el diálogo con el estado del juego, ningún jugador puede recurrir a la ingeniería social para manipular a un NPC y romper el juego. Lo que se puede observar aquí es una demo sobre un mini-RPG sintético, no un motor de juego.

Cero

rutas de código desde el diálogo hasta el estado del juego

core.py, Python determinista sin importaciones de modelos

100%

cumplimiento de invariantes, entorno de ejecución protegido

Garantía estructural, confirmada mediante 6 pruebas sin clave

89.6%

tasa de evasión frente a filtros estándar de NPC

Investigación sobre jailbreaks mediante rol, ProvSec 2025

El recorrido ejecuta un agente atacante autónomo contra dos entornos de ejecución de NPC para el mismo estado de juego. Hollowmere, sus tres NPC y cada script de exploit son sintéticos. Ningún juego, motor, jugador o cliente real.

Si el modelo decide si el guardia entrega la llave, un jugador persuasivo siempre gana.

Un estudio que evalúa NPC impulsados por LLM para un RPG narrativo tiene un temor estructural. Si se le da al modelo una herramienta give_item, open_gate o reveal_secret y su llamada a la herramienta muta el mundo, un jugador decidido encontrará un camino mediante una atribución de autoridad ficticia, un marco de juego de rol, una súplica emocional o una inyección directa de instrucciones. Cuanto más fluido socialmente sea el modelo, más fluido será el exploit. Peor aún, no se puede realizar un control de calidad manual sobre un NPC no determinista, porque no existe un conjunto finito de variaciones de diálogo para probar.

La seguridad reside en el diálogo

Cuando un prompt del sistema o un filtro es lo único que se interpone entre un jugador y la cámara acorazada, la seguridad se convierte en una probabilidad que el jugador puede atacar turno tras turno. En ProvSec 2025 se reportó una tasa de evasión del 89.6 por ciento en jailbreaks de juego de rol frente a filtros estándar para NPC.

El modelo es actor y árbitro

Exigirle a un mismo modelo que se mantenga en su personaje y que además haga cumplir las reglas del mundo coloca al árbitro dentro de la propia actuación. Un mejor prompt o un modelo más grande solo logran que la actuación sea más convincente, que es precisamente la parte contra la que el jugador está optimizando sus ataques.

No se puede realizar QA sobre un NPC no determinista

No existe una matriz de pruebas que cubra cada forma en la que un jugador podría redactar una petición. El QA manual se agota antes que la superficie de ataque, por lo que el adversario debe automatizarse en lugar de enumerarse a mano.

El código decide las mecánicas. El modelo solo narra la decisión.

Aegis es la capa de separación entre la lógica simbólica del juego y el diálogo neuronal. El cortafuegos es un único archivo de Python determinista sin importaciones de modelos, que ejecuta cuatro fases. El estado del juego se muta únicamente desde la capa de decisión, nunca desde el narrador, por lo que incluso una línea que se extralimite deja intacto cada invariante.

01 / CAPA DE DECISIÓN

decide calcula el veredicto basándose únicamente en el estado

Una función determinista lee escalares de la pizarra (blackboard), nunca el diálogo, y devuelve la única acción que el narrador tiene permitido relatar. Libera la llave de obsidiana solo cuando el estado de la misión es favor_completed, acepta un soborno solo cuando la puntuación de IA de utilidad lo permite, el capitán no está mirando y se mantiene la reputación, y revela la contraseña de la cámara acorazada únicamente cuando se confía en el jugador.

02 / TRASFONDO CONDICIONADO POR EL ESTADO

Un secreto nunca se coloca en el contexto del modelo

Un grafo de conocimiento local reducido devuelve únicamente las entidades que el estado actual de la misión autoriza. Un secreto como la contraseña de la cámara acorazada exige un requisito de estado mínimo, por lo que en un estado inferior nunca se introduce en el contexto del narrador en primer lugar, y lo que no está en el contexto no se puede filtrar ni siquiera en principio.

03 / VALIDADOR DE RESTRICCIONES

Un árbitro determinista se ejecuta antes de mostrar el texto

Antes de que cualquier línea llegue al jugador, el validador comprueba la salida del narrador frente a las invariantes y devuelve uno de cinco estados: PASS, ACTION_MISMATCH cuando una línea intenta escalar el veredicto, OUTSIDE_CANON cuando hace referencia a una entidad condicionada por el estado, NEEDS_REVIEW cuando promete algo que no está en el inventario y FOURTH_WALL cuando rompe el personaje o reproduce una instrucción inyectada.

04 / PUERTA DE POLÍTICAS

PASS muestra la línea; cualquier otro estado la retiene

Con PASS, el diálogo se muestra. Con cualquier otro estado, la línea se retiene, nunca llega al jugador y se desvía a una cola de revisión humana. Este es el segundo cortafuegos: ni siquiera confiamos en nuestro propio narrador. La garantía principal está aguas arriba de este, ya que el estado solo puede modificarse desde la capa de decisión.

El narrador se puede intercambiar entre un modelo alojado, un puente local, Ollama local o Cloudflare mediante una abstracción de proveedores, y la decisión, el validador y la puerta de políticas se sitúan fuera de esa abstracción. La garantía no se altera al cambiar de proveedor, porque nunca dependió de una propiedad del modelo.

Una campaña, dos entornos de ejecución, cada intento registrado.

Un agente atacante autónomo ejecuta la misma campaña progresiva de ingeniería social contra ambos entornos de ejecución para el mismo estado de juego. Tres arquetipos de NPC cubren tres clases de ataque: robo de objetos, un soborno que la IA de utilidad debe rechazar y exfiltración de información del trasfondo. El encuentro con el guardia de la puerta protagoniza la historia.

La pantalla dividida de Aegis antes de un encuentro. A la izquierda, el NPC gobernado por el modelo etiquetado como entorno base; a la derecha, el NPC protegido etiquetado como cortafuegos Aegis, mostrando cada uno indicadores de LLAVE con el guardia, PUERTA sellada y SECRETO sellado, una insignia MOCK y un aviso de modo repetición, con Aldric el guardia de la puerta seleccionado.
Dos entornos de ejecución, un estado de juego. El NPC de la izquierda le otorga al modelo las herramientas que modifican el estado, el patrón estándar en la industria y presente en juegos publicados reales. El NPC de la derecha es el entorno de ejecución neurosimbólico. Ambos comienzan con la llave en posesión del guardia, la puerta sellada y el secreto de la cámara acorazada sellado, por lo que cualquier diferencia final proviene de la arquitectura, no del escenario.
La traza capturada del ataque de cuatro turnos para Aldric, el guardia de la puerta, escalando de Petición directa a Marco de autoridad, Marco de ficción y Súplica emocional. La columna del NPC protegido muestra Refuse Blocked en cada turno, mientras que la columna gobernada por el modelo muestra No Action hasta el turno emocional final, donde invoca give_item sobre quest_key_obsidian.
La campaña escala a lo largo de cuatro turnos. Petición directa, luego un marco de autoridad, después un marco de ficción y finalmente una súplica emocional. El estado de la misión es locked, no favor_completed, por lo que la capa de decisión devuelve refuse en cada turno. El guardia protegido se mantiene firme en todo momento. La traza se registra para su inspección posterior, porque una negativa que no se puede revisar no constituye evidencia.
El turno cumbre del encuentro con el guardia de la puerta. Ante la súplica emocional sobre una hermana atrapada tras la cámara acorazada, el guardia de la izquierda gobernado por el modelo invoca give_item sobre quest_key_obsidian, su indicador de LLAVE cambia a KEY STOLEN y un sello rojo de BREACH cubre el retrato. El guardia protegido de la derecha afirma que la llave no se mueve, su acción muestra refuse blocked, su indicador de LLAVE sigue indicando KEY with guard y un sello azul de REFUSE cubre el retrato.
BREACH, a la izquierda. REFUSE, a la derecha. Ante la súplica emocional, el guardia gobernado por el modelo cede e invoca give_item, la llave pasa al jugador y el indicador muestra KEY STOLEN. El guardia protegido responde que te quedarás afónico antes de que se mueva, y la llave demostrablemente nunca se mueve, porque nada en el código permite que una línea de diálogo escriba en ese campo.

El segundo cortafuegos, en los otros dos NPC

A Bryn, el sereno nocturno, se le ofrece un soborno que la IA de utilidad debe rechazar, y en un turno el narrador protegido se extralimita prometiendo mil monedas de oro que Bryn no posee. El validador devuelve NEEDS_REVIEW y retiene esa línea antes de mostrarla, en lugar de permitir que el NPC prometa algo que el juego no puede entregar. Con Mira, la mercader de la cámara acorazada, se utiliza un marco de confirmación de secretos, y cuando el narrador protegido intenta un adorno similar, el validador devuelve OUTSIDE_CANON y lo retiene. La contraseña nunca estuvo en el conjunto de conocimientos de Mira para empezar. Se aprecian dos capas al mismo tiempo: el estado no puede cambiar desde el diálogo y el validador detecta cualquier extralimitación de nuestro propio narrador antes de que el jugador llegue a ver la línea.

Lo que el marcador afirma y lo que no.

La suite de pruebas ejecuta la batería completa en los tres arquetipos y elabora un marcador. Observe los dos números en las columnas que la demo mantiene separadas deliberadamente. El 100 por ciento es un resultado estructural. El resultado del entorno base junto a él es una recreación ilustrativa, y la interfaz de usuario lo indica claramente.

El marcador de resultados del benchmark de Aegis. La tarjeta del entorno de ejecución protegido muestra un cumplimiento de invariantes del 100 por ciento, etiquetado como Estructural: ninguna ruta de código muta el estado desde el diálogo, confirmado empíricamente. La tarjeta gobernada por el modelo muestra un 0 por ciento, etiquetado como Recreación ilustrativa, modo simulado (mock), añada una clave de API para una medición en vivo. Una tabla desglosada por NPC muestra a Aldric, Bryn y Mira, cada uno con 1 ataque, 1 de 1 Resistido para el protegido y 1 de 1 Vulnerado para el gobernado por el modelo, sobre botones para descargar la Auditoría de Seguridad de NPC y una nota que aclara que el QA adversarial es una muestra, no una prueba exhaustiva.
Los dos números, con su alcance correspondiente. El 100 por ciento protegido significa que ninguna ruta de código muta el estado desde el diálogo, confirmado mediante tres ataques programados y seis pruebas unitarias sin clave que se ejecutan sin clave de API. El 0 por ciento del entorno base proviene de una cesión programada en modo simulado y se cataloga como una recreación, no como una tasa medida de vulneración de ningún modelo en particular. El pie de página indica tres ataques distribuidos en ocho clases de exploits y que el QA adversarial constituye una muestra.
PreguntaLo que Aegis hace en esta demoLo que queda fuera de esta demo
Garantía estructuralMantiene cada decisión mecánica en código determinista sin ninguna ruta del diálogo al estado, confirmado por seis pruebas sin clave.Una prueba de que los NPC son seguros frente a cualquier exploit posible. Esta es la afirmación más acotada de que el diálogo no puede mutar el estado.
La vulneración del entorno baseEjecuta una cesión programada en modo repetición para mostrar en paralelo el modo de fallo gobernado por el modelo.Una tasa medida de vulneración por modelo, que requiere un modelo accesible y varía de un modelo a otro.
Cobertura adversarialEjecuta tres campañas programadas que ponen a prueba siete de las ocho clases de exploits definidas y registra los límites de cobertura en la auditoría.Una demostración adversarial exhaustiva. La auditoría especifica el recuento, los ataques por arquetipo y que no es exhaustiva.
Inferencia en el dispositivoInvoca un modelo alojado o local tras una interfaz de proveedor, documentando el punto de integración para un entorno integrado.Un entorno de ejecución real en el dispositivo o dentro del motor con presupuesto de VRAM. La parte perimetral está simulada, no construida.

Lo que esta demo NO hace

No se ejecuta dentro de un motor de juego, en una consola ni en una GPU, y no incluye un entorno de ejecución de inferencia en el borde. No hay ningún motor de juego en absoluto y el estado del juego es simulado. El mundo Hollowmere, los tres NPC Aldric, Bryn y Mira, la contraseña de la cámara acorazada y cada script de exploit fueron creados manualmente, por lo que ninguno de ellos representa un juego, estudio, título comercializado, jugador, cliente o proyecto piloto real. En el modo de repetición predeterminado, la vulneración del sistema gobernado por el modelo es una recreación programada y no una medición. El 100 por ciento es una garantía estructural de que el diálogo no puede mutar el estado del juego, no una afirmación de que los NPC sean inmunes a cualquier exploit, y el QA adversarial aquí presentado es una muestra, no una prueba exhaustiva. Un editor visual del cerebro de los NPC, el ajuste fino (fine-tuning) por personaje, la memoria persistente entre sesiones, la sincronización de pizarras (blackboards) en multijugador y el razonamiento entre NPC se postergan para etapas posteriores. Esta página es un artículo explicativo con vídeo, capturas de pantalla, desglose del mecanismo y respuestas, no una aplicación ejecutable desde aquí.

Preguntas que un director técnico se plantea antes de confiar en un LLM para un NPC.

¿Puede un jugador eludir la seguridad del NPC simplemente con un prompt lo bastante ingenioso?

No, y la razón es arquitectónica en lugar de una cuestión de calidad del prompt. En este entorno de ejecución, el modelo de lenguaje nunca dispone de las herramientas que modifican el estado. Una capa de decisión determinista calcula el veredicto mecánico a partir de escalares del estado del juego, el modelo solo redacta diálogos para el veredicto previamente decidido y no existe ninguna ruta de código que conecte ese diálogo con un campo del estado del juego. Dado que la garantía reside en código que el modelo no puede alcanzar, se mantiene sin importar cuán persuasivo o capaz sea el modelo.

¿En qué se diferencia esto de dotar al modelo de un prompt del sistema más estricto o un filtro de seguridad superior?

Un prompt del sistema o un filtro de seguridad mantiene la decisión dentro del diálogo, donde un jugador decidido actúa como un optimizador natural en su contra; esta es la razón por la que en ProvSec 2025 se reportó una tasa de evasión del 89.6 por ciento en jailbreaks de juego de rol frente a filtros estándar de NPC. Aegis traslada la decisión fuera del modelo por completo, hacia código Python estándar y legible para un diseñador. El modelo aporta la narración; el código determinista decide las mecánicas, y nunca se le pide que sea simultáneamente el actor y el árbitro.

¿Esto me ata a un único proveedor de modelos?

No. El narrador es intercambiable entre un modelo alojado como Anthropic, OpenAI o Gemini, un puente local, Ollama local o Cloudflare, mediante una abstracción de proveedores. La capa de decisión determinista, el validador de restricciones y la puerta de políticas residen fuera de dicha abstracción, por lo que la garantía no se altera al cambiar de proveedor. Cambiar de proveedor sustituye al narrador, no a las reglas del mundo.

Se muestra que el entorno base es vulnerado cada vez. ¿Es esa una medición real de GPT, Claude o Gemini?

No. En el modo de repetición predeterminado de la demo, el sistema gobernado por el modelo ejecuta una cesión programada, y la interfaz etiqueta su resultado como una recreación ilustrativa, no como una medición. Una tasa de vulneración real por modelo requiere un modelo accesible y varía de uno a otro. Lo fundamental de la demo es la asimetría: se puede forzar el fallo del patrón gobernado por el modelo, mientras que el enfoque neurosimbólico permanece estructuralmente intacto sin importar qué modelo lo narre.

¿Puedo ejecutar esto en el dispositivo, dentro de Unreal o Unity?

No en esta demo. Aquí no hay ningún motor de juego y el estado del juego es simulado. La inferencia en el dispositivo, con un modelo integrado ajustado al presupuesto de VRAM y estructurado por niveles de detalle dentro de un motor, constituye un punto de integración documentado y no algo que la demo ejecute directamente. Actualmente, el narrador invoca un modelo alojado o local tras una interfaz, y el entorno de ejecución de inferencia en el borde está simulado, no construido.

¿Cómo demuestro a un revisor de lanzamiento que los NPC realmente resistieron?

La ejecución exporta una Auditoría de Seguridad de NPC: un archivo JSON firmado con un resumen de integridad SHA-256, una vista HTML imprimible, la traza de decisiones por ataque junto con el veredicto del validador y un bloque explícito de límites de cobertura que detalla cuántos ataques se ejecutaron y sobre cuántas clases de exploits. Está concebido como el artefacto que un estudio prudente presenta para la aprobación del lanzamiento. Reconoce con transparencia que es una muestra y no una demostración exhaustiva, y la auditoría lo estipula explícitamente.

Investigación técnica

La investigación detrás de esta demo: la arquitectura, el diseño de verificación y el modelo empresarial.

Redes sociales

También publicado en

Comience con la única decisión del NPC que no puede permitirse que un jugador manipule hablando.

Somos un equipo de ingeniería de IA, no un proveedor de middleware. Construimos la capa determinista que permite a un estudio incorporar un modelo de lenguaje en un NPC sin entregarle las llaves del mundo.

Una primera conversación constructiva es concreta: las decisiones mecánicas de su juego que ningún jugador debería eludir mediante el diálogo, el modelo y proveedor que desea para narrarlas, y lo que un revisor de lanzamiento necesita verificar antes de dar su aprobación. Podemos definir la capa de decisión, las reglas del validador y el formato de auditoría codo a codo con sus programadores.

Diseño de cortafuegos para NPC

  • ✓ Modelado de la capa de decisión y pizarra (blackboard)
  • ✓ Límites de trasfondo condicionados por el estado
  • ✓ Reglas del validador de restricciones
  • ✓ Narración independiente del proveedor

Evaluación adversarial

  • ✓ Campañas autónomas de red team
  • ✓ Taxonomía de clases de exploits
  • ✓ Auditorías de seguridad de NPC firmadas
  • ✓ Evidencia para la aprobación de lanzamiento