Files
yourpart3/README_MATCH3_CAMPAIGN.md

176 lines
6.2 KiB
Markdown

# 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.