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.

Simulador de nave espacial que utiliza IA y acciones aleatorias inspirado 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 la simulación un turno a la vez, observando cómo un elenco de personajes interactúa entre sí basándose en una combinación de comportamientos predefinidos e IA generativa.

image

El objetivo es crear un "terrario digital" donde surjan dinámicas sociales complejas y eventos inesperados a partir de reglas simples y el poder creativo de la IA.


Bienvenido a FS Madame de Pompadour.

El Capitán Pepillo se giró hacia el Tripulante Harold y ordenó: "Informe sobre las medidas disciplinarias tomadas contra Von".

El Capitán Pepillo se volvió hacia la estación de comunicaciones y exigió: "Póngame con el Teniente Dubois inmediatamente".

Tedrick se inclinó hacia el Tripulante Waylon y susurró: "¿Viste lo que hizo Von? Parece que el Capitán Pepillo está de mal humor hoy", mientras ajustaba sutilmente su uniforme para parecer presentable.

Konstantin mira rápidamente al Tripulante Harold, luego murmura en voz baja al Tripulante Mohammed: "Me pregunto qué habrá hecho Von para caerle mal al Capitán esta vez", mientras pule discretamente una sección de la barandilla cercana.

El Tripulante Von se endereza nerviosamente su uniforme, luego, al encontrarse con la mirada del Tripulante Ezechiel, murmura entre dientes: "Este va a ser un día largo", esperando que Ezechiel responda.

El Tripulante Mohammed, notando el pulido discreto de Konstantin, mira la barandilla y dice: "Parece que necesita una buena restregada, ¿eh? Quizás deberíamos hacer esta sección juntos, ¿Konstantin?"

El Tripulante Harold, notando el ambiente tenso y las órdenes del Capitán, ajustó casualmente su propio uniforme y murmuró al Tripulante Sebastien: "Parece que Von está en el ojo del huracán, ¿eh? ¿Crees que deberíamos ir por un café para aliviar el ambiente antes de que las tareas se vuelvan más desagradables?"

Viendo la tensión, el Tripulante Westley se gira hacia el Tripulante Flin y pregunta: "¿Escuchaste lo que pasó con Von? Parece que el Capitán está de mal humor, quizás deberíamos asegurarnos de que nuestras estaciones estén impecables".

El Capitán Pepillo pide la opinión profesional del Tripulante Harold.

El Capitán Pepillo se gira hacia el Tripulante Von y exige: "Von, repórtese inmediatamente sobre el estado de su estación y sistemas actuales".

El Tripulante Westley, notando la severa orden del Capitán a Von, se gira rápidamente hacia el Tripulante Flin y dice en voz baja: "Flin, revisemos los armarios de suministros, creo que el Capitán querrá que se inventarien las raciones de emergencia", esperando parecer ocupado y evitar cualquier atención no deseada.

El Tripulante Mohammed, viendo la tensión alrededor del Capitán Pepillo, se acercó silenciosamente al Tripulante Ezechiel y susurró: "¿Crees que deberíamos preparar algunos suministros de limpieza, por si acaso el Capitán necesita que se haga algo rápidamente?"
imageimage

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 narrativa emergente no a través de eventos predefinidos, sino permitiendo que agentes independientes interactúen, creando un tapiz rico y creíble de la vida en las cubiertas inferiores.

La simulación se enciende con un catalizador claro: una figura de autoridad de alto rango, el Capitán Pepillo, que introduce tensión inmediata de alto riesgo a través de órdenes directas. Esta "cascada de mando" se convierte en el punto gravitacional central para todo el ecosistema social. Observa cómo sus demandas no solo activan guiones de personajes individuales, sino que inician un evento unificado de alta presión. Esto muestra el nuevo enfoque del sistema en la estructura jerárquica, donde 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 en el entorno compartido.

A medida que las órdenes del Capitán se propagan por la tripulación, vemos la aparición de estrategias sociales reactivas y sofisticadas. Los tripulantes no continúan con tareas ociosas; inmediatamente comienzan a procesar la nueva realidad. Observa cómo personajes como Tedrick y Konstantin forman grupos conversacionales temporales para chismorrear y analizar la situación, intentando dar sentido a la nueva dinámica de poder. Más impresionante aún, el Tripulante Westley demuestra un nivel superior de lógica emergente al formular activamente una estrategia de supervivencia: sugerir que él y un compañero parezcan ocupados con tareas oficiales para evitar la ira del Capitán. Esto no es un comportamiento predefinido, sino una conclusión social lógica generada por la IA en respuesta a una amenaza percibida, demostrando una capacidad robusta para la evaluación de riesgos.

Esta breve ventana revela un potente motor para la narración emergente que combina a la perfección roles profesionales con ansiedad personal. Vemos al Tripulante Harold forzado a pasar de una conversación casual y susurrada a dar una opinión profesional formal sobre la demanda del Capitán, ilustrando 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 vida, demostrando ahora el poder de simular una compleja red de cálculo social, alianzas estratégicas y pensamiento grupal emergente bajo presión.

FS Madame de Pompadour está construido sobre una arquitectura web moderna y desacoplada, separando el motor de simulación del backend de la interfaz de usuario del frontend para lograr modularidad y rendimiento.

Uploading image.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 manejo de datos y su robusto ecosistema de IA/ML. El enfoque orientado a objetos permite clases modulares Crewman y ActorManager que son fáciles de extender.
  • Flask: Un framework 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 potenciar su sistema de acciones inteligentes. Cuando un personaje decide actuar "inteligentemente", el backend envía un prompt —que contiene el contexto de la nave, el rol del personaje y el historial de acciones recientes— al modelo de Gemini, que luego devuelve una acción creativa y consciente del 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 construir interfaces de usuario dinámicas y basadas en componentes. Todo el registro de eventos es un componente de React que se actualiza eficientemente a medida que se reciben nuevas acciones del backend.
  • Vite: Una herramienta de construcción frontend de nueva generación que proporciona un servidor de desarrollo extremadamente rápido y builds de producción optimizados.
  • TypeScript: Se utiliza para añadir tipado estático al código JavaScript, mejorando la experiencia del desarrollador y reduciendo errores.
  • Tailwind CSS: Un framework CSS basado en utilidades que permite un estilo rápido y consistente directamente dentro del HTML, como se ve en los nombres de clase del componente.

Arquitectura General

El flujo de un solo turno es simple y efectivo:

  1. El usuario hace clic en el botón "Siguiente" en la interfaz de usuario basada en React.
  2. El frontend envía una solicitud fetch al endpoint /action del backend que se ejecuta en Flask.
  3. El servidor Flask llama al ActorManager de Python, que ejecuta un solo turno de la simulación, potencialmente llamando 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 renderiza el nuevo evento en la pantalla, desplazándose automáticamente hasta la última entrada.