Rundenbasiertes Multiplayer-Strategiespiel aus dem Softwareprojekt der Universität Ulm. Im Team aus sechs Studierenden habe ich an Server und KI-Gegner mitgearbeitet, das Web-Dashboard entwickelt und die CI/CD-Pipelines aufgebaut. Ausgezeichnet mit dem Software Engineering Preis 2025 und dem zweiten Platz im KI-Turnier.
- Rolle
- Entwicklung im Sechserteam mit Schwerpunkt Server, KI, Web-Dashboard und CI/CD
- Zeitraum
- 01/2025 - 07/2025
- Technologien
- C#, .NET 9, WebSocket, JSON Schema, xUnit, Moq, GeneticSharp, Next.js, TypeScript, Docker, GitLab CI
Ausgangslage
Im zweiten Teil des Softwareprojekts an der Universität Ulm entwickeln Teams aus bis zu sechs Studierenden gemeinsam ein größeres Spiel. Unseres war Battlefront Tactics, ein rundenbasiertes Strategiespiel im Stil eines Auto-Battlers mit Einheiten aus dem Star-Wars-Universum: Zwei bis acht Spielerinnen und Spieler kaufen in jeder Runde Einheiten, platzieren sie auf einem Spielfeld mit unterschiedlichen Feldtypen und lassen sie anschließend automatisch gegeneinander kämpfen.
Das Spiel besteht aus mehreren eigenständigen Komponenten, die über WebSocket und JSON-Nachrichten miteinander sprechen: einem Server, einem grafischen Client, einem KI-Client und einem Editor für Spielfeld- und Partiekonfigurationen.
Umsetzung
Meine Schwerpunkte lagen auf dem Server, dem KI-Client, einem Web-Dashboard und der gesamten CI/CD dieser Komponenten.
- Server (zu dritt): Der Server in C# mit .NET 9 verwaltet beliebig viele parallel laufende Lobbys, setzt die Spielregeln um und koordiniert alle Clients inklusive Zuschauern, Chat und Statistiken. Jede eingehende Nachricht wird gegen ein JSON Schema geprüft, bevor sie das Spiel erreicht. Abgesichert ist das Ganze durch über 120 Tests mit xUnit und Moq.
- KI-Gegner (zu zweit): Die KI spielt auf drei Schwierigkeitsstufen, von zufälligen Zügen über feste Regeln bis zu einer punktebasierten Strategie, die Einheiten, Platzierungen und Lichtschwerter über gewichtete Bewertungsmodule auswählt. Im KI-Turnier des Softwareprojekts, in dem die KI-Clients der Teams gegeneinander antraten, belegte sie den zweiten Platz.
- Gewichte per genetischem Algorithmus: Damit wir die Gewichte nicht raten mussten, haben wir sie mit einem genetischen Algorithmus optimiert. Die Grundlage dafür war ein Benchmark-Paket für den Server, über das die KI Partien direkt gegen den Server spielt, ohne Umweg über das Netzwerk. So ließen sich sehr viele Partien in kurzer Zeit simulieren.
- Web-Dashboard (allein): Ein Dashboard in Next.js zeigt alle Lobbys und Clients mit Detailansichten und Serverstatistiken und enthält die Dokumentation des Servers samt API-Referenz. Die Daten kommen über eine eigene Web-API des Servers.
- CI/CD: Für Server, KI, Web-Dashboard und den Echo-Server, die Einstiegsaufgabe zu Beginn des Projekts, habe ich die GitLab-Pipelines aufgebaut: Linting, Tests mit Coverage-Reports, Docker-Images für Entwicklung und Produktion und ein NuGet-Paket des Servers, auf dem das Benchmark der KI aufbaut.
Ergebnis
Am Ende stand ein vollständig spielbares Spiel mit Clients für Windows, Linux und macOS, Server und KI als fertige Docker-Images und einem Editor für eigene Partien. Ausgezeichnet wurde das Projekt mit dem Software Engineering Preis 2025, und unser KI-Client holte im Turnier den zweiten Platz.
Das Projekt hat mir enorm viel Spaß gemacht, und spätestens mit dem Preis war klar, dass ich dem Softwareprojekt treu bleiben möchte. Im darauffolgenden Jahr habe ich es deshalb selbst als Betreuer begleitet und Teams bei ihren eigenen Spielen unterstützt.