← Selected workReal-time product · Multiplayer systems

Battle 2048

A competitive multiplayer adaptation of 2048 with live matches, strategic attack mechanics, AI opponents, and persistent player data.

RoleFull-stack product engineering
VisibilityPrivate source
StatusLive product
Challenge

What needed to change

Classic 2048 is deterministic and single-player. Turning it into a competitive product required a real-time match model, clear synchronization rules, matchmaking, player identity, and mechanics that make two boards affect one another.

Approach

How the system works

The product separates a Next.js client from a Socket.IO server. The server manages lobbies, match events, player statistics, rate limits, and metrics; the client owns interaction, animation, internationalized UI, and local product state.

Engineering decisions

Trade-offs made explicit

Dedicated real-time server.

Match state and player events use Socket.IO rather than polling or database-driven synchronization.

Product mechanics beyond the base puzzle.

Attack, heal, AI opponents, and leaderboards create a competitive loop.

Client and server evolve independently.

Separate repositories clarify deployment, testing, and runtime responsibilities.

Technology

Stack

  • Next.js
  • React
  • Socket.IO
  • Express
  • Supabase
  • Zustand
  • Tailwind CSS
  • Docker
Live product

Play Battle 2048 online.

Try matchmaking, live rounds, attack and recovery mechanics, AI opponents, and leaderboard persistence in the deployed product.

Open Battle 2048 ↗