Skip to content

Latest commit

 

History

History
327 lines (226 loc) · 13.6 KB

File metadata and controls

327 lines (226 loc) · 13.6 KB

Changelog – One Chance

Alle relevanten Änderungen am Projekt werden hier dokumentiert.
Format: Semantische Versionierung vMAJOR.MINOR.PATCH


[v1.8.1] – 2026-03-15

Neu

  • Wortstamm-Erkennung: Hinweise mit gleichem Wortstamm wie das Geheimwort werden automatisch gestrichen – z.B. „klettern" bei Gesucht: „Kletterwand", „fahren" bei „Fahrrad", „laufen" bei „Laufband"
  • Wortlisten erweitert:
    • Leicht: 1.002 Wörter
    • Mittel: 643 Wörter
    • Schwer: 396 Wörter
    • FSK18: 316 Wörter

[v1.8.0] – 2026-03-14

Neu

  • Erweiterte Statistiken:
    • Wort-Trefferquote pro Geheimwort (ab 2× gespielt)
    • Häufigste Hinweiswörter (Top 20)
    • Ø gültige Hinweise pro Runde
    • Ø Rundenzeit (Start bis Ergebnis)
    • Anzahl Runden ohne gültige Hinweise
    • Ø Runden pro Session / Ø Lobby-Lebensdauer
    • Runden mit TV-Modus / Moderator
    • Aktivität nach Tageszeit (Balkendiagramm)

[v1.7.1] – 2026-03-14

Fixes

  • Google Auth auf stats.html: Login funktioniert korrekt über GitHub Pages
  • QR-Code: Wird nur noch beim TV-Spieler in der Lobby angezeigt, nicht beim Host
  • Audio du_darfst_jetzt_hinweise_sehen: Wird jetzt erst beim Anzeigen des Hinweis-Screens abgespielt, nicht mehr zu früh
  • iOS Audio-Unlock: Alle Sounds werden beim ersten Tap vorgeladen damit sie auf iOS aus Timern/Callbacks heraus abgespielt werden können

[v1.7.0] – 2026-03-14

Neu

  • Statistik-System: Dauerhafte Speicherung in Firebase unter /stats/
    • Spiele gesamt, gewonnen, verloren, Winrate
    • Unique Users + Logins gesamt
    • Ø Spieler pro Lobby
    • Gewählte Kategorien
    • Tagesbasierte Aufschlüsselung (letzte 14 Tage sichtbar)
  • stats.html: Live-Dashboard mit Google Login – nur für den Projektinhaber zugänglich
  • Google Authentication: Nur der eingeloggte Google-Account mit der hinterlegten UID kann Stats einsehen
  • firebase-rules.json: Sicherheitsregeln – Lobby-Lesen nur für Lobby-Mitglieder, Stats-Lesen nur für authorisierte UID, Schreiben offen für Spiellogik

TV-Modus (v1.6.x zusammengefasst)

  • Countdown vor Wortanzeige mit Spielername
  • Reveal-Animation auf TV-Screen sichtbar
  • Kein Eingabefeld für Ratenden – Host/Mod bestätigt Richtig/Falsch
  • QR-Code nur für TV-Spieler in der Lobby
  • Audio-Sounds: Countdown, Reveal, Alleine, Win, Fail (iOS-kompatibel)

[v1.6.1] – 2026-03-14

Neu

  • Audio-Sounds (Dateien unter assets/audio/):
    • Achtung_es_geht_los.mp3 → TV-Gerät beim Start des Countdowns
    • du_darfst_jetzt_hinweise_sehen.mp3 → TV-Gerät nach der Reveal-Animation
    • alleine.mp3 → Ratender wenn alle Hinweise gestrichen wurden
    • win.mp3 → Ratender bei richtiger Antwort
    • fail.mp3 → Ratender bei falscher Antwort

[v1.6.0] – 2026-03-14

TV-Modus komplett überarbeitet

  • Clue-Phase: TV-Screen zeigt das Geheimwort groß + live Tipp-Counter („3 / 4 eingegangen")
  • Mod-Review: TV-Screen zeigt Warte-Screen mit Hinweis „Moderator prüft"
  • Reveal: Animation läuft auf dem TV-Screen (für alle im Raum sichtbar)
  • Guess: TV-Screen zeigt die übrigen Hinweise groß an – kein Eingabefeld. Meldung „Der Ratende darf sich jetzt umdrehen! 👀"
  • Verdikt: Host oder Mod bestätigt auf ihrem Gerät Richtig/Falsch – kein Eingabefeld für den Ratenden

[v1.5.0] – 2026-03-14

Neu

  • Auto-Close nach Inaktivität: Lobbys schließen sich automatisch nach 30 Minuten ohne Aktivität. Der Host prüft minütlich den lastActivity-Timestamp in Firebase. Alle Spieler erhalten den Toast „⏱ Lobby wurde wegen Inaktivität geschlossen." Aktivität wird bei Spielstart, Hinweis-Abgabe und Antwort registriert.

[v1.4.9] – 2026-03-14

Neu

  • Kreuz-Treffer zwischen Hinweisen: Ist ein Hinweis in einem anderen enthalten, werden beide gestrichen. Beispiel: „Luft" und „Luftblase" → beide weg, weil „Luft" in „Luftblase" vorkommt.

[v1.4.8] – 2026-03-14

Neu

  • Rater-Rotation: Jeder Spieler ist einmal Rater bevor sich jemand wiederholt. Die Queue wird in Firebase gespeichert und bei jeder Runde aktualisiert. Neu beitretende Spieler werden automatisch in die Queue aufgenommen. Zurück zur Lobby setzt die Queue zurück.

[v1.4.7] – 2026-03-14

Neu

  • Mobile 9:16 Optimierung: Karte füllt auf kleinen Displays (≤ 480px) den gesamten Viewport – kein ungenutzter Rand mehr
  • iOS Safe Area: Unterstützung für Notch & Dynamic Island (padding-top/bottom via env(safe-area-inset-*))
  • viewport-fit=cover: Verhindert weiße Balken auf iPhone mit abgerundeten Ecken
  • Kompaktere Abstände, Schriftgrößen und Buttons auf kleinen Screens
  • Sonderbehandlung für sehr kleine Screens (≤ 350px, z.B. iPhone SE 1. Gen)

[v1.4.6] – 2026-03-14

Neu

  • Ergebnis-Screen: Drei Buttons für den Host nach einer Runde:
    • ▶ Nächste Runde – startet sofort eine neue Runde (neues Wort, gleiche Lobby)
    • ↩ Zurück zur Lobby – alle landen auf dem Lobby-Screen (bisheriges Verhalten von „Nächste Runde")
    • ✕ Spiel beenden – löscht die Lobby, alle zurück zum Start

[v1.4.5.1] – 2026-03-14

Fix

  • Ergebnis-Screen: „Das gesuchte Wort war: …" wird bei richtiger Antwort nun zuverlässig ausgeblendet – result-word ist jetzt standardmäßig im HTML versteckt und wird nur bei falscher Antwort eingeblendet

[v1.4.5] – 2026-03-11

Neu

  • GitHub & Buy Me a Coffee Links auf Start- und Ergebnis-Screen
  • Leere Hinweisliste: Wenn alle Hinweise gestrichen wurden, sieht der Rater „😬 Alle Hinweise wurden gestrichen – viel Glück!" statt einer leeren Liste
  • Ergebnis-Screen: „Das gesuchte Wort war: …" wird bei richtiger Antwort ausgeblendet – das Wort steht bereits in der Antwort
  • Textfelder: Alle Eingabefelder sind jetzt zentriert

[v1.4.4] – 2026-03-11

Neu

  • Groß-/Kleinschreibung bei Duplikaten: „Schatten" und „SCHATTEN" werden jetzt als identisch erkannt und beide gestrichen
  • Geheimwort-Treffer automatisch streichen: Hinweise die das gesuchte Wort enthalten (z.B. „Kuchen" bei Gesucht: „Käsekuchen") oder im Geheimwort enthalten sind werden animiert gestrichen und nicht an den Rater weitergegeben

[v1.4.3] – 2026-03-11

Neu

  • Lobby/Spiel verlassen für Spieler & Zuschauer: „↩ Verlassen"-Button erscheint floating auf allen Spielscreens sowie als fixer Button im Lobby-Screen
  • In der Lobby: direkt verlassen ohne Bestätigung – im laufenden Spiel kurze Bestätigung
  • Tippgeber verlässt Clue-Phase: sein Hinweis wird gelöscht, Zähler neu geprüft – die Gruppe wartet nicht mehr auf ihn
  • Rater verlässt laufendes Spiel: alle Clients werden automatisch zurück in die Lobby gesetzt (Toast: „🚶 Der Rater hat die Lobby verlassen")

Fixes

  • Moderator zählt nicht zum Spielerlimit: Limit-Check, Lobby-Zähler und Start-Button schließen den Mod korrekt aus
  • Mod-Review springt nicht an: Wortgeber-Zähler schloss den Moderator nicht aus – nun korrekt gefiltert

[v1.4.2] – 2026-03-11

Fixes & Verbesserungen

  • „↩ Zur Lobby"-Button (floating, nur für Host): Bricht die laufende Runde ab und bringt alle Clients zurück in die Lobby
  • „Lobby schließen"-Button im Lobby-Screen: Löscht die Lobby komplett – alle Spieler landen auf dem Start-Screen mit Toast „🚪 Die Lobby wurde vom Host geschlossen."
  • Zentraler Listener-Refactor: startCentralListener() läuft außerhalb von State.listeners[] und überlebt Phasenwechsel – alle Clients reagieren zuverlässig auf Lobby-Löschung und Abbruch ohne manuellen Reload
  • Spieler-Reconnect: Spieler die beim Spielstart dabei waren können nach einem Reload automatisch wieder in die laufende Runde einspringen
  • Phasenwechsel-Fix: Clue-Zähler liest Spielerliste direkt aus Firebase statt aus lokalem State – Weiterleitung zur nächsten Phase funktioniert zuverlässig

[v1.4.0] – 2026-03-11

Neu: Rollen

  • Zuschauer: Spieler können beim Beitreten "Zuschauer" wählen. Sie sehen in Echtzeit das Geheimwort und alle Eingaben. Sie zählen nicht zum Spielerlimit.
  • Moderator: Host kann einen Spieler als Moderator setzen. Moderatoren sehen alles wie Zuschauer, können aber nach der Clue-Phase manuell Hinweise streichen (Regelverstoß). Erst nach ihrer Bestätigung sehen Wortgeber die Animations-Phase.
  • TV-Spieler: Host markiert einen Spieler als TV-Spieler. Dieser rät immer (nie Wortgeber), sieht erst nach der Reveal-Animation die Hinweise und sitzt mit dem Rücken zum Fernseher. Richtig/Falsch wird durch Mod oder Host bestätigt.

Neu: Spielmechanik

  • Moderator-Prüfungsphase (mod-review): Wenn ein Moderator existiert, kommt nach der Clue-Phase ein eigener Screen für den Mod zum manuellen Streichen von Hinweisen.
  • Automatische Weiterleitung nach Reveal: Countdown-Ring (5 Sek.) ersetzt den "Weiter"-Button – kein Admin-Klick mehr nötig.
  • Verdikt-System (TV-Modus): Moderator (oder Host) sieht "✓ Richtig / ✗ Falsch" Buttons und entscheidet das Ergebnis manuell.
  • Rater sieht Reveal NICHT mehr: Rater und TV-Spieler bleiben auf dem Warte-Screen während die Durchstreich-Animation läuft.

Neu: Kategorien & Wortlisten

  • 4 Wortlisten als separate Dateien: words-leicht.js, words-mittel.js, words-schwer.js, words-fsk18.js
  • Kategorie-Auswahl per Chips auf Start-Screen und in der Lobby (Host kann ändern)
  • Kategorie wird in Firebase gespeichert und für alle Clients sichtbar

Neu: UI

  • QR-Code in Lobby wenn TV-Spieler gesetzt – schnelles Beitreten mit Smartphone
  • Schieberegler für Spieler-Limit (statt Dropdown)
  • Responsivität: Logo bricht nicht mehr aus dem Container; Geheimwort skaliert automatisch mit der Textlänge; Layout nutzt auf großen Screens (Desktop, TV) viel mehr Platz (Lobby zweispaltig)
  • Neuer Badge-Typ: mod-badge (lila), tv-badge (rot), überarbeitete Aktionsbuttons in Spielerliste
  • Kick-Rechte für Moderatoren ergänzt

Dateien

assets/words/words-leicht.js   ← neu
assets/words/words-mittel.js   ← neu
assets/words/words-schwer.js   ← neu
assets/words/words-fsk18.js    ← neu

[v1.3.0] – 2025-XX-XX

Neu

  • Host-Reconnect: UID wird in localStorage gespeichert (statt sessionStorage). Beim Seitenaufruf wird geprüft ob noch eine aktive Host-Lobby existiert – falls ja, kehrt der Host automatisch zur Lobby zurück ohne neu beitreten zu müssen.
  • Spieler-Limit: Host kann die maximale Spieleranzahl (3–12) festlegen – sowohl beim Erstellen einer Lobby (Start-Screen) als auch danach in der Lobby. Beitrittsversuche über dem Limit werden mit Fehlermeldung blockiert.
  • Spieler kicken: Host sieht neben jedem Spieler einen ✕-Button. Gekickte Spieler werden in /kicked/ eingetragen, erhalten sofort einen Toast-Hinweis und landen auf dem Start-Screen.
  • Einlade-Link: Generiert einen direkten URL mit ?lobby=CODE. Button zum Kopieren + WhatsApp-Teilen-Button in der Lobby. Beim Öffnen des Links wird der Code automatisch ins Beitrittsfeld eingetragen.
  • Toast-Benachrichtigungen: Kurze animierte Einblendungen für Systemereignisse (Kick, Reconnect, Link kopiert, Limit gesetzt).
  • Letzter Name: Wird in localStorage gespeichert und beim nächsten Start vorausgefüllt.
  • Spielerzähler: Zeigt X / Limit in der Lobby-Überschrift.
  • Ich-Badge: Spieler sehen ihr eigenes Profil in der Liste mit „Du"-Markierung.

Geändert

  • getOrCreateUID() nutzt jetzt localStorage statt sessionStorage
  • enterLobbyScreen() ruft removeAllListeners() auf (verhindert doppelte Listener bei Rundenende)
  • watchForResult() als eigenständiger Listener statt separater Funktion konsolidiert

[v1.2.0] – 2025-XX-XX

Geändert

  • Firebase-Konfiguration direkt in assets/js/game.js eingebaut (kein Setup-Modal mehr nötig)
  • databaseURL der Realtime Database (europe-west1) ergänzt
  • Config-Modal komplett entfernt aus index.html und game.js
  • loadFirebaseConfig() und saveFirebaseConfig() entfernt (nicht mehr benötigt)
  • initFirebase() benötigt keinen Parameter mehr – nutzt FIREBASE_CONFIG direkt
  • Fehlermeldung im Start-Screen als Fallback bei Firebase-Verbindungsfehler

[v1.1.0] – 2025-XX-XX

Geändert

  • Projekt umbenannt von „Just One" zu „One Chance"
  • Dateistruktur reorganisiert: CSS und JS liegen jetzt in assets/css/ bzw. assets/js/
  • Nur index.html liegt im Root-Verzeichnis (GitHub Pages kompatibel)
  • localStorage- und sessionStorage-Schlüssel auf onechance_* umgestellt
  • Logger-Präfix von [JustOne] auf [OneChance] aktualisiert
  • CHANGELOG.md hinzugefügt
  • README.md überarbeitet mit Firebase-Schritt-für-Schritt-Anleitung
  • .gitignore hinzugefügt

Dateistruktur

one-chance/
├── index.html
├── README.md
├── CHANGELOG.md
├── .gitignore
└── assets/
    ├── css/style.css
    └── js/game.js

[v1.0.0] – 2025-XX-XX

Neu

  • Lobby-System mit zufälligem 6-stelligen Code
  • Beliebig viele Spieler (Minimum: 3)
  • Zufällige Rater-Zuteilung pro Runde
  • Geheimwort nur für Wortgeber sichtbar
  • Hinweis-Eingabe mit Firebase-Echtzeit-Synchronisierung
  • Animierte Streich-Animation für doppelte Hinweise
  • Rater-Screen mit gefilterten (validen) Hinweisen
  • Ergebnis-Auswertung mit Richtig/Falsch-Anzeige
  • Mehrere Runden in derselben Lobby möglich
  • Firebase-Konfiguration via UI-Modal (kein Code-Edit nötig)
  • Browser-Konsolen-Logger mit Zeitstempel für alle Spielaktionen
  • Dunkles Design mit animierten Hintergrund-Orbs
  • Vollständig responsiv (Mobile + Desktop)