diff --git a/README.md b/README.md index 322cb1b..1b41e6e 100644 --- a/README.md +++ b/README.md @@ -77,13 +77,15 @@ Das Ziel ist es, den Song mit so wenigen Hinweisen wie möglich zu erraten und d - **Start-Punktestand:** 90 Punkte - **Richtige Antwort:** +20 Punkte -- **Falsche Antwort:** -3 Punkte +- **Falsche Antwort:** -3 Punkte (falscher Rateversuch) + -5 Punkte (Track-Verlängerung) = **-8 Punkte total** - **Überspringen (Skip):** -5 Punkte - **Snippet erneut abspielen (Replay):** -1 Punkt - **Bonus-Runde (Release-Jahr erraten):** +10 Punkte (0 bei falscher Antwort) - **Aufgeben / Verloren:** Der Punktestand wird auf 0 gesetzt. - **Minimum:** Der Punktestand kann nicht unter 0 fallen. +**Hinweis:** Bei falschen Rateversuchen werden zusätzlich -5 Punkte für die automatische Verlängerung des Audio-Snippets (unlockSteps) abgezogen, um die Verwendung dieses Hilfsmittels zu reflektieren. + ## Tech Stack - **Framework:** Next.js 16 (App Router) diff --git a/docs/SCORING_OPTIONS.md b/docs/SCORING_OPTIONS.md new file mode 100644 index 0000000..28bdd3b --- /dev/null +++ b/docs/SCORING_OPTIONS.md @@ -0,0 +1,293 @@ +# Scoring-System Optionen + +## Problem-Analyse + +### Aktuelle Situation +- **Start:** 90 Punkte +- **Richtige Antwort:** +20 Punkte +- **Falsche Antwort:** -3 Punkte (falscher Rateversuch) + -5 Punkte (Track-Verlängerung) = **-8 Punkte total** +- **Skip:** -5 Punkte +- **Replay:** -1 Punkt + +### Problem (vor der Änderung) +Bei vielen Versuchen kam man mit einem relativ hohen Score heraus: +- Beispiel (alt): 7 Versuche = 90 + 20 - (6 × 3) = **92 Punkte** + +### Lösung (aktuell implementiert) +Bei falschen Rateversuchen werden zusätzlich -5 Punkte für die Track-Verlängerung (unlockSteps) abgezogen: +- Beispiel (neu): 7 Versuche = 90 + 20 - (6 × 8) = **62 Punkte** + - Start: 90 Punkte + - 6 falsche Versuche: -48 Punkte (6 × -8, bestehend aus -3 für falsch + -5 für Verlängerung) + - 1 richtiger Versuch: +20 Punkte + - **Ergebnis: 62 Punkte** + +Dies spiegelt nun besser die tatsächliche Leistung wider. Das System bleibt motivierend, da richtige Antworten weiterhin belohnt werden. + +--- + +## Option 1: Progressive Abzüge ⚠️ (Intransparent) + +### Konzept +Abzüge steigen mit jedem Versuch, aber das System ist schwer nachvollziehbar. + +``` +- Versuch 1-2: -2 Punkte pro falscher Antwort +- Versuch 3-4: -4 Punkte pro falscher Antwort +- Versuch 5-6: -6 Punkte pro falscher Antwort +- Versuch 7: -8 Punkte +``` + +### Beispiel +Bei 7 Versuchen: 90 + 20 - (2+2+4+4+6+6) = **86 Punkte** + +### Probleme +- **Intransparent**: Spieler müssen sich merken, welche Abzüge in welcher Runde gelten +- **Schwer erklärbar**: Das Regelwerk ist komplex +- **Unklar im UI**: Aktuelle Abzüge sind nicht sofort ersichtlich + +### Vorteile +- Progressive Bestrafung für viele Versuche +- Fairer als aktuelles System + +--- + +## Option 2: Bonus-Malus-System + +### Konzept +Höhere Belohnungen für frühe Erfolge + progressive Abzüge. + +``` +Start: 90 Punkte + +Richtige Antwort (Bonus abhängig vom Versuch): + - Versuch 1: +30 Punkte (sehr gut!) + - Versuch 2: +25 Punkte (gut!) + - Versuch 3: +20 Punkte (okay) + - Versuch 4: +15 Punkte + - Versuch 5+: +10 Punkte + +Falsche Antwort (progressive Abzüge): + - Versuch 1-2: -3 Punkte + - Versuch 3-4: -5 Punkte + - Versuch 5-6: -8 Punkte + - Versuch 7: -10 Punkte +``` + +### Beispiele +- Gelöst in Versuch 1: 90 + 30 = **120 Punkte** ⭐ +- Gelöst in Versuch 4 (nach 3 Fehlern): 90 + 15 - (3+5+5) = **92 Punkte** +- Gelöst in Versuch 7 (nach 6 Fehlern): 90 + 10 - (3+5+5+8+8+10) = **61 Punkte** + +### Vorteile +- **Transparent**: Klare Regeln pro Versuch +- **Motivierend**: Hohe Belohnungen für schnelles Lösen +- **Fair**: Späte Erfolge werden abgewertet + +### Nachteile +- Etwas komplexer als aktuelles System +- Muss im UI klar kommuniziert werden + +--- + +## Option 3: Effizienz-Multiplikator + +### Konzept +Basis-System bleibt, aber Multiplikator basierend auf Versuchszahl. + +``` +Basis-System (wie aktuell, aber mit höheren Abzügen): +- Falsche Antwort: -5 Punkte (statt -3) +- Skip: -7 Punkte (statt -5) + +Bonus-Multiplikatoren (basierend auf Versuch, in dem gelöst wurde): + - Gelöst in 1-2 Versuchen: ×1.2 (20% Bonus) + - Gelöst in 3-4 Versuchen: ×1.1 (10% Bonus) + - Gelöst in 5-6 Versuchen: ×1.0 (kein Bonus) + - Gelöst in 7 Versuchen: ×0.9 (10% Abzug) +``` + +### Beispiele +- Gelöst in Versuch 2 (1 Fehler): (90 + 20 - 5) × 1.2 = **126 Punkte** +- Gelöst in Versuch 4 (3 Fehler): (90 + 20 - 15) × 1.1 = **104.5 → 105 Punkte** +- Gelöst in Versuch 7 (6 Fehler): (90 + 20 - 30) × 0.9 = **72 Punkte** + +### Vorteile +- Multiplikator ist einfach zu verstehen ("20% Bonus für schnelles Lösen") +- Basis-System bleibt ähnlich +- Gerechte Bestrafung für viele Versuche + +### Nachteile +- Multiplikatoren müssen berechnet werden (könnte kompliziert wirken) +- Kombination aus Basis + Multiplikator kann verwirrend sein + +--- + +## Option 4: Kombiniertes System + +### Konzept +Höhere Abzüge + kleine Motivations-Boni. + +``` +Basis-System (höhere Abzüge): +- Falsche Antwort: -5 Punkte (statt -3) +- Skip: -7 Punkte (statt -5) +- Richtige Antwort: +20 Punkte (bleibt) + +Motivations-Boni: +- "Erstversuch" Bonus: +2 Punkte wenn erster Versuch nicht skipped wurde +- "Perfekter Durchlauf": +5 Bonus wenn kein Skip verwendet wurde +- "Knapp daneben": +1 Punkt für Versuche, die fast richtig waren (optional, komplex) +``` + +### Beispiele +- Gelöst in Versuch 1: 90 + 20 + 2 + 5 = **117 Punkte** +- Gelöst in Versuch 4 (3 Fehler, kein Skip): 90 + 20 - 15 + 5 = **100 Punkte** +- Gelöst in Versuch 7 (6 Fehler, 2 Skips): 90 + 20 - 30 - 14 = **66 Punkte** + +### Vorteile +- **Einfach verständlich**: Basis + kleine Boni +- **Motivierend**: Positive Verstärkung für gutes Verhalten +- **Fair**: Höhere Abzüge sorgen für differenzierten Score + +### Nachteile +- Mehrere kleine Boni können unübersichtlich werden +- "Knapp daneben" ist schwer zu implementieren + +--- + +## Option 5: Streak-System (Langfristige Motivation) + +### Konzept +Zusätzliche Belohnungen für konsequentes Spielen über mehrere Tage. + +``` +Tägliche Streaks: +- 3 Tage in Folge gelöst: +5 Bonus-Punkte +- 7 Tage: +10 Bonus-Punkte +- 30 Tage: +15 Bonus-Punkte +``` + +**Kombiniert mit einem der anderen Systeme** (z.B. Option 2 oder 4). + +### Vorteile +- Langfristige Spielermotivation +- Belohnt Engagement + +### Nachteile +- Braucht Tracking über mehrere Tage +- Löst nicht das Hauptproblem (zu hoher Score bei vielen Versuchen) + +--- + +## Option 6: Multiplikator-System (Vereinfacht) + +### Konzept +Höhere Abzüge + einfache Multiplikatoren für Versuchszahl. + +``` +Höhere Basis-Abzüge: +- Falsche Antwort: -5 Punkte +- Skip: -7 Punkte + +Multiplikator basierend auf Versuch, in dem gelöst wurde: +- Versuch 1: ×1.5 (50% Bonus) → Sehr schnelles Lösen +- Versuch 2: ×1.3 (30% Bonus) +- Versuch 3: ×1.1 (10% Bonus) +- Versuch 4: ×1.0 (kein Bonus/Aufschlag) +- Versuch 5+: ×0.9 (10% Abzug) +``` + +### Beispiele +- Gelöst in Versuch 1: (90 + 20) × 1.5 = **165 Punkte** ⭐⭐⭐ +- Gelöst in Versuch 3 (2 Fehler): (90 + 20 - 10) × 1.1 = **110 Punkte** +- Gelöst in Versuch 7 (6 Fehler): (90 + 20 - 30) × 0.9 = **72 Punkte** + +### Vorteile +- **Sehr transparent**: "50% Bonus für Erstversuch" ist einfach zu verstehen +- **Stark motivierend**: Hohe Belohnungen für schnelles Lösen +- **Fair**: Viele Versuche = niedriger Score + +### Nachteile +- Multiplikatoren könnten als zu komplex empfunden werden +- Hohe Scores bei frühen Erfolgen (könnte als "zu leicht" empfunden werden) + +--- + +## Empfehlungen + +### Für Transparenz und Einfachheit: **Option 2 oder Option 4** + +**Option 2 (Bonus-Malus)** ist am transparentesten: +- Klare Werte pro Versuch +- Einfach zu kommunizieren: "Erstversuch gibt +30, jeder weitere Versuch reduziert den Bonus" +- Fair und motivierend + +**Option 4 (Kombiniert)** ist am einfachsten: +- Basis-System bleibt ähnlich (nur höhere Abzüge) +- Zusätzliche kleine Boni sind optional und motivierend +- Sehr einfach zu verstehen + +### Für maximale Motivation: **Option 6** + +- Hohe Belohnungen für schnelles Lösen +- Einfache Multiplikatoren ("50% Bonus") +- Sehr fair für viele Versuche + +--- + +## Implementierungs-Hinweise + +### UI-Kommunikation +Welche Option auch gewählt wird - sie muss im Spiel klar kommuniziert werden: +- Tooltips bei Versuchen +- Score-Breakdown zeigt Abzüge/Boni pro Versuch +- Vorschau: "Dieser Versuch würde X Punkte kosten/geben" + +### Testing +Vor der Implementierung sollten verschiedene Szenarien durchgespielt werden: +- Erstversuch-Lösung +- Mittlere Versuche (3-4) +- Knappe Lösung (6-7 Versuche) +- Mit/ohne Skips +- Mit/ohne Replays + +### Migration +- Bestehende Scores können nicht einfach migriert werden +- Neue Regeln gelten ab Start des neuen Systems +- Eventuell: "New Scoring System" Ankündigung + +--- + +## ✅ Implementiert: Abzüge für zusätzliche Sekunden + +**Status:** ✅ **Aktuell implementiert** + +Bei falschen Rateversuchen werden zusätzlich **-5 Punkte für die Track-Verlängerung** abgezogen: +- Falsche Antwort (Rateversuch): -3 Punkte (falsch) + -5 Punkte (Verlängerung) = **-8 Punkte total** +- Skip: -5 Punkte (kein zusätzlicher Abzug, da Skip keine Verlängerung bedeutet) + +**Vorteile:** +- ✅ Reflektiert den "Hilfsmittel"-Charakter der zusätzlichen Sekunden +- ✅ Macht viele Versuche deutlich teurer +- ✅ Fairer Score bei vielen Versuchen +- ✅ Transparent: Klar getrennt als "Wrong guess" und "Track extension" + +**Hinweis:** Dies ist die erste Anpassung des Scoring-Systems. Weitere Optionen (siehe oben) können in Zukunft ergänzt werden. + +## Offene Fragen + +1. Sollen Replays weiterhin -1 Punkt kosten? +2. Soll das Jahr-Bonus-System (+10) beibehalten werden? +3. Wie wichtig ist Backward-Compatibility mit bestehenden Scores? +4. Soll es eine "Preview"-Funktion geben ("Dieser Versuch kostet X Punkte")? +5. Sollen zusätzlich freigeschaltete Sekunden (Unlock-Steps) zusätzlich Punkte kosten? + +--- + +## Status + +📝 **Erstellt:** 2024-12-01 +✅ **Erste Änderung implementiert:** 2024-12-01 - Track-Verlängerung kostet jetzt -5 Punkte bei falschen Rateversuchen +🔄 **Status:** Teilweise umgesetzt +💡 **Nächste Schritte:** Weitere Optionen können bei Bedarf ergänzt werden (siehe Optionen oben) + diff --git a/lib/gameState.ts b/lib/gameState.ts index 7bd650e..5eb0d4c 100644 --- a/lib/gameState.ts +++ b/lib/gameState.ts @@ -200,6 +200,9 @@ export function useGameState( } else { newScore -= 3; newBreakdown.push({ value: -3, reason: 'Wrong guess' }); + // Additional penalty for track extension (unlock steps) + newScore -= 5; + newBreakdown.push({ value: -5, reason: 'Track extension' }); } }