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 typu: co się stanie, jeśli państwo podniesie podatki, znacjonalizuje przedsiębiorstwa lub nastąpi przerwanie dostaw towarów. Powstała jako zaplecze dla gier strategicznych typu „budowanie”, 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ę.
Silnik jest celowo bezinterfejsowy. Zna stan świata i zasady symulacji, ale nie zajmuje się tym, jak wszystko wygląda – cała strona wizualna należy do frontendu, który silnik podłącza jako zależność. Tę samą symulację może więc obsługiwać gra 3D, interfejs internetowy, a także aplikacja konsolowa.
Brak zależności od silnika gry ani interfejsu użytkownika
To samo dane zawsze daje 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 działa niezależnie, ale prawdziwa dynamika powstaje dopiero w wyniku ich wzajemnego oddziaływania w poszczególnych taktach 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 – kapitalistyczny model można zastąpić innym bez ingerencji w jego istotę.
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 wzajemne powiązania, wartości i normy kulturowe. Wskaźniki są obliczane za pomocą wykresu 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 siatce podzielony na bloki symulacyjne, teren, zasoby naturalne i strefy. Poziom szczegółowości symulacji jest regulowany dla każdego bloku z osobna, dzięki czemu można obliczać duże mapy bez utraty wydajności.
API moddingowe pozwala dodawać nowe typy budynków, towarów i wskaźników społecznych, rejestrować własne modele ekonomiczne oraz pisać logikę gry w języku Lua. Bardziej niebezpieczne uprawnienia, takie jak dostęp do sieci, muszą być wyraźnie zezwolone.
Silnik nie powstał 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 silnik 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 w repozytorium.