Contexte du projet
Ce projet est un projet personnel, né de l’envie de créer un Tetris extensible qui ne se limite pas au scoring classique.
L’objectif était de bâtir un moteur de jeu solide, capable d’accueillir des règles variées (roguelike, puzzle, versus…), avec une architecture full‑stack propre et prête à évoluer.
Lien du site : https://tetroworld.fr
Objectif
Créer un Tetris orienté game design, où chaque mode propose une expérience différente :
- Classique : score et progression traditionnelle
- Sprint : contrainte de temps
- Versus : confrontation entre joueurs
- Roguelike : perks, mutations, synergies et runs uniques
- Puzzle : séquences fixes, objectifs précis, optimisation des coups
Fonctionnalités principales
- Moteur Tetris multi‑règles
- Gestion des objectifs et contraintes (puzzle, no‑hold, séquence imposée)
- Système d’achievements et progression
- Statistiques et scores persistés (solo + versus)
- UI dynamique avec dashboard centré sur les modes
- Pipeline de déploiement complet en conteneurs
Stack technique (final)
- Front‑end : React + Vite + TypeScript
- State / hooks : hooks custom (moteur de jeu, achievements, puzzle)
- Back‑end : Node.js + Express
- Validation : Zod
- ORM / DB : Prisma + PostgreSQL
- Auth : JWT + cookies
- Temps réel : WebSocket (mode Versus)
- Déploiement : Docker + docker‑compose + GitHub Actions (SSH)
Ce que j’ai appris
Ce projet m’a permis de :
- Concevoir un moteur de jeu flexible, basé sur des règles composables
- Traduire des mécaniques de game design en logique technique stable
- Gérer des modes très différents dans une architecture unifiée
- Mettre en place une persistance complète (scores, puzzles, achievements)
- Déployer un produit full‑stack en production de façon fiable