Skip to main content

Six Degrees of Kevin Bacon

Six Degrees — Analyse & Prototype

Ce document rassemble 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, simple à utiliser. ➡️ On extrait un sous-ensemble (personnes + films/séries) et on stocke en local pour éviter les limites de requêtes.

Stockage

Neo4j Community Edition : base graphe native, parfaite pour ce type de problème. ➡️ Pas besoin de surcouche relationnelle, et l’API Cypher est idéale pour trouver des chemins.

Backend

Node.js (Express) : rapide à mettre en place, bonne intégration avec Neo4j via neo4j-driver. ➡️ Endpoints REST simples pour recherche et calcul de chemin.

Frontend

React + Vite : léger, moderne, parfait pour un prototype. ➡️ WebSocket pour mode temps réel (co-op, challenge).

📐 Modèle de données (fixé)

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 Map en Node.js) pour stocker les résultats ré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.

Challenge Temps : limite de 2 minutes pour trouver un chemin.

Co-op : 2 à 4 joueurs construisent le chemin ensemble via WebSocket.

🏆 Scoring (fixé)

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 (fixée)

GET /api/people?q=search → recherche personnes

GET /api/title?q=search → recherche films/séries

POST /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.js ou d3.js)

    Timer pour mode Challenge Temps

    WebSocket pour mode Co-op