FairPlay: Eine sichere Plattform für kompetitive Programmierspiele
Eine Plattform zur sicheren und fairen Ausführung von Spielen und Bots zur Durchführung von Wettbewerben für Studierende und Dozenten.

Ausgangslage
Eine verbreitete Methode, um Studierenden den Einstieg in die Softwareentwicklung praxisnah und motivierend zu ermöglichen, ist die Entwicklung von Spielen und Bots. Durch diese Form von Aufgabenstellungen können verschiedene Aspekte der Softwareentwicklung, wie Algorithmik und Programmierkenntnisse praktisch auf eine Spielerische Art angewendet werden.
Zielsetzung
Es soll eine Plattform entwickelt werden, welche Studierenden und Dozierenden ermöglicht, eigene Spiele sowie dazugehörige Bots zu entwickeln und auszuführen. Dabei stehen insbesondere rundenbasierte Spiele wie z.Bsp ein Schach sowie Spiele bei denen die Züge gleichzeitig ausgespielt werden, wie bei Schere-Stein-Papier, im Fokus. Besonders wichtig war dabei die Sichere und Faire Ausführung der Bots als Fremdcode auf der Plattform.
Turnier Übersicht
Übersicht über das Turnier mit Rangliste und gesammt Punktzahl.
Serien übersicht
Übersicht über die gespielte Serie mit den Resultaten der einzelnen Matches und deren Resultaten.
Runden Visualisierung
übersicht über jeder Zug den die Bots gemacht haben, kann nachverfolgt werden.
Ergebnisse
Das Ergebnis des Projekts ist eine vollständig funktionsfähige Plattform zur Entwicklung von Spielen sowie zur Erstellung und Ausführung eigener Bots. Im Rahmen des Projekts wurden die Spiele Schere, Stein, Papier sowie UNO implementiert. Zusätzlich stehen verschiedene Beispiel-Bots zur Verfügung, welche als Grundlage für die Entwicklung und das Testen eigener Strategien dienen.
Die gesamte Plattform kann lokal mittels Docker Compose gestartet werden. Dadurch erhalten Entwickler eine reproduzierbare Umgebung, in der neue Spiele, Bots und Turniere direkt getestet werden können.
Für die Benutzer steht eine übersichtliche Weboberfläche zur Verfügung, über welche Spiele und Bots verwaltet, Turniere gestartet und Ergebnisse analysiert werden können.
Die Architektur besteht aus einer zentralen Plattform zur Verwaltung von Spielen, Bots und Turnieren sowie einer separaten Sandbox-Komponente für die Ausführung des Bot-Codes. Die Bots werden innerhalb isolierter Umgebungen mit der Sandboxing-Technologie Isolate ausgeführt. Dadurch erhalten alle Teilnehmer identische Ressourcenlimits hinsichtlich CPU-Zeit, Arbeitsspeicher und Dateispeicher, wodurch faire Wettbewerbsbedingungen geschaffen werden. Gleichzeitig werden Netzwerk- und Dateisystemzugriffe eingeschränkt, um die sichere Ausführung von unbekanntem oder fehlerhaftem Programmcode zu ermöglichen.
- Entwicklung und Verwaltung eigener Bots
- Unterstützung mehrerer Programmiersprachen
- Sichere Ausführung von Fremdcode durch Sandboxing
- Automatische Durchführung von Matches und Turnieren
- Fairness durch kontrollierte Ressourcenlimits
- Erweiterbare Architektur für neue Spiele
- Lokale Ausführung mittels Docker Compose
- Weboberfläche für Verwaltung und Auswertung
Technische Schlüsselbegriffe
- GamificationDas spielerische vermitteln von Wissen oder üben von Fähigkeiten.
- SandboxingIsolierte Ausführung von Programmen innerhalb einer kontrollierten und sicheren Umgebung.
- IsolateLinux-Sandbox-Technologie zur Begrenzung von CPU-Zeit, Speicherverbrauch und Dateizugriffen.
- DockerContainer-Technologie zur einfachen Bereitstellung und lokalen Ausführung der Plattform.
- Bot-ProgrammierungEntwicklung autonomer Programme, die Entscheidungen innerhalb eines Spiels treffen.
- TurnierplattformSchnittstelle zur Kommunikation zwischen Plattform, Weboberfläche und Sandbox-Komponenten.
- RessourcenisolierungBegrenzung von CPU-, Speicher- und Dateisystemressourcen zur Gewährleistung fairer Bedingungen.
- REST-APISchnittstelle zur Kommunikation zwischen Plattform, Weboberfläche und Sandbox-Komponenten.