
Escalation
A two-player card game built as a web game on a from-scratch Java server.
Escalation uses a custom WebSocket implementation written directly from RFC 6455, including handshakes, frame parsing, and masking. The server is plain Java with an HTTP server for static files, and it acts as the main source of truth during the game, tracking room creation, game states, and card shuffling. The client primarily handles rendering and animations, receiving updated game state from the server and moving the cards into the correct positions. The frontend is HTML, Tailwind CSS, and vanilla JavaScript talking to the server over that socket.
The game itself was created as my IB Computer Science HL internal assessment. It originates from a custom version of the card game “War,” which eventually developed into its own game between friends. The problem with house rules is that they only existed between us, so I rebuilt it as an online game.

Example of a WebSocket frame.
One non-programming feature I’m proud of is the card assets. I drew the full deck in Aseprite for this project, drawing inspiration from “Bee” playing cards (my favorite cards), and using pixel crush for face cards.

