Skip to main content

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

  • PostgreSQL + Apache AGE

⚙️ Backend

  • Node.js (Express)
    • Mise en place rapide
    • 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 Map en 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 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 → PostgreSQL
  • 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