Skip to content
IN DEVELOPMENT
← SELECTED WORK
PROJECT / 01

Multiplayer Trading Card Game

Real-time PvP card game. Two players, one match, turn-based state kept in sync over WebSockets.

ROLE
Full stack
TEAM
3 people
YEAR
2024
CONTEXT
SEP module · 9 ECTS
AngularTypeScriptSpring BootRESTWebSocketsGit

Outcome

[ Add a short outcome: what worked, what was delivered, and any verified result. ]

Repository & demo

[ Add repository / demo links here. The university GitLab project may need a public mirror. ]

[ SCREENSHOT · 16:9 ]
01 / PROBLEM

The problem

A turn-based card game played by two people at once needs both screens to agree on what just happened. That means moving game state between two browsers in real time, without either client being able to drift from the other.

02 / CONTRIBUTION

My contribution

  • Real-time PvP with WebSockets, synchronizing turn-based game state between two clients per match.
  • Angular / TypeScript features, Spring Boot REST endpoints, and the game state model.
  • User authentication and session handling.
03 / ARCHITECTURE

Architecture

PLAYER AANGULARPLAYER BANGULARSPRING BOOT├ GAME STATE└ AUTH / SESSIONSWEBSOCKET
Fig. 01 — Message flow between two clients and the server

Each player runs an Angular client. Both hold a WebSocket connection to a Spring Boot backend that owns the game state model and handles authentication and sessions.

04 / DECISION

Technical decision

[ Why WebSockets over polling? Why keep game state on the server? Include a short relevant code snippet and explain the tradeoff. ]

05 / CHALLENGE

A problem I hit

[ What broke, why it broke, how you fixed it. ]

06 / REFLECTION

What I would change

[ What you learned, what remains limited, and what you would do differently now. ]