A previous `git pull --rebase origin main` dropped 177 local commits,
losing 3400+ files across admin-v2, backend, studio-v2, website,
klausur-service, and many other services. The partial restore attempt
(660295e2) only recovered some files.
This commit restores all missing files from pre-rebase ref 98933f5e
while preserving post-rebase additions (night-scheduler, night-mode UI,
NightModeWidget dashboard integration).
Restored features include:
- AI Module Sidebar (FAB), OCR Labeling, OCR Compare
- GPU Dashboard, RAG Pipeline, Magic Help
- Klausur-Korrektur (8 files), Abitur-Archiv (5+ files)
- Companion, Zeugnisse-Crawler, Screen Flow
- Full backend, studio-v2, website, klausur-service
- All compliance SDKs, agent-core, voice-service
- CI/CD configs, documentation, scripts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
378 lines
7.7 KiB
Markdown
378 lines
7.7 KiB
Markdown
# Breakpilot Drive - Prefab Konfiguration
|
|
|
|
Diese Anleitung beschreibt, wie die Prefabs fuer das Spiel konfiguriert werden.
|
|
|
|
---
|
|
|
|
## 1. Spieler-Auto (Player)
|
|
|
|
### Prefab erstellen
|
|
|
|
1. Aus Kenney Car Kit ein Auto waehlen
|
|
2. In die Szene ziehen
|
|
3. Umbenennen zu "PlayerCar"
|
|
|
|
### Komponenten
|
|
|
|
| Komponente | Einstellungen |
|
|
|------------|---------------|
|
|
| **Transform** | Position: (0, 0, 0), Scale: (1, 1, 1) |
|
|
| **Rigidbody** | Use Gravity: false, Is Kinematic: true |
|
|
| **Box Collider** | Is Trigger: false, Size an Auto anpassen |
|
|
| **PlayerController** | Lane Distance: 3, Lane Switch Speed: 10 |
|
|
|
|
### Inspector-Einstellungen (PlayerController)
|
|
|
|
```
|
|
Bewegung:
|
|
Lane Distance: 3
|
|
Lane Switch Speed: 10
|
|
Forward Speed: 10
|
|
|
|
Spuren:
|
|
Current Lane: 1 (Mitte)
|
|
|
|
Touch-Steuerung:
|
|
Swipe Threshold: 50
|
|
|
|
Effekte:
|
|
Crash Effect: (ParticleSystem zuweisen)
|
|
Collect Effect: (ParticleSystem zuweisen)
|
|
```
|
|
|
|
### Tag
|
|
|
|
- Tag: **Player**
|
|
|
|
### Speichern
|
|
|
|
- Aus Hierarchy in `Assets/Prefabs/Player/` ziehen
|
|
- Name: `PlayerCar.prefab`
|
|
|
|
---
|
|
|
|
## 2. Strecken-Segment (Track)
|
|
|
|
### Prefab erstellen
|
|
|
|
1. Leeres GameObject: "TrackSegment"
|
|
2. Boden erstellen:
|
|
- 3D Object → Plane
|
|
- Scale: (5, 1, 5) fuer 50m Laenge
|
|
- Material: Strassen-Textur
|
|
|
|
### Struktur
|
|
|
|
```
|
|
TrackSegment
|
|
├── Ground (Plane mit Strassen-Material)
|
|
├── LeftBorder (optional, Leitplanke)
|
|
├── RightBorder (optional, Leitplanke)
|
|
└── SpawnPoints (leeres GO fuer Hindernis-Positionen)
|
|
```
|
|
|
|
### Speichern
|
|
|
|
- Mehrere Varianten erstellen (gerade, Kurve, etc.)
|
|
- In `Assets/Prefabs/Track/` speichern
|
|
|
|
---
|
|
|
|
## 3. Hindernisse (Obstacles)
|
|
|
|
### Hindernis-Prefab erstellen
|
|
|
|
1. Aus Kenney Nature Kit: Stein, Baum, etc. waehlen
|
|
2. In Szene ziehen
|
|
3. Umbenennen (z.B. "Obstacle_Rock")
|
|
|
|
### Komponenten
|
|
|
|
| Komponente | Einstellungen |
|
|
|------------|---------------|
|
|
| **Box Collider** | Is Trigger: true, Size anpassen |
|
|
|
|
### Tag
|
|
|
|
- Tag: **Obstacle**
|
|
|
|
### Prefab-Varianten
|
|
|
|
| Name | Beschreibung | Groesse |
|
|
|------|--------------|---------|
|
|
| `Obstacle_Rock.prefab` | Kleiner Stein | 1 Spur |
|
|
| `Obstacle_Tree.prefab` | Umgefallener Baum | 2 Spuren |
|
|
| `Obstacle_Barrier.prefab` | Absperrung | 1-2 Spuren |
|
|
| `Obstacle_Cone.prefab` | Verkehrskegel | 1 Spur |
|
|
|
|
### Speichern
|
|
|
|
- In `Assets/Prefabs/Obstacles/` speichern
|
|
|
|
---
|
|
|
|
## 4. Sammelbare Items
|
|
|
|
### Coin-Prefab
|
|
|
|
1. 3D Object → Cylinder (oder Kenney Asset)
|
|
2. Scale: (0.5, 0.1, 0.5)
|
|
3. Material: Gold
|
|
|
|
| Komponente | Einstellungen |
|
|
|------------|---------------|
|
|
| **Sphere Collider** | Is Trigger: true, Radius: 0.5 |
|
|
| **Rotation Script** | (optional, fuer Dreh-Animation) |
|
|
|
|
- Tag: **Coin**
|
|
- Prefab: `Assets/Prefabs/Items/Coin.prefab`
|
|
|
|
### Star-Prefab
|
|
|
|
1. Star-Modell (oder Kenney Asset)
|
|
2. Groesser als Coin
|
|
|
|
| Komponente | Einstellungen |
|
|
|------------|---------------|
|
|
| **Sphere Collider** | Is Trigger: true, Radius: 0.7 |
|
|
|
|
- Tag: **Star**
|
|
- Prefab: `Assets/Prefabs/Items/Star.prefab`
|
|
|
|
### Shield-Prefab
|
|
|
|
1. Shield-Modell
|
|
2. Blauer Schimmer-Effekt
|
|
|
|
| Komponente | Einstellungen |
|
|
|------------|---------------|
|
|
| **Sphere Collider** | Is Trigger: true, Radius: 0.7 |
|
|
|
|
- Tag: **Shield**
|
|
- Prefab: `Assets/Prefabs/Items/Shield.prefab`
|
|
|
|
---
|
|
|
|
## 5. Quiz-Trigger (Visual Triggers)
|
|
|
|
### Bridge-Prefab
|
|
|
|
1. Aus Kenney Assets oder selbst erstellen
|
|
2. Muss ueber der Strasse sein (Y-Position erhoehen)
|
|
|
|
### Struktur
|
|
|
|
```
|
|
Bridge
|
|
├── BridgeModel (visuelles Modell)
|
|
└── TriggerZone (leeres GO mit Collider)
|
|
└── Box Collider (Is Trigger: true)
|
|
└── VisualTrigger.cs (Trigger Type: "bridge")
|
|
```
|
|
|
|
### Komponenten (TriggerZone)
|
|
|
|
| Komponente | Einstellungen |
|
|
|------------|---------------|
|
|
| **Box Collider** | Is Trigger: true, Size: (10, 5, 2) |
|
|
| **VisualTrigger** | Trigger Type: "bridge" |
|
|
|
|
- Tag: **QuizTrigger**
|
|
|
|
### Weitere Trigger
|
|
|
|
| Prefab | Trigger Type | Beschreibung |
|
|
|--------|--------------|--------------|
|
|
| `Bridge.prefab` | "bridge" | Bruecke ueber Strasse |
|
|
| `Tree.prefab` | "tree" | Grosser Baum am Rand |
|
|
| `House.prefab` | "house" | Haus am Rand |
|
|
| `Sign.prefab` | "sign" | Schild mit Bild |
|
|
|
|
### Speichern
|
|
|
|
- In `Assets/Prefabs/VisualTriggers/` speichern
|
|
|
|
---
|
|
|
|
## 6. Manager-Objekte
|
|
|
|
Diese werden nicht als Prefabs, sondern direkt in der Szene erstellt:
|
|
|
|
### GameManager
|
|
|
|
```
|
|
GameObject: GameManager
|
|
Scripts:
|
|
- GameManager.cs
|
|
|
|
Inspector:
|
|
Start Lives: 3
|
|
Pause Question Interval: 500
|
|
Game Over Panel: (UI Referenz)
|
|
Pause Panel: (UI Referenz)
|
|
```
|
|
|
|
### QuizManager
|
|
|
|
```
|
|
GameObject: QuizManager
|
|
Scripts:
|
|
- QuizManager.cs
|
|
|
|
Inspector:
|
|
Quick Quiz Panel: (UI Referenz)
|
|
Pause Quiz Panel: (UI Referenz)
|
|
Question Text: (TextMeshPro Referenz)
|
|
Answer Buttons: [Button0, Button1, Button2, Button3]
|
|
Timer Text: (TextMeshPro Referenz)
|
|
Timer Slider: (Slider Referenz)
|
|
Points Correct: 500
|
|
Points Wrong: -100
|
|
Pause Question Interval: 500
|
|
```
|
|
|
|
### TrackGenerator
|
|
|
|
```
|
|
GameObject: TrackGenerator
|
|
Scripts:
|
|
- TrackGenerator.cs
|
|
|
|
Inspector:
|
|
Track Segment Prefabs: [Segment1, Segment2, ...]
|
|
Start Segment Prefab: (Start-Segment)
|
|
Segment Length: 50
|
|
Visible Segments: 5
|
|
Despawn Distance: -20
|
|
Base Speed: 10
|
|
```
|
|
|
|
### ObstacleSpawner
|
|
|
|
```
|
|
GameObject: ObstacleSpawner
|
|
Scripts:
|
|
- ObstacleSpawner.cs
|
|
|
|
Inspector:
|
|
Obstacle Prefabs: [Rock, Tree, Barrier, ...]
|
|
Large Obstacle Prefabs: [LargeTree, ...]
|
|
Coin Prefab: (Coin.prefab)
|
|
Star Prefab: (Star.prefab)
|
|
Shield Prefab: (Shield.prefab)
|
|
Bridge Prefab: (Bridge.prefab)
|
|
Tree Prefab: (Tree.prefab)
|
|
House Prefab: (House.prefab)
|
|
|
|
Lane Distance: 3
|
|
Min Obstacle Spacing: 10
|
|
Max Obstacle Spacing: 30
|
|
|
|
Obstacle Chance: 0.6
|
|
Coin Chance: 0.3
|
|
Star Chance: 0.05
|
|
Shield Chance: 0.02
|
|
Quiz Trigger Chance: 0.1
|
|
```
|
|
|
|
### BreakpilotAPI
|
|
|
|
```
|
|
GameObject: BreakpilotAPI
|
|
Scripts:
|
|
- BreakpilotAPI.cs
|
|
|
|
Inspector:
|
|
Base URL: http://localhost:8000/api/game
|
|
Use Offline Cache: true
|
|
```
|
|
|
|
---
|
|
|
|
## 7. UI Canvas
|
|
|
|
### Canvas erstellen
|
|
|
|
1. Rechtsklick in Hierarchy → UI → Canvas
|
|
2. Canvas Scaler:
|
|
- UI Scale Mode: Scale With Screen Size
|
|
- Reference Resolution: 1920 x 1080
|
|
|
|
### UI Struktur
|
|
|
|
```
|
|
Canvas
|
|
├── GameHUD
|
|
│ ├── ScorePanel
|
|
│ │ ├── ScoreIcon
|
|
│ │ └── ScoreText (TextMeshPro)
|
|
│ ├── LivesPanel
|
|
│ │ ├── Heart1, Heart2, Heart3 (Images)
|
|
│ │ └── LivesText (TextMeshPro)
|
|
│ └── DistanceText (TextMeshPro)
|
|
│
|
|
├── QuickQuizPanel (anfangs deaktiviert)
|
|
│ ├── QuestionText (TextMeshPro)
|
|
│ ├── AnswerButtons
|
|
│ │ ├── Button1, Button2, Button3
|
|
│ ├── TimerSlider
|
|
│ └── TimerText
|
|
│
|
|
├── PauseQuizPanel (anfangs deaktiviert)
|
|
│ ├── Background (halbtransparent)
|
|
│ ├── QuestionPanel
|
|
│ │ ├── QuestionText
|
|
│ │ ├── Button1, Button2, Button3, Button4
|
|
│ │ └── HintText (optional)
|
|
│
|
|
├── GameOverPanel (anfangs deaktiviert)
|
|
│ ├── GameOverText
|
|
│ ├── FinalScoreText
|
|
│ ├── RestartButton
|
|
│ └── MainMenuButton
|
|
│
|
|
└── PausePanel (anfangs deaktiviert)
|
|
├── PauseText
|
|
├── ResumeButton
|
|
└── MainMenuButton
|
|
```
|
|
|
|
---
|
|
|
|
## 8. Checkliste
|
|
|
|
### Prefabs erstellt?
|
|
|
|
- [ ] PlayerCar.prefab
|
|
- [ ] TrackSegment.prefab (mindestens 1)
|
|
- [ ] Obstacle_Rock.prefab
|
|
- [ ] Coin.prefab
|
|
- [ ] Star.prefab
|
|
- [ ] Shield.prefab
|
|
- [ ] Bridge.prefab (Quiz-Trigger)
|
|
|
|
### Manager konfiguriert?
|
|
|
|
- [ ] GameManager - alle UI Referenzen gesetzt
|
|
- [ ] QuizManager - alle UI Referenzen gesetzt
|
|
- [ ] TrackGenerator - Prefabs zugewiesen
|
|
- [ ] ObstacleSpawner - Prefabs zugewiesen
|
|
- [ ] BreakpilotAPI - Base URL korrekt
|
|
|
|
### Tags erstellt?
|
|
|
|
- [ ] Player
|
|
- [ ] Obstacle
|
|
- [ ] Coin
|
|
- [ ] Star
|
|
- [ ] Shield
|
|
- [ ] QuizTrigger
|
|
|
|
### UI Canvas?
|
|
|
|
- [ ] Canvas Scaler konfiguriert
|
|
- [ ] GameHUD erstellt
|
|
- [ ] QuickQuizPanel erstellt
|
|
- [ ] PauseQuizPanel erstellt
|
|
- [ ] GameOverPanel erstellt
|