Six Degrees of Kevin Bacon
Six Degrees — Analyse & Prototype
Ce document présente l’analyse, le design, le modèle de données et un prototype minimal (backend + frontend) pour un jeu en ligne inspiré du principe des Six Degrees of Kevin Bacon.
📊 Source de données
- TMDB (The Movie Database)
- API gratuite avec clé
- Excellente couverture
- Simple à utiliser
- Extraction d’un sous-ensemble (personnes + films/séries) stocké en local pour éviter les limites de requêtes
💾 Stockage
- Neo4j Community Edition
- Base graphe native, parfaitement adaptée
- Pas besoin de surcouche relationnelle
- API Cypher idéale pour trouver des chemins
⚙️ Backend
- Node.js (Express)
- Mise en place rapide
- Intégration avec Neo4j via
neo4j-driver - Endpoints REST simples pour recherche et calcul de chemin
🎨 Frontend
- React + Vite
- Léger et moderne
- WebSocket pour mode temps réel (co-op, challenge)
📐 Modèle de données
Noeuds
- Person
{id, name, type, popularity} - Title
{id, name, year, type}
Arêtes
- ACTED_IN (Person → Title)
- CREWED (Person → Title)
🔎 Algorithmes
- Bidirectional BFS pour trouver le chemin le plus court (rapide et efficace)
- Cache mémoire (simple
Mapen Node.js) pour stocker les résultats récents - Profondeur max = 12 (équivalent à 6 degrés)
🎮 Modes de jeu
- Classic : trouver le chemin le plus court entre deux célébrités
- Challenge Temps : limite de 2 minutes pour trouver un chemin
- Co-op : 2 à 4 joueurs construisent le chemin ensemble via WebSocket
🏆 Scoring
- Base points =
(6 - degrees) × 100 - Bonus temps : +50 points si trouvé en moins de 1 minute
- Bonus rareté : +50 points si le chemin inclut un titre peu populaire (< seuil TMDB popularity)
🌐 API
GET /api/people?q=search→ recherche personnesGET /api/title?q=search→ recherche films/sériesPOST /api/path→ calcule chemin{ fromPersonId, toPersonId }- Retourne : chemin (liste de nodes/edges), longueur, score calculé
🏗️ Architecture finale
- Data ingestion : script Node.js qui appelle TMDB et insère dans Neo4j
- Backend : Express + Neo4j-driver + cache mémoire
- Frontend : React + Vite + WebSocket
- Auth : simple login par pseudo (pas besoin d’OAuth pour usage privé)
- Analytics : log en mémoire des chemins joués (top 10 affichés en frontend)
🚀 Prototype minimal (MVP)
- Script d’ingestion TMDB → Neo4j
- Backend Express avec 3 endpoints
- Frontend React avec :
- Formulaire pour choisir deux personnes
- Affichage du chemin (liste ou graphe visuel avec
vis.jsoud3.js) - Timer pour mode Challenge Temps
- WebSocket pour mode Co-op