Cards of Wonder
A wizard-like card game, as a scalable micro service
Team
- Laura Adler
Informatik Bachelor, 6. Semester - Dario Bartussek
Informatik Bachelor, 6. Semester - Gordon Farquhar
Informatik Bachelor, 6. Semester - Erik Holzinger
Informatik Bachelor, 6. Semester
- Lukas Honold
Informatik Bachelor, 6. Semester - Philipp Müller
Informatik Bachelor, 6. Semester - Michael Scheef
Informatik Bachelor, 6. Semester - Lukas Sturm
Informatik Bachelor, 6. Semester
Idee/Kurzbeschreibung
Cards of Wonder" ist eine Online-Plattform, die das Spielen des Kartenspiels "Wizard" in einer leicht abgewandelten Form ermöglicht.
Das Fundament der Software bildet eine selbst entworfene, vertikal und horizontal skalierbare Micro-Service Architektur, die auch mit schwankenden Nutzerzahlen kein Problem hat. Dies wird durch einen modularen Aufbau der einzelnen Softwarekomponenten erreicht, welche containerisiert in einer Dockerumgebung laufen. Wir haben uns für eine Containerstruktur entschieden, da dies der zeitgemäße Ansatz ist.
Die für den Betrieb notwendige Daten werden auf einer MariaDB und einer Redis Instanz ausgelagert.
Zudem wird das ganze System nur über eine Schnittstelle - den Traefik-Container - angesprochen.
Das Spielen wird als Webapplikation über einen Browser ermöglicht.
Dabei wurde auf ein schönes UI, Kartendesign und eine intuitive Bedienung geachtet.
Außem ist es Dank eines responsive Designs auch möglich, das Spiel auf einem Tablet zu genießen.
Sowohl als Gast als auch als registrierter Benutzer ist die Verwendung unser Plattform möglich.
Passwörter und Benutzerinformationen werden mit aktuellen Standards gesichert in die Datenbank geschrieben.
Der Nutzer kann zwischen einem privaten und öffentlichen Spiel wählen. Einem privaten Spiel kann durch ein Kürzel,wie man es von anderen Spielen kennt, beigetreten werden.
Das öffentliche Matchmaking hingegen wird über eine Priority-Queue gelöst. Hierfür wurden vier Micro-Services entwickelt. Vereinfacht dargestellt, registriert der "Queuer"-Service den Spieler in die Queue, der "Matchmaking"-Service versucht ein Spiel zu erstellen. Die Spieleinladung wird über den "Notification"-Service versendet. Der "Discovery"-Service hingegen verwaltet einen gewissen Zustand des Matchmakings und der verfügbaren Services.
Weiterhin sind CI/CD Pipelines in jedem der Repositories vorhanden. Das Docker-Image, welches nach dem erfolgreichen Durchlaufen der Pipeline gebaut wird, wird abschließend in unsere eigene Docker Registry gepusht. Auf unserem Server läuft zudem noch ein Watchtower, welcher die laufenden Container auf mögliche Updates prüft und diese gegebenenfalls updated.
Außerdem hostet unserer Server sowohl eine Produkiv- als auch eine Entwicklungsumgebung, um die aktuellen Änderungen an der Software auch schnell im Browser testen zu können.