French Ship Madame De Pompadour
Python

French Ship Madame De Pompadour

Symulacja społeczna i generator historii tworzący narracje science fiction oparte na Star Treku. OOP Python/Flask z pewnymi strukturami danych, API Gemini, frontend React/Vite/Tailwind.

Symulator statku kosmicznego wykorzystujący AI i losowe akcje inspirowane Star Trek.


FS Madame de Pompadour to tekstowy symulator narracyjny, który tworzy dynamiczne i nieprzewidywalne historie osadzone w uniwersum science fiction. Klikając „Dalej”, przesuwasz symulację o jedną turę, obserwując, jak grupa postaci wchodzi ze sobą w interakcje na podstawie połączenia predefiniowanych zachowań i generatywnej AI.

image

Celem jest stworzenie „cyfrowego terrarium”, w którym złożone dynamiki społeczne i nieoczekiwane zdarzenia wyłaniają się z prostych reguł i kreatywnej mocy AI.


Witamy na FS Madame de Pompadour.

Kapitan Pepillo zwrócił się do członka załogi Harolda i warknął: „Raport o działaniach dyscyplinarnych podjętych wobec Vona.”

Kapitan Pepillo odwrócił się w stronę stanowiska łączności i zażądał: „Natychmiast połącz mnie z porucznik Dubois.”

Tedrick pochylił się w stronę członka załogi Waylona i szepnął: „Widziałeś, co zrobił Von? Wygląda na to, że kapitan Pepillo jest dziś w złym humorze”, jednocześnie dyskretnie poprawiając mundur, by wyglądać reprezentacyjnie.

Konstantin rzuca szybkie spojrzenie na członka załogi Harolda, po czym cicho mamrocze do członka załogi Mohammeda: „Zastanawiam się, co Von zrobił, żeby tak wpaść w niełaskę u kapitana”, dyskretnie polerując fragment pobliskiej poręczy.

Członek załogi Von nerwowo prostuje mundur, a następnie, łapiąc spojrzenie członka załogi Ezechiela, mamrocze pod nosem: „To będzie długi dzień”, mając nadzieję, że Ezechiel odpowie.

Członek załogi Mohammed, zauważając dyskretne polerowanie Konstantina, spogląda na poręcz i mówi: „Wygląda na to, że potrzebuje porządnego szorowania, co? Może zrobimy tę sekcję razem, Konstantin?”

Członek załogi Harold, zauważając napiętą atmosferę i rozkazy kapitana, od niechcenia poprawił swój mundur i mruknął do członka załogi Sebastiena: „Wygląda na to, że Von jest na celowniku, co? Myślisz, że powinniśmy pójść na kawę, żeby rozluźnić atmosferę, zanim obowiązki staną się jeszcze bardziej nieprzyjemne?”

Widząc napięcie, członek załogi Westley zwraca się do członka załogi Flina i pyta: „Słyszałeś, co się stało z Vonem? Wygląda na to, że kapitan jest w złym humorze, może powinniśmy upewnić się, że nasze stanowiska są nieskazitelne.”

Kapitan Pepillo prosi członka załogi Harolda o profesjonalną opinię.

Kapitan Pepillo zwraca się do członka załogi Vona i żąda: „Von, melduj mi się natychmiast w sprawie aktualnego stanu twojego stanowiska i systemów.”

Członek załogi Westley, zauważając surowy rozkaz kapitana wobec Vona, szybko odwraca się do członka załogi Flina i mówi cicho: „Flin, sprawdźmy szafki z zaopatrzeniem, myślę, że kapitan może chcieć, żeby zinwentaryzowano racje awaryjne”, mając nadzieję, że będzie wyglądał na zajętego i uniknie niechcianej uwagi.

Członek załogi Mohammed, widząc napięcie wokół kapitana Pepillo, cicho podszedł do członka załogi Ezechiela i szepnął: „Myślisz, że powinniśmy przygotować środki czystości, na wypadek gdyby kapitan potrzebował czegoś zrobić szybko?”
imageimage

W tym zrzucie demonstracyjnym z symulacji FS Madame de Pompadour obserwujemy złożony i dynamiczny ekosystem społeczny w ruchu. System pokazuje swoją zdolność do generowania emergentnej narracji nie poprzez wcześniej napisane scenariusze, ale poprzez umożliwienie niezależnym agentom interakcji, tworząc bogaty i wiarygodny obraz życia na niższych pokładach.

Symulacja rozpoczyna się od wyraźnego katalizatora: wysoko postawionej osoby sprawującej władzę, kapitana Pepillo, który wprowadza natychmiastowe napięcie wysokiej stawki poprzez bezpośrednie rozkazy. Ta „kaskada rozkazów” staje się centralnym punktem grawitacyjnym dla całego ekosystemu społecznego. Zwróć uwagę, jak jego żądania nie tylko uruchamiają indywidualne skrypty postaci, ale inicjują zjednoczone, stresujące wydarzenie. To pokazuje nowy nacisk systemu na strukturę hierarchiczną, gdzie działania pojedynczego agenta mogą dyktować cel, nastrój i strategiczny cel dla każdej innej postaci we wspólnym środowisku.

Gdy rozkazy kapitana rozchodzą się po załodze, widzimy pojawienie się wyrafinowanych, reaktywnych strategii społecznych. Członkowie załogi nie kontynuują po prostu bezczynnych zadań; natychmiast zaczynają przetwarzać nową rzeczywistość. Obserwuj, jak postacie takie jak Tedrick i Konstantin tworzą tymczasowe grupki konwersacyjne, aby plotkować i analizować sytuację, próbując zrozumieć nową dynamikę władzy. Co bardziej imponujące, członek załogi Westley demonstruje wyższy poziom emergentnej logiki, aktywnie formułując strategię przetrwania – sugerując sobie i koledze z załogi, aby wyglądali na zajętych oficjalnymi zadaniami, by uniknąć gniewu kapitana. Nie jest to zachowanie z góry zaprogramowane, ale logiczny wniosek społeczny wygenerowany przez AI w odpowiedzi na postrzegane zagrożenie, demonstrujący solidną zdolność do oceny ryzyka.

To krótkie okno ujawnia potężny silnik do emergentnego opowiadania historii, który płynnie łączy role zawodowe z osobistym niepokojem. Widzimy, jak członek załogi Harold jest zmuszony przejść od swobodnej, cichej rozmowy do udzielenia formalnej, profesjonalnej opinii na żądanie kapitana, ilustrując zdolność systemu do zarządzania sprzecznymi kontekstami społecznymi. Cała symulacja obraca się wokół centralnego konfliktu z Vonem, tworząc zjednoczony narracyjny kocioł ciśnieniowy, a nie zbiór oddzielnych, cichych dramatów. Silnik dojrzał poza generowanie prostej tkaniny życia, demonstrując teraz moc symulowania złożonej sieci kalkulacji społecznych, strategicznych sojuszy i emergentnego myślenia grupowego pod presją.

FS Madame de Pompadour jest zbudowana na nowoczesnej, rozdzielonej architekturze internetowej, oddzielającej backendowy silnik symulacji od frontendowego interfejsu użytkownika dla modułowości i wydajności.

Uploading image.png…

Backend: Python, Flask i Gemini

Cały rdzeń symulacji i logika znajdują się w backendzie Pythona.

  • Python: Naturalny wybór ze względu na potężne możliwości przetwarzania danych i solidny ekosystem AI/ML. Podejście obiektowe pozwala na modułowe klasy CzłonekZałogi i MenedżerAktorów, które są łatwe do rozszerzenia.
  • Flask: Lekki i elastyczny framework webowy używany do tworzenia API, z którym komunikuje się frontend. Jego jedynym zadaniem jest odebranie żądania następnej tury, uruchomienie logiki symulacji i zwrócenie wyniku.
  • Google Gemini: „Duch w maszynie”. Projekt integruje się z API Gemini, aby zasilać swój inteligentny system działań. Gdy postać decyduje się działać „inteligentnie”, backend wysyła prompt – zawierający kontekst statku, rolę postaci i historię ostatnich działań – do modelu Gemini, który następnie zwraca kreatywne, kontekstowe działanie.

Frontend: React, Vite i Tailwind CSS

Interfejs użytkownika to szybka, nowoczesna aplikacja jednostronicowa (SPA).

  • React: Potężna biblioteka JavaScript do budowania dynamicznych i komponentowych interfejsów użytkownika. Cały dziennik zdarzeń jest komponentem React, który wydajnie aktualizuje się w miarę otrzymywania nowych działań z backendu.
  • Vite: Narzędzie do budowania frontendu nowej generacji, które zapewnia niezwykle szybki serwer deweloperski i zoptymalizowane kompilacje produkcyjne.
  • TypeScript: Używany do dodawania statycznego typowania do kodu JavaScript, poprawiając doświadczenie programisty i redukując błędy.
  • Tailwind CSS: Framework CSS zorientowany na narzędzia, który pozwala na szybkie i spójne stylowanie bezpośrednio w HTML, co widać w nazwach klas komponentów.

Ogólna architektura

Przepływ pojedynczej tury jest prosty i skuteczny:

  1. Użytkownik klika przycisk „Dalej” w interfejsie opartym na React.
  2. Frontend wysyła żądanie fetch do endpointu /action backendu działającego na Flask.
  3. Serwer Flask wywołuje MenedżeraAktorów w Pythonie, który wykonuje jedną turę symulacji, potencjalnie wywołując API Gemini.
  4. Backend zwraca wynikowy ciąg działania jako obiekt JSON.
  5. Frontend React odbiera JSON, aktualizuje swój stan i renderuje nowe zdarzenie na ekranie, automatycznie przewijając do najnowszego wpisu.