# Match3 - Juwelen Kampagne ## Übersicht Das Match3-Spiel wurde von einem einfachen Spielmodi-System zu einem vollständigen Kampagnen-System umgebaut. Spieler starten direkt in die Kampagne und müssen Level für Level verschiedene Ziele erreichen. ## Neue Features ### 🎯 **Kampagnen-System** - **Direkter Start**: Keine Spielmodi-Auswahl mehr, Spieler starten sofort in die Kampagne - **Level-basierter Fortschritt**: Jedes Level hat spezifische Ziele und Anforderungen - **Stern-System**: Spieler können 1-3 Sterne pro Level verdienen - **Fortschrittsspeicherung**: Alle Daten werden im Backend gespeichert ### 🏆 **Level-Objectives** - **Punkte-Ziele**: Sammle eine bestimmte Anzahl von Punkten - **Match-Ziele**: Mache eine bestimmte Anzahl von Matches - **Effizienz-Ziele**: Verwende weniger Züge als vorgegeben - **Zeit-Ziele**: (Zukünftig) Schließe das Level in einer bestimmten Zeit ab ### 📊 **Fortschrittsverfolgung** - **Persistente Daten**: Spielstand wird in der Datenbank gespeichert - **Benutzerstatistiken**: Detaillierte Übersicht über alle Kampagnen - **Bestenlisten**: Vergleich mit anderen Spielern - **Versuchszähler**: Verfolgung der Versuche pro Level ## Technische Architektur ### 🗄️ **Backend-Schema** #### Neue Tabellen im `match3` Schema: 1. **`match3_campaigns`** - Kampagnen-Informationen (Name, Beschreibung, Reihenfolge) - Aktiv/Inaktiv-Status 2. **`match3_levels`** - Level-spezifische Einstellungen (Brettgröße, Juwelen-Typen) - Verknüpfung zu Kampagnen - Züge- und Zeitlimits 3. **`match3_objectives`** - Level-Ziele mit Typ, Beschreibung und Zielwert - Verschiedene Operatoren (>=, <=, =, >, <) 4. **`match3_user_progress`** - Kampagnen-Fortschritt pro Benutzer - Gesamtpunktzahl, Sterne und abgeschlossene Level 5. **`match3_user_level_progress`** - Detaillierter Level-Fortschritt - Bestwerte und Versuchszähler ### 🔧 **Backend-Services** #### `Match3Service` - **`getActiveCampaigns()`**: Lädt alle aktiven Kampagnen - **`getCampaign(campaignId)`**: Lädt eine spezifische Kampagne - **`getUserProgress(userId, campaignId)`**: Lädt Benutzerfortschritt - **`updateLevelProgress()`**: Aktualisiert Level-Fortschritt - **`getLeaderboard()`**: Lädt Bestenliste - **`getUserStats()`**: Lädt Benutzerstatistiken #### `Match3Controller` - RESTful API-Endpunkte für alle Match3-Operationen - Authentifizierung erforderlich für alle Routen - Fehlerbehandlung und Validierung ### 🌐 **API-Endpunkte** ``` GET /api/match3/campaigns - Alle aktiven Kampagnen GET /api/match3/campaigns/:id - Spezifische Kampagne GET /api/match3/campaigns/:id/progress - Benutzerfortschritt POST /api/match3/campaigns/:id/levels/:levelId/progress - Fortschritt speichern GET /api/match3/campaigns/:id/leaderboard - Bestenliste GET /api/match3/stats - Benutzerstatistiken ``` ### 🎮 **Frontend-Änderungen** #### `Match3Game.vue` - **Entfernt**: Spielmodi-Auswahl, Highscore-System - **Hinzugefügt**: Kampagnen-Status, Level-Info, Objective-Anzeige - **Neue Dialoge**: Level-Abschluss, Kampagnen-Abschluss - **API-Integration**: Laden und Speichern von Kampagnen-Daten #### Lokalisierung - Neue Übersetzungsschlüssel für Kampagnen-System - Deutsche und englische Lokalisierung - Konsistente Benennung ## Installation & Setup ### 1. **Backend starten** ```bash cd backend npm start ``` Das Backend erstellt automatisch: - Das `match3` Schema - Alle erforderlichen Tabellen - Beispieldaten (Kampagne + 2 Level) ### 2. **Frontend starten** ```bash cd frontend npm run dev ``` ## Automatische Initialisierung Das System initialisiert sich automatisch beim ersten Start: - **Schema-Erstellung**: `utils/sequelize.js` erstellt das `match3` Schema - **Tabellen-Synchronisation**: Sequelize erstellt alle Tabellen mit `sync({ alter: true })` - **Beispieldaten**: `utils/initializeMatch3.js` erstellt die erste Kampagne - **Assoziationen**: `models/associations.js` verknüpft alle Modelle ## Beispieldaten Die automatische Initialisierung erstellt: - **1 Kampagne**: "Juwelen-Meister" - **2 Level**: "Der Anfang" und "Erste Herausforderung" - **5 Objectives**: Verschiedene Ziele für beide Level ## Erweiterte Funktionen ### 🔮 **Zukünftige Entwicklungen** - **Mehr Kampagnen**: Verschiedene Themen und Schwierigkeitsgrade - **Spezial-Juwelen**: Power-ups und Bonus-Effekte - **Multiplayer**: Wettbewerbe zwischen Spielern - **Achievements**: Belohnungssystem für besondere Leistungen - **Tägliche Herausforderungen**: Neue Ziele jeden Tag ### 🎨 **Anpassungsmöglichkeiten** - **Neue Objective-Typen**: Einfach über das Datenbankschema erweiterbar - **Kampagnen-Editor**: Admin-Interface zum Erstellen neuer Kampagnen - **Benutzerdefinierte Level**: Spieler können eigene Level erstellen - **Themen-Skins**: Verschiedene visuelle Stile ## Wartung & Monitoring ### 📈 **Metriken** - Spieler-Engagement pro Kampagne - Level-Abschlussraten - Durchschnittliche Spielzeit - Beliebte Kampagnen ### 🛠️ **Admin-Funktionen** - Kampagnen aktivieren/deaktivieren - Level-Parameter anpassen - Objective-Ziele optimieren - Benutzerfortschritt zurücksetzen ## Technische Details ### **Modul-Struktur** - **ES6-Module**: Alle neuen Dateien verwenden `import/export` - **Konsistente Struktur**: Folgt dem bestehenden Projekt-Pattern - **Zentrale Assoziationen**: Alle Beziehungen in `models/associations.js` - **Automatische Schema-Erstellung**: Keine manuellen Migrationen nötig ### **Datenbank-Design** - **Flexible Objective-Systeme**: Verschiedene Zieltypen und Operatoren - **Performance-Optimiert**: Indizes auf häufig abgefragten Feldern - **Referentielle Integrität**: Foreign Key Constraints für Datenkonsistenz - **Skalierbar**: Einfach um neue Kampagnen und Level erweiterbar ## Fazit Das neue Kampagnen-System verwandelt das einfache Match3-Spiel in ein vollwertiges, progressives Spielerlebnis. Durch die Backend-Integration werden alle Spielstände persistent gespeichert und ermöglichen eine langfristige Spielerbindung. Die modulare Architektur macht es einfach, neue Kampagnen, Level und Objective-Typen hinzuzufügen, ohne den bestehenden Code zu beeinträchtigen. Das System initialisiert sich automatisch und erfordert keine manuellen Datenbankoperationen.