French Ship Madame De Pompadour
Python

French Ship Madame De Pompadour

Simulazione sociale e generatore di storie che crea narrazioni fantascientifiche basate su Star Trek. OOP Python/Flask con alcune strutture dati, API Gemini, frontend React/Vite/Tailwind.

Simulatore di astronave che utilizza IA e azioni casuali ispirato a Star Trek.


FS Madame de Pompadour è un simulatore narrativo testuale che crea storie dinamiche e imprevedibili ambientate in un universo fantascientifico. Cliccando su "Avanti", avanzi la simulazione di un turno alla volta, osservando un gruppo di personaggi interagire tra loro basandosi su una combinazione di comportamenti predefiniti e IA generativa.

image

L'obiettivo è creare un "terrario digitale" dove dinamiche sociali complesse ed eventi inaspettati emergono da regole semplici e dal potere creativo dell'IA.


Benvenuti a bordo della FS Madame de Pompadour.

Il Capitano Pepillo si rivolse all'Uomo d'Equipaggio Harold e abbaiò: "Rapporto sulle azioni disciplinari prese contro Von."

Il Capitano Pepillo si girò verso la postazione comunicazioni e ordinò: "Mi metta in contatto con il Tenente Dubois immediatamente."

Tedrick si chinò verso l'Uomo d'Equipaggio Waylon e sussurrò: "Hai visto cosa ha fatto Von? Sembra che il Capitano Pepillo sia di cattivo umore oggi," mentre aggiustava sottilmente la sua uniforme per apparire presentabile.

Konstantin lancia una rapida occhiata all'Uomo d'Equipaggio Harold, poi mormora piano all'Uomo d'Equipaggio Mohammed: "Mi chiedo cosa abbia fatto Von per finire così nei guai con il Capitano questa volta," mentre lucida discretamente una sezione della ringhiera vicina.

L'Uomo d'Equipaggio Von si sistema nervosamente l'uniforme, poi, incrociando lo sguardo dell'Uomo d'Equipaggio Ezechiel, borbotta sottovoce: "Sarà una lunga giornata," sperando che Ezechiel risponda.

L'Uomo d'Equipaggio Mohammed, notando la lucidatura discreta di Konstantin, guarda la ringhiera e dice: "Sembra che abbia bisogno di una bella strofinata, eh? Forse dovremmo fare questa sezione insieme, Konstantin?"

L'Uomo d'Equipaggio Harold, notando l'atmosfera tesa e gli ordini del Capitano, si aggiustò casualmente l'uniforme e mormorò all'Uomo d'Equipaggio Sebastien: "Sembra che Von sia nei guai, eh? Che ne dici se andiamo a prenderci un caffè per alleggerire l'umore prima che i doveri diventino più spiacevoli?"

Vedendo la tensione, l'Uomo d'Equipaggio Westley si gira verso l'Uomo d'Equipaggio Flin e chiede: "Hai sentito cosa è successo con Von? Sembra che il Capitano sia di cattivo umore, forse dovremmo assicurarci che le nostre postazioni siano impeccabili."

Il Capitano Pepillo chiede un parere professionale all'Uomo d'Equipaggio Harold.

Il Capitano Pepillo si gira verso l'Uomo d'Equipaggio Von e ordina: "Von, si presenti immediatamente a me con rapporto sullo stato attuale della sua postazione e dei sistemi."

L'Uomo d'Equipaggio Westley, notando il comando severo del Capitano a Von, si gira rapidamente verso l'Uomo d'Equipaggio Flin e dice a bassa voce: "Flin, controlliamo i depositi delle provviste, credo che il Capitano potrebbe volere l'inventario delle razioni d'emergenza," sperando di sembrare occupato ed evitare attenzioni indesiderate.

L'Uomo d'Equipaggio Mohammed, vedendo la tensione intorno al Capitano Pepillo, si avvicinò silenziosamente all'Uomo d'Equipaggio Ezechiel e sussurrò: "Pensi che dovremmo preparare dei materiali per le pulizie, nel caso il Capitano abbia bisogno di qualcosa fatto in fretta?"
imageimage

In questo istantanea dimostrativa della simulazione FS Madame de Pompadour, osserviamo un ecosistema sociale complesso e dinamico in azione. Il sistema mostra la sua capacità di generare narrazione emergente non attraverso eventi pre-scritti, ma permettendo ad agenti indipendenti di interagire, creando un ricco e credibile arazzo della vita nei ponti inferiori.

La simulazione si accende con un chiaro catalizzatore: una figura di alta autorità, il Capitano Pepillo, che introduce immediatamente una tensione ad alta posta in gioco attraverso ordini diretti. Questa "cascata di comandi" diventa il punto gravitazionale centrale per l'intero ecosistema sociale. Notate come le sue richieste non attivano semplicemente script individuali dei personaggi, ma invece avviano un evento unificato e ad alta pressione. Questo mostra il nuovo focus del sistema sulla struttura gerarchica, dove le azioni di un singolo agente possono dettare il focus, l'umore e l'obiettivo strategico per ogni altro personaggio nell'ambiente condiviso.

Mentre gli ordini del Capitano si propagano attraverso l'equipaggio, vediamo l'emergere di strategie sociali sofisticate e reattive. I membri dell'equipaggio non continuano semplicemente con compiti oziosi; iniziano immediatamente a elaborare la nuova realtà. Osservate come personaggi come Tedrick e Konstantin formano gruppi di conversazione temporanei per spettegolare e analizzare la situazione, cercando di dare un senso alla nuova dinamica di potere. Ancora più impressionante, l'Uomo d'Equipaggio Westley dimostra un livello più alto di logica emergente formulando attivamente una strategia di sopravvivenza—suggerendo a lui e a un compagno di apparire occupati con compiti ufficiali per evitare l'ira del Capitano. Questo non è un comportamento pre-scritto, ma una conclusione sociale logica generata dall'IA in risposta a una minaccia percepita, dimostrando una robusta capacità di valutazione del rischio.

Questa breve finestra rivela un potente motore per la narrazione emergente che fonde perfettamente ruoli professionali con ansia personale. Vediamo l'Uomo d'Equipaggio Harold costretto a passare da una conversazione sommessa e informale a dare un'opinione professionale formale sulla richiesta del Capitano, illustrando la capacità del sistema di gestire contesti sociali contrastanti. L'intera simulazione ruota attorno al conflitto centrale con Von, creando una pentola a pressione narrativa unificata piuttosto che una collezione di drammi separati e silenziosi. Il motore è maturato oltre la semplice generazione di un arazzo di vita, dimostrando ora il potere di simulare una complessa rete di calcolo sociale, alleanze strategiche e pensiero di gruppo emergente sotto stress.

FS Madame de Pompadour è costruita su un'architettura web moderna e disaccoppiata, separando il motore di simulazione backend dall'interfaccia utente frontend per modularità e prestazioni.

Uploading image.png…

Backend: Python, Flask e Gemini

L'intero nucleo e la logica della simulazione risiedono nel backend Python.

  • Python: La scelta naturale per la sua potente gestione dei dati e il robusto ecosistema AI/ML. L'approccio orientato agli oggetti permette classi modulari Crewman e ActorManager facili da estendere.
  • Flask: Un framework web leggero e flessibile utilizzato per creare l'API con cui comunica il frontend. La sua unica responsabilità è ricevere una richiesta per il turno successivo, attivare la logica di simulazione e restituire il risultato.
  • Google Gemini: Il "fantasma nella macchina." Il progetto si integra con l'API Gemini per alimentare il suo sistema di azioni intelligenti. Quando un personaggio decide di agire "intelligentemente," il backend invia un prompt—contenente il contesto della nave, il ruolo del personaggio e la cronologia delle azioni recenti—al modello Gemini, che poi restituisce un'azione creativa e sensibile al contesto.

Frontend: React, Vite e Tailwind CSS

L'interfaccia utente è un'applicazione a pagina singola (SPA) moderna e veloce.

  • React: Una potente libreria JavaScript per costruire interfacce utente dinamiche e basate su componenti. L'intero registro eventi è un componente React che si aggiorna efficientemente man mano che nuove azioni vengono ricevute dal backend.
  • Vite: Un tool di build frontend di nuova generazione che fornisce un server di sviluppo estremamente veloce e build di produzione ottimizzate.
  • TypeScript: Utilizzato per aggiungere tipizzazione statica al codice JavaScript, migliorando l'esperienza dello sviluppatore e riducendo i bug.
  • Tailwind CSS: Un framework CSS utility-first che permette una stilizzazione rapida e consistente direttamente nell'HTML, come si vede nei nomi delle classi del componente.

Architettura Generale

Il flusso di un singolo turno è semplice ed efficace:

  1. L'utente clicca sul pulsante "Avanti" nell'interfaccia utente basata su React.
  2. Il frontend invia una richiesta fetch all'endpoint /action del backend in esecuzione su Flask.
  3. Il server Flask chiama il Python ActorManager, che esegue un singolo turno della simulazione, potenzialmente chiamando l'API Gemini.
  4. Il backend restituisce la stringa dell'azione risultante come oggetto JSON.
  5. Il frontend React riceve il JSON, aggiorna il suo stato e renderizza il nuovo evento sullo schermo, scorrendo automaticamente all'ultima voce.