Six Degrees of Kevin Bacon
Six Degrees — Analyse & Prototype
Ce document rassembleprésente l'l’analyse, le design, le modèle de données et un prototype minimal (backend + frontend) pour un jeu en ligne entre potes inspiré du principe des Six Degrees of Kevin Bacon.
📊 Source de données
- TMDB (The Movie Database)
:- API gratuite avec clé
, - Excellente
couverture,couverture - Simple à
utiliser.utiliser - Extraction
On extraitd’un sous-ensemble (personnes + films/séries)et on stockestocké en local pour éviter les limites de requêtes.tes
excellentesimple➡️ - API gratuite avec clé
💾 Stockage
- Neo4j Community Edition
:- Base graphe native,
parfaiteparfaitementpouradaptée - Pas besoin de surcouche
relationnelle,relationnelle - API Cypher
estidéale pour trouver deschemins.chemins
basece type de problème. ➡️et l’ - Base graphe native,
⚙️ Backend
- Node.js (Express)
:
rapide à mettre- Mise en
place,place bonnerapide
inté- Intégration avec Neo4j via
neo4j-driver.driver
➡️ - Endpoints REST simples pour recherche et calcul de
chemin.chemin
🎨 Frontend
- React + Vite
:
léger,- Léger
moderne,et parfaitmoderne
pour un prototype. ➡️ - WebSocket pour mode temps réel (co-op, challenge)
.
📐 Modèle de données (fixé)
Noeuds
- Person
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
Map en Node.js) pour stocker les résultats récents.cents
- Profondeur max = 12 (équivalent à 6 degrés)
.
🎮 Modes de jeu (retenus)
- Classic : trouver le chemin le plus court entre deux célébrité
s.s
- Challenge Temps : limite de 2 minutes pour trouver un
chemin.chemin
- Co-op : 2 à 4 joueurs construisent le chemin ensemble via
WebSocket.WebSocket
🏆 Scoring (fixé)
- Base points =
(6 - degrees) × 100
- Bonus temps : +50 points si trouvé en moins de 1
minute.minute
- Bonus rareté : +50 points si le chemin inclut un titre peu populaire (< seuil TMDB popularity)
.
🌐 API (fixée)
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é
.
- Retourne : chemin (liste de nodes/edges), longueur, score calculé
🏗️ Architecture finale
- Data ingestion : script Node.js qui appelle TMDB et insère dans
Neo4j.Neo4j
- Backend : Express + Neo4j-driver + cache mé
moire.moire
- Frontend : React + Vite +
WebSocket.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.Neo4j
- Backend Express avec 3
endpoints.endpoints
- Frontend React avec :
- Formulaire pour choisir deux personnes
- Affichage du chemin (liste ou graphe visuel avec
vis.js ou d3.js)js)
- Timer pour mode Challenge Temps
- WebSocket pour mode Co-op