Symulacje miast, gospodarek i społeczeństw
PolisEngine to biblioteka symulacyjna typu open source służąca do modelowania miast, gospodarek i społeczeństw. Pozwala odpowiedzieć na pytania w rodzaju: co się stanie, jeśli państwo podniesie podatki, znacjonalizuje przedsiębiorstwa albo zostaną przerwane dostawy towarów. Powstaje jako backend gier strategicznych typu city-builder, ale można ją wykorzystać wszędzie tam, gdzie trzeba symulować społeczeństwo bez samej gry i interfejsu użytkownika.
PolisEngine to biblioteka symulacyjna napisana w języku C# dla platformy .NET 10. Symuluje gospodarkę, populację, społeczeństwo, transport i infrastrukturę, przy czym wszystkie te systemy wzajemnie na siebie oddziałują – niedobór towarów obniża poziom zadowolenia, spadające zaufanie podważa legitymację rządu, a załamanie gospodarcze wywołuje migrację.
Engine jest celowo headless. Zna stan świata i zasady symulacji, ale nie zajmuje się tym, jak wszystko wygląda – cała warstwa wizualna należy do frontendu, który podłącza engine jako zależność. Tę samą symulację może więc obsługiwać gra 3D, interfejs webowy, a także aplikacja konsolowa.
Brak zależności od game engine’u ani interfejsu użytkownika
Te same dane zawsze dają ten sam wynik
Treść i zachowanie można rozszerzyć bez ingerencji w kod
Zawartość jest zdefiniowana w plikach danych
PolisEngine modeluje kilka powiązanych ze sobą domen. Każda z nich funkcjonuje niezależnie, ale rzeczywista dynamika powstaje dopiero w wyniku ich wzajemnego oddziaływania w ramach poszczególnych taktów symulacji.
Rynki, ceny, przedsiębiorstwa, podatki, budżet państwa i dług publiczny, bank centralny, prywatyzacja i nacjonalizacja, przepływy kapitałowe oraz gospodarka planowa. Modele ekonomiczne są wymienne – kapitalistyczną implementację można zastąpić inną bez ingerencji w rdzeń silnika.
Mieszkańcy jako pojedyncze osoby lub jako zagregowane grupy, w zależności od wymaganego poziomu szczegółowości. Dane demograficzne, wykształcenie, potrzeby, warstwy społeczne i migracja.
Zaufanie do rządu, legitymizacja, wskaźniki społeczne i ich sprzężenia zwrotne, wartości i normy kulturowe. Wskaźniki są obliczane na podstawie grafu zależności, dzięki czemu można je dowolnie łączyć.
Budynki, sieci transportowe, pojazdy i rozkłady jazdy, łańcuchy dostaw, magazyny oraz wykrywanie przerw w dostawach.
Świat w postaci siatki podzielonej na chunki, z terenem, zasobami naturalnymi i strefami. Poziom szczegółowości symulacji jest regulowany osobno dla każdego chunku, dzięki czemu można obliczać duże mapy bez utraty wydajności.
API moddingowe umożliwia dodawanie nowych typów budynków, towarów i wskaźników społecznych, rejestrowanie własnych modeli ekonomicznych oraz pisanie logiki gry w języku Lua.
Engine nie powstaje wyłącznie z myślą o grach. Ponieważ nie jest powiązany ani z grafiką, ani z interakcją użytkownika, można go uruchomić wszędzie tam, gdzie trzeba zasymulować społeczeństwo lub gospodarkę.
Frontend wysyła polecenia i odbiera zdarzenia, a engine działający w tle przeprowadza całą symulację.
Porównanie reakcji różnych systemów gospodarczych na ten sam szok zewnętrzny.
Deterministyczna pętla typu „headless”, z którą agent może pracować z pełną prędkością sprzętu.
Symulacja przemian gospodarczych i społecznych oraz obserwacja ich skutków.
PolisEngine znajduje się we wczesnej fazie rozwoju i na razie nie nadaje się do użytku. Trwa budowa podstawowej infrastruktury, a większość systemów symulacyjnych jeszcze nie istnieje. Publiczne API nie jest stabilne i będzie ulegać zmianom bez uprzedzenia. Nie nadaje się więc na razie do wdrożenia.
Wczesny etap rozwojuPolisEngine powstaje w ramach otwartego projektu na GitHubie. Kod, dokumentacja architektury oraz plan rozwoju są publicznie dostępne – można je przeglądać, wykorzystywać i zgłaszać uwagi.
Aktualny stan: wczesny etap rozwoju
PolisEngine to projekt typu open source. Warunki użytkowania można znaleźć w licencji dostępnej w repozytorium.