French Ship Madame De Pompadour
Python

French Ship Madame De Pompadour

Simulador social y generador de historias que crea narrativas de ciencia ficción basadas en Star Trek. OOP Python/Flask con algunas estructuras de datos, API Gemini, frontend React/Vite/Tailwind.

GitHub|

Simulador de naves espaciales que utiliza IA y acciones aleatorias inspiradas en Star Trek.


FS Madame de Pompadour es un simulador narrativo basado en texto que crea historias dinámicas e impredecibles ambientadas en un universo de ciencia ficción. Al hacer clic en «Siguiente», avanzas en la simulación turno a turno, observando cómo un elenco de personajes interactúa entre sí basándose en una combinación de comportamientos predefinidos e IA generativa.

imagen

El objetivo es crear un «terrario digital» en el que surjan dinámicas sociales complejas y acontecimientos inesperados a partir de reglas sencillas y del poder creativo de la IA.


Bienvenidos a la FS Madame de Pompadour.

El capitán Pepillo se volvió hacia el tripulante Harold y le espetó: «Informa sobre las medidas disciplinarias tomadas contra Von».

El capitán Pepillo se dirigió hacia la estación de comunicaciones y exigió: «Pónganme con el teniente Dubois inmediatamente».

Tedrick se inclinó hacia el tripulante Waylon y le susurró: «¿Has visto lo que ha hecho Von? Parece que el capitán Pepillo está de mal humor hoy», mientras se ajustaba sutilmente el uniforme para parecer presentable.

Konstantin echa un rápido vistazo al tripulante Harold y, a continuación, le murmura en voz baja al tripulante Mohammed: «Me pregunto qué habrá hecho Von para caerse mal al capitán esta vez», mientras pule discretamente una parte de la barandilla cercana.

El tripulante Von se arregla nerviosamente el uniforme y, al cruzar la mirada con el tripulante Ezechiel, murmura entre dientes: «Este va a ser un día largo», con la esperanza de que Ezechiel le responda.

El tripulante Mohammed, al darse cuenta de que Konstantin está puliendo discretamente, echa un vistazo a la barandilla y dice: «Parece que necesita un buen fregado, ¿eh? ¿Quizá deberíamos limpiar esta sección juntos, Konstantin?».

El tripulante Harold, al percibir el ambiente tenso y las órdenes del capitán, se ajusta con naturalidad el uniforme y le susurra al tripulante Sebastien: «Parece que Von está en el punto de mira, ¿eh? ¿Crees que deberíamos ir a por un café para relajar el ambiente antes de que las tareas se vuelvan más desagradables?»

Al ver la tensión, el tripulante Westley se vuelve hacia el tripulante Flin y le pregunta: «¿Has oído lo que ha pasado con Von? Parece que el capitán está de mal humor, quizá deberíamos asegurarnos de que nuestros puestos estén impecables».

El capitán Pepillo pide su opinión profesional al tripulante Harold.

El capitán Pepillo se dirige al tripulante Von y le exige: «Von, infórmame inmediatamente sobre el estado actual de tu puesto y de los sistemas».

El tripulante Westley, al darse cuenta de la severa orden del capitán a Von, se vuelve rápidamente hacia el tripulante Flin y le dice en voz baja: «Flin, revisemos los armarios de suministros; creo que el capitán querrá que hagamos un inventario de las raciones de emergencia», con la esperanza de parecer ocupado y evitar cualquier atención no deseada.

El tripulante Mohammed, al ver la tensión que rodeaba al capitán Pepillo, se acercó en silencio al tripulante Ezechiel y le susurró: «¿Crees que deberíamos preparar algunos productos de limpieza, por si acaso el capitán necesita que se haga algo rápidamente?».
imagenimagen

En esta instantánea de demostración de la simulación FS Madame de Pompadour, observamos un ecosistema social complejo y dinámico en movimiento. El sistema muestra su capacidad para generar una narrativa emergente no a través de eventos preestablecidos, sino permitiendo que agentes independientes interactúen, creando un rico y creíble tapiz de la vida en las cubiertas inferiores.

La simulación se pone en marcha con un catalizador claro: una figura de autoridad de alto rango, el capitán Pepillo, que introduce una tensión inmediata y de alto riesgo mediante órdenes directas. Esta «cascada de órdenes» se convierte en el punto de gravedad central de todo el ecosistema social. Fíjate en cómo sus exigencias no solo activan los guiones de los personajes individuales, sino que, en cambio, desencadenan un acontecimiento unificado y de gran presión. Esto pone de manifiesto el nuevo enfoque del sistema hacia la estructura jerárquica, en la que las acciones de un solo agente pueden dictar el enfoque, el estado de ánimo y el objetivo estratégico de todos los demás personajes del entorno compartido.

A medida que las órdenes del capitán se propagan entre la tripulación, vemos surgir estrategias sociales sofisticadas y reactivas. Los tripulantes no se limitan a continuar con tareas sin importancia; comienzan inmediatamente a asimilar la nueva realidad. Observa cómo personajes como Tedrick y Konstantin forman grupos de conversación temporales para cotillear y analizar la situación, intentando dar sentido a la nueva dinámica de poder. Lo que resulta aún más impresionante es que el tripulante Westley demuestra un nivel superior de lógica emergente al formular activamente una estrategia de supervivencia: sugiere que él y un compañero de tripulación aparenten estar ocupados con tareas oficiales para evitar la ira del capitán. No se trata de un comportamiento preprogramado, sino de una conclusión social lógica generada por la IA en respuesta a una amenaza percibida, lo que demuestra una sólida capacidad para evaluar riesgos.

Este breve momento revela un potente motor para la narración emergente que combina a la perfección los roles profesionales con la ansiedad personal. Vemos al tripulante Harold obligado a pasar de una conversación informal y en voz baja a dar una opinión formal y profesional ante la exigencia del capitán, lo que ilustra la capacidad del sistema para gestionar contextos sociales conflictivos. Toda la simulación gira en torno al conflicto central con Von, creando una olla a presión narrativa unificada en lugar de una colección de dramas separados y silenciosos. El motor ha madurado más allá de generar un simple tapiz de la vida, demostrando ahora el poder de simular una compleja red de cálculos sociales, alianzas estratégicas y pensamiento grupal emergente bajo presión.

FS Madame de Pompadour se basa en una arquitectura web moderna y desacoplada, que separa el motor de simulación del backend de la interfaz de usuario del frontend para garantizar la modularidad y el rendimiento.

Cargando imagen.png…

Backend: Python, Flask y Gemini

Todo el núcleo y la lógica de la simulación residen en el backend de Python.

  • Python: La elección natural por su potente gestión de datos y su robusto ecosistema de IA/ML. El enfoque orientado a objetos permite crear clases modulares como Crewman y ActorManager que son fáciles de ampliar.
  • Flask: Un marco web ligero y flexible utilizado para crear la API con la que se comunica el frontend. Su única responsabilidad es recibir una solicitud para el siguiente turno, activar la lógica de simulación y devolver el resultado.
  • Google Gemini: El «fantasma en la máquina». El proyecto se integra con la API de Gemini para impulsar su sistema de acción inteligente. Cuando un personaje decide actuar de forma «inteligente», el backend envía una solicitud —que contiene el contexto de la nave, el papel del personaje y el historial reciente de acciones— al modelo Gemini, el cual devuelve a continuación una acción creativa y adaptada al contexto.

Frontend: React, Vite y Tailwind CSS

La interfaz de usuario es una aplicación de página única (SPA) rápida y moderna.

  • React: Una potente biblioteca de JavaScript para crear interfaces de usuario dinámicas y basadas en componentes. Todo el registro de eventos es un componente de React que se actualiza de forma eficiente a medida que se reciben nuevas acciones del backend.
  • Vite: una herramienta de compilación de frontend de última generación que proporciona un servidor de desarrollo extremadamente rápido y compilaciones de producción optimizadas.
  • TypeScript: se utiliza para añadir tipado estático al código JavaScript, lo que mejora la experiencia del desarrollador y reduce los errores.
  • Tailwind CSS: Un marco CSS que prioriza la funcionalidad y permite aplicar estilos de forma rápida y coherente directamente dentro del HTML, tal y como se aprecia en los nombres de clase de los componentes.

Arquitectura general

El flujo de un turno es sencillo y eficaz:

  1. El usuario hace clic en el botón «Siguiente» de la interfaz de usuario basada en React.
  2. El frontend envía una solicitud fetch al punto final /action del backend, que se ejecuta en Flask.
  3. El servidor Flask llama al ActorManager de Python, que ejecuta un turno completo de la simulación, llamando potencialmente a la API de Gemini.
  4. El backend devuelve la cadena de acción resultante como un objeto JSON.
  5. El frontend de React recibe el JSON, actualiza su estado y muestra el nuevo evento en la pantalla, desplazándose automáticamente hasta la última entrada.