Cards of Wonder - "Mach Dein digitales Ding"



Cards of Wonder - "Mach Dein digitales Ding"
Cards of Wonder - "Mach Dein digitales Ding"
Cards of Wonder - "Mach Dein digitales Ding"
Cards of Wonder - "Mach Dein digitales Ding"
Cards of Wonder - "Mach Dein digitales Ding"
Cards of Wonder - "Mach Dein digitales Ding"

A wizard-like card game, as a scalable micro service



"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.
Das weiter unten abgebildete Diagramm veranschaulicht den Architekturansatz und kann zudem eine Klasse an Problemen,
die ähnliche Anforderungen an die Skalierbarkeit haben, lösen.
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.


Architektur-Features:

  • Beliebige Skalierbarkeit einzelner Softwarekomponenten
  • Verschlüsselte Kommunikation über HTTPS
  • Trennung in öffentliche / interne REST-API
  • Monitoring der Infrastruktur

Software-Features:

  • Account Management (inkl Gast Nutzer)
  • Private Spiele
  • Online Matchmaking

Benutzte Tools, Programmiersprachen und Frameworks:

  • Javascript / Typescript / Nodejs
  • Socket.io
  • React und Bootstrap
  • Redis und MariaDB
  • Docker
  • GitLab CI/CD Pipeline
  • Watchtower

  • Jahr:
  • Studierende: Laura Adler, Dario Bartussek, Gordon Farquhar, Erik Holzinger, Lukas Honold, Philipp Müller, Michael Scheef, Lukas Sturm
  • Semester: 6. Semester
  • Studiengang: Informatik
  • Webseite: https://cardsofwonder.com
  • Supervision: Barbara Tezel HSA_funkenwerk
  • Tags: Games, Webanwendung