Skip to content

Ninjabrain-Studios/WebOSU

Repository files navigation

🎮 RHYTHM MASTER

Un jeu de rythme moderne et immersif avec synchronisation audio avancée !

✨ Fonctionnalités

🎵 Gameplay

  • Upload MP3 : Jouez avec votre propre musique
  • 4 Lanes : Touches D, F, J, K
  • Synchronisation parfaite : Pré-analyse complète du morceau
  • Vitesse dynamique : Les notes accélèrent quand la musique est forte
  • Système de score : Points, combo, précision (Perfect/Good)
  • Pause/Resume : Mettez le jeu en pause à tout moment

🎨 Effets Visuels

  • ✨ Particules colorées synchronisées
  • 🌈 Visualisation audio en temps réel (64 barres FFT)
  • 💫 Background pulsant avec la musique
  • ⚡ Glow effects sur les touches
  • 📊 Indicateur de vitesse dynamique

⚡ Performances

  • 60 FPS garantis
  • Particules optimisées (max 100)
  • Rendu canvas optimisé
  • Smooth transitions

🚀 Lancement Rapide

Avec le script automatique

chmod +x start.sh
./start.sh

Le script :

  • ✅ Vérifie les dépendances
  • ✅ Installe ce qui manque
  • ✅ Lance backend (port 8001)
  • ✅ Lance frontend (port 3000)
  • ✅ Gère l'arrêt propre

Manuel

Backend :

cd backend
pip install -r requirements.txt
uvicorn server:app --host 0.0.0.0 --port 8001

Frontend :

cd frontend
yarn install
yarn start

🎯 Comment jouer

  1. Uploadez un MP3 sur la page d'accueil
  2. Attendez l'analyse (quelques secondes)
  3. Cliquez "Commencer" quand vous êtes prêt
  4. Appuyez sur D, F, J, K quand les notes atteignent la zone lumineuse
  5. Visez le Perfect pour maximiser votre score !

Scoring

  • Perfect (±30px) : 100 points × multiplicateur
  • Good (±60px) : 50 points × multiplicateur
  • Miss : 0 point, combo réinitialisé
  • Multiplicateur : x2 à 10 combo, x3 à 20 combo, etc.

🛠️ Technologies

Frontend

  • React 19
  • Tailwind CSS
  • Shadcn/UI Components
  • Web Audio API
  • Canvas API

Backend

  • FastAPI (Python)
  • MongoDB (pour futurs scores)
  • Motor (async MongoDB driver)

📁 Structure du Projet

rhythm-master/
├── frontend/
│   ├── src/
│   │   ├── pages/
│   │   │   ├── Home.jsx          # Upload & menu
│   │   │   └── Game.jsx          # Gameplay principal
│   │   ├── components/
│   │   │   ├── ui/               # Shadcn components
│   │   │   └── GameCanvas.jsx    # Canvas particules
│   │   └── hooks/
│   │       └── use-toast.js      # Notifications
│   └── package.json
│
├── backend/
│   ├── server.py                 # API FastAPI
│   └── requirements.txt
│
├── start.sh                      # Script de lancement
├── AUDIO_SYSTEM.md              # Documentation technique
└── README.md                     # Ce fichier

🔧 Configuration

Ajuster la difficulté

Dans frontend/src/pages/Game.jsx :

// Plus de notes
minTimeBetweenBeats = 0.1  // au lieu de 0.15

// Moins de notes
minTimeBetweenBeats = 0.25

// Plus sensible aux beats
threshold = 0.2  // au lieu de 0.3

// Notes plus rapides
MAX_NOTE_SPEED = 7  // au lieu de 5

// Notes plus lentes
MIN_NOTE_SPEED = 1.5  // au lieu de 2

Désactiver la vitesse dynamique

Remplacez dans le game loop :

const targetSpeed = BASE_NOTE_SPEED; // Vitesse fixe

📊 Analyse Audio

Le système utilise :

  • OfflineAudioContext : Analyse complète avant le jeu
  • Détection de beats : Énergie RMS avec seuil adaptatif
  • Distribution intelligente : 8 patterns différents pour variété
  • Vitesse dynamique : Basée sur volume min/max

Voir AUDIO_SYSTEM.md pour les détails techniques.

🐛 Problèmes courants

Les notes n'apparaissent pas :

  • Vérifiez que le fichier est bien un MP3
  • Regardez la console pour les erreurs
  • L'analyse peut prendre quelques secondes

FPS faibles :

  • Réduisez MAX_PARTICLES (ligne 7 de Game.jsx)
  • Désactivez les effets de particules

Synchronisation décalée :

  • Ajustez le hitTime dans spawnNotesFromPreloaded
  • Vérifiez votre latence audio (écouteurs Bluetooth = lag)

🎮 Contrôles

Touche Action
D Lane 1 (Bass)
F Lane 2 (Low-Mid)
J Lane 3 (Mid)
K Lane 4 (High)
Espace Pause (bientôt)
Échap Retour menu

📝 TODO / Améliorations futures

  • Leaderboard global (backend)
  • Replay des parties
  • Modes de difficulté (Easy/Normal/Hard/Expert)
  • Support de plus de touches (6-8 lanes)
  • Éditeur de beatmap
  • Multijoueur en temps réel
  • Support OGG/WAV/FLAC

📄 Licence

Ce projet est créé avec Emergent AI.

🙏 Crédits

  • Développé avec React & FastAPI
  • UI Components par Shadcn
  • Icons par Lucide React
  • Audio analysis avec Web Audio API

Amusez-vous bien ! 🎵🎮

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors