layered-waves-haikei (1)-svg-svg

PolisEngine

Simulationen von Städten, Volkswirtschaften und Gesellschaften

PolisEngine ist eine Open-Source-Simulationsbibliothek zur Modellierung von Städten, Volkswirtschaften und Gesellschaften. Sie kann Fragen beantworten wie: Was passiert, wenn der Staat die Steuern erhöht, Unternehmen verstaatlicht oder die Warenlieferungen unterbrochen werden? Sie entsteht als Backend für Aufbaustrategiespiele, ist aber überall dort einsetzbar, wo eine Gesellschaftssimulation ohne Spiel und Benutzeroberfläche erforderlich ist.

Über das Projekt


PolisEngine ist eine in C# für .NET 10 geschriebene Simulationsbibliothek. Sie simuliert Wirtschaft, Bevölkerung, Gesellschaft, Verkehr und Infrastruktur, wobei sich all diese Systeme gegenseitig beeinflussen – Warenknappheit mindert die Zufriedenheit, sinkendes Vertrauen untergräbt die Legitimität der Regierung, ein wirtschaftlicher Zusammenbruch löst Migration aus.

Die Engine ist bewusst „headless“. Sie kennt den Zustand der Welt und die Simulationsregeln, kümmert sich jedoch nicht darum, wie etwas aussieht – die gesamte visuelle Gestaltung obliegt dem Frontend, das die Engine als Abhängigkeit einbindet. So kann dieselbe Simulation sowohl von einem 3D-Spiel als auch von einer Weboberfläche oder einer Konsolenanwendung genutzt werden.

Headless

Keine Abhängigkeit von einer Spiel-Engine oder einer Benutzeroberfläche

Deterministisch

Die gleiche Eingabe führt immer zum gleichen Ergebnis

Modifizierbar

Sowohl der Inhalt als auch das Verhalten lassen sich ohne Eingriff in den Code erweitern

Datengesteuert

Der Inhalt ist in den Datendateien definiert

Was die Engine simuliert


PolisEngine modelliert mehrere miteinander verknüpfte Domänen. Jede davon funktioniert eigenständig, doch die eigentliche Dynamik entsteht erst durch ihr Zusammenspiel über die einzelnen Simulations-Ticks hinweg.

Wirtschaft

Märkte, Preise, Unternehmen, Steuern, Staatshaushalt und Staatsverschuldung, Zentralbank, Privatisierung und Verstaatlichung, Kapitalströme und Planwirtschaft. Wirtschaftsmodelle sind austauschbar – die kapitalistische Umsetzung lässt sich durch eine andere ersetzen, ohne den Kern zu verändern.

Bevölkerung

Einwohner als Einzelpersonen oder als aggregierte Gruppen, je nach erforderlichem Detaillierungsgrad. Demografie, Bildung, Bedürfnisse, soziale Schichten und Migration.

Gesellschaft

Vertrauen in die Regierung, Legitimität, soziale Indikatoren und deren Wechselwirkungen, kulturelle Werte und Normen. Die Indikatoren werden anhand eines Abhängigkeitsdiagramms berechnet, sodass sie beliebig miteinander verknüpft werden können.

Infrastruktur und Verkehr

Gebäude, Verkehrsnetze, Fahrzeuge und Fahrpläne, Lieferketten, Lager und Erkennung von Versorgungsengpässen.

Die Welt und der Raum

Eine Rasterwelt, die in Chunks unterteilt ist, mit Gelände, natürlichen Ressourcen und Zonen. Der Detaillierungsgrad der Simulation wird pro Chunk gesteuert, sodass große Karten ohne Leistungseinbußen berechnet werden können.

Modding

Die Modding-API ermöglicht es, neue Gebäudetypen, Güter und soziale Indikatoren hinzuzufügen, eigene Wirtschaftsmodelle zu registrieren und die Spiellogik in Lua zu programmieren.

Wofür kann man es verwenden?


Die Engine wurde nicht nur für Spiele entwickelt. Da sie weder an die Grafik noch an Benutzereingaben gebunden ist, kann sie überall eingesetzt werden, wo eine Gesellschaft oder eine Wirtschaft simuliert werden soll.

Aufbaustrategie

Das Frontend sendet Befehle und empfängt Ereignisse, während die Engine im Hintergrund die gesamte Simulation ausführt.

Wirtschaftliche Sandbox

Ein Vergleich, wie verschiedene Wirtschaftsordnungen auf denselben externen Schock reagieren.

KI-Training

Eine deterministische Headless-Schleife, mit der der Agent mit der vollen Geschwindigkeit der Hardware arbeiten kann.

Szenario-Modellierung

Simulation wirtschaftlicher und gesellschaftlicher Übergänge und Beobachtung der daraus resultierenden Entwicklungen.

Technische Daten


Bibliothek

Sprache: C#
Zielplattform: .NET 10
Lizenz: LGPL v3
Konfiguration: Fluent Builder oder TOML
Auslieferung: .NET-Klassenbibliothek

Qualität und Prüfung

Tests: xUnit, FluentAssertions
Benchmarks: BenchmarkDotNet
Entwurf: SOLID, datengesteuert, getrennte Schichten
Modi: Echtzeit und Headless

Projektstatus


PolisEngine befindet sich in einer frühen Entwicklungsphase und ist derzeit noch nicht einsatzfähig. Die grundlegende Infrastruktur wird gerade aufgebaut, die meisten Simulationssysteme existieren noch nicht. Die öffentliche API ist noch nicht stabil und kann sich ohne Vorankündigung ändern. Für einen Einsatz ist das System daher derzeit noch nicht bereit.

Frühes Entwicklungsstadium

Code und Entwicklung


PolisEngine wird offen auf GitHub entwickelt. Der Quellcode, die Architekturdokumentation und der Entwicklungsplan sind öffentlich zugänglich – zum Einsehen, zur Nutzung und für Anmerkungen.

Aktueller Stand: frühes Entwicklungsstadium

PolisEngine ist ein Open-Source-Projekt. Die Nutzungsbedingungen finden Sie in der Lizenz im Repository.