# Breakpilot Drive - Unity Projekt Setup

## Schritt-fuer-Schritt Anleitung

Diese Anleitung fuehrt Sie durch die Einrichtung des Unity-Projekts nach der Installation.

---

## 1. Neues Projekt erstellen

1. **Unity Hub** oeffnen
2. **"Projects"** Tab waehlen
3. **"New project"** klicken
4. Einstellungen:
   - Template: **3D (Built-in Render Pipeline)**
   - Project name: **BreakpilotDrive**
   - Location: `/pfad/zu/breakpilot-pwa/breakpilot-drive/Unity/`
5. **"Create project"** klicken

---

## 2. Ordnerstruktur erstellen

Nach dem Projekt-Start in Unity:

### 2.1 Im Project-Fenster (unten)

Rechtsklick → Create → Folder fuer jeden Ordner:

```
Assets/
├── Scripts/
│   ├── Core/
│   ├── Player/
│   ├── Track/
│   ├── Quiz/
│   ├── Network/
│   └── UI/
├── Prefabs/
│   ├── Player/
│   ├── Obstacles/
│   ├── Items/
│   └── VisualTriggers/
├── Audio/
│   ├── Music/
│   ├── SFX/
│   └── Voice/
├── Scenes/
├── Materials/
├── Plugins/
│   └── WebGL/
├── ThirdParty/
│   └── Kenney/
└── WebGLTemplates/
    └── Breakpilot/
```

---

## 3. Scripts importieren

### 3.1 Im Finder/Explorer

1. Oeffnen Sie: `breakpilot-pwa/breakpilot-drive/UnityScripts/`
2. Kopieren Sie die Dateien in die entsprechenden Unity-Ordner:

| Quelle | Ziel |
|--------|------|
| `UnityScripts/Core/*.cs` | `Assets/Scripts/Core/` |
| `UnityScripts/Player/*.cs` | `Assets/Scripts/Player/` |
| `UnityScripts/Track/*.cs` | `Assets/Scripts/Track/` |
| `UnityScripts/Quiz/*.cs` | `Assets/Scripts/Quiz/` |
| `UnityScripts/UI/*.cs` | `Assets/Scripts/UI/` |
| `UnityScripts/BreakpilotAPI.cs` | `Assets/Scripts/Network/` |
| `UnityScripts/QuizManager.cs` | `Assets/Scripts/Quiz/` |
| `UnityScripts/Plugins/*.jslib` | `Assets/Plugins/WebGL/` |
| `UnityScripts/WebGLTemplate/Breakpilot/*` | `Assets/WebGLTemplates/Breakpilot/` |

### 3.2 In Unity

Nach dem Kopieren:
1. Zurueck zu Unity wechseln
2. Unity importiert die Dateien automatisch
3. Falls Fehler erscheinen: Console pruefen (Window → General → Console)

---

## 4. Kenney Assets importieren

### 4.1 Car Kit

1. Finden Sie die heruntergeladene ZIP-Datei (`kenney_car-kit.zip`)
2. Entpacken Sie sie
3. In Unity: **Assets → Import Package → Custom Package**
4. Oder: Ziehen Sie die entpackten Dateien in `Assets/ThirdParty/Kenney/CarKit/`

### 4.2 Nature Kit

1. Finden Sie `kenney_nature-kit.zip`
2. Entpacken Sie sie
3. Ziehen Sie die Dateien in `Assets/ThirdParty/Kenney/NatureKit/`

---

## 5. TextMeshPro installieren

1. **Window → TextMeshPro → Import TMP Essential Resources**
2. Im Dialog: **"Import"** klicken
3. Warten bis der Import abgeschlossen ist

---

## 6. Szenen erstellen

### 6.1 MainMenu Szene

1. **File → New Scene**
2. **File → Save As** → `Assets/Scenes/MainMenu.unity`

### 6.2 Game_Video Szene

1. **File → New Scene**
2. **File → Save As** → `Assets/Scenes/Game_Video.unity`

### 6.3 Game_Audio Szene (optional fuer spaeter)

1. **File → New Scene**
2. **File → Save As** → `Assets/Scenes/Game_Audio.unity`

---

## 7. Manager-Objekte erstellen

### 7.1 In Game_Video Szene

1. Oeffnen Sie `Game_Video.unity`
2. Erstellen Sie leere GameObjects (Rechtsklick in Hierarchy → Create Empty):

| Name | Scripts hinzufuegen |
|------|---------------------|
| **GameManager** | GameManager.cs |
| **DifficultyManager** | DifficultyManager.cs |
| **AudioManager** | AudioManager.cs |
| **BreakpilotAPI** | BreakpilotAPI.cs |
| **QuizManager** | QuizManager.cs |
| **TrackGenerator** | TrackGenerator.cs |
| **ObstacleSpawner** | ObstacleSpawner.cs |

### 7.2 Script hinzufuegen

1. GameObject auswaehlen
2. Im Inspector: **Add Component**
3. Script-Namen eingeben (z.B. "GameManager")
4. Script auswaehlen

---

## 8. Spieler erstellen

### 8.1 Auto-Prefab

1. In `Assets/ThirdParty/Kenney/CarKit/` ein Auto-Modell finden
2. In die Szene ziehen
3. Komponenten hinzufuegen:
   - **Rigidbody** (Add Component → Physics → Rigidbody)
   - **Box Collider** (Add Component → Physics → Box Collider)
   - **PlayerController.cs** (Add Component → Scripts → Player)
4. Tag setzen: Im Inspector → Tag → **"Player"** (falls nicht vorhanden: Add Tag)
5. Als Prefab speichern: Aus Hierarchy in `Assets/Prefabs/Player/` ziehen

---

## 9. Tags erstellen

1. **Edit → Project Settings → Tags and Layers**
2. Tags hinzufuegen:
   - `Player`
   - `Obstacle`
   - `Coin`
   - `Star`
   - `Shield`
   - `QuizTrigger`

---

## 10. Build Settings

### 10.1 WebGL Platform

1. **File → Build Settings**
2. **WebGL** auswaehlen
3. **"Switch Platform"** klicken (kann einige Minuten dauern)

### 10.2 Szenen hinzufuegen

1. Im Build Settings Fenster
2. **"Add Open Scenes"** klicken fuer jede Szene
3. Reihenfolge: MainMenu (Index 0), Game_Video (Index 1)

### 10.3 Player Settings

1. Im Build Settings: **"Player Settings"** klicken
2. Einstellungen:

```
Company Name: Breakpilot
Product Name: Breakpilot Drive
Version: 0.1.0

Resolution and Presentation:
  WebGL Template: Breakpilot (falls verfuegbar)
  Run in Background: true

Publishing Settings:
  Compression Format: Gzip
  Decompression Fallback: true
  Data Caching: true
```

---

## 11. Erster Test

### 11.1 Im Editor

1. Game_Video Szene oeffnen
2. **Play-Button** druecken
3. Console auf Fehler pruefen

### 11.2 Haeufige Fehler

| Fehler | Loesung |
|--------|---------|
| "Script can't be loaded" | Script-Datei pruefen, Namespace korrekt? |
| "Missing Reference" | Inspector pruefen, Referenzen zuweisen |
| "Tag not found" | Tags in Project Settings erstellen |
| "TMP not found" | TextMeshPro importieren |

---

## 12. WebGL Build

Erst nach erfolgreichem Editor-Test:

1. **File → Build Settings**
2. **"Build"** klicken
3. Zielordner: `breakpilot-pwa/breakpilot-drive/Build/`
4. Warten (kann 5-10 Minuten dauern)

Nach dem Build:
```bash
cd breakpilot-pwa
docker-compose --profile game build breakpilot-drive
docker-compose --profile game up -d
open http://localhost:3001
```

---

## Naechste Schritte

Nach dem Setup:

1. [ ] Strecken-Prefabs erstellen (aus Kenney Assets)
2. [ ] Hindernis-Prefabs erstellen
3. [ ] Quiz-Trigger-Prefabs erstellen
4. [ ] UI Canvas einrichten
5. [ ] Audio-Clips zuweisen
6. [ ] API-URL konfigurieren

---

## Hilfe

Bei Problemen:
- Unity Console pruefen (Window → General → Console)
- Dokumentation lesen: `docs/breakpilot-drive/`
- API testen: `curl http://localhost:8000/api/game/health`
