118 lines
3.2 KiB
Markdown
118 lines
3.2 KiB
Markdown
# Wave Survivors - Tech Stack & Standards
|
|
|
|
**Projekt:** ~/Projects/wave_survivors/
|
|
**Engine:** Flame 1.37.0
|
|
**Plattformen:** macOS, iOS, Android
|
|
**Status:** Setup-Phase (2026-07-12)
|
|
|
|
---
|
|
|
|
## 🎯 Top 10 Empfehlungen
|
|
|
|
### ✅ SOLLTE (höchste Priorität)
|
|
|
|
**1. AGENTS.md mit Code-Limits**
|
|
- Max 100 Zeilen pro Datei (enforced durch dart_code_metrics)
|
|
- Ponytail-Philosophie: "Kürzester funktionierender Diff gewinnt"
|
|
- Verhindert Code-Bloat
|
|
|
|
**2. flutter-development + flutter-code-review Skills**
|
|
- Bereits in ~/.hermes/skills/
|
|
- Flame-Engine Pitfalls + Quality Gates
|
|
- Automatische Code-Review
|
|
|
|
**3. Riverpod statt Bloc**
|
|
- Weniger Boilerplate
|
|
- Direkter State-Zugriff
|
|
- Besser für Game-Loops
|
|
|
|
**4. freezed für Data Models**
|
|
- Immutable Classes automatisch
|
|
- Eliminiert Boilerplate (copyWith, JSON)
|
|
- Type-safe Union Types
|
|
|
|
**5. Feature-first Ordnerstruktur**
|
|
```
|
|
lib/
|
|
├── features/player/
|
|
├── features/enemies/
|
|
├── features/weapons/
|
|
├── systems/
|
|
├── ui/
|
|
└── game/
|
|
```
|
|
|
|
**6. flame_lint + dart_code_metrics**
|
|
- Flame-spezifische Lint-Regeln
|
|
- Erzwingt max 100 Lines, max 4 Parameter
|
|
- Automatische Code-Qualität
|
|
|
|
---
|
|
|
|
### 🟡 OPTIONAL (mittlere Priorität)
|
|
|
|
**7. object_pool für Performance**
|
|
- Wiederverwendung von Enemy/Projectile-Objekten
|
|
- Verhindert GC-Spikes bei 50+ Enemies
|
|
|
|
**8. flame_tiled für Level-Design**
|
|
- Tiled Map Editor Integration
|
|
- Visuelles Level-Design
|
|
|
|
**9. flame_rive für Animationen**
|
|
- Hochwertige 2D-Animationen
|
|
- Besser als Sprite-Sheets
|
|
|
|
**10. talker für Logging**
|
|
- Unified Logging statt print()
|
|
- Crashlytics/Sentry Integration
|
|
|
|
---
|
|
|
|
### 🔧 Weitere Optionen (aus Sub-Agent Recherche)
|
|
|
|
**Flame Engine Addons:**
|
|
- **flame_forge2d: ^0.19.2+6** - Physik-Engine (Box2D) für Projektile, Knockback, Partikeleffekte
|
|
- **flame_state_machine: ^3.0.0** - Type-safe State Machines für Enemy AI, Player States (Idle, Attack, Hit)
|
|
- **flame_camera_tools: ^5.0.2** - Screen Shake, Camera Follow, Zoom-Effekte bei Hits
|
|
- **flame_svg: ^1.12.1** - Vektorgrafiken für UI-Elemente und skalierbare Assets
|
|
|
|
**Architecture & DI:**
|
|
- **get_it: ^9.2.1** - Service Locator für Dependency Injection
|
|
- **injectable: ^3.0.0** - Annotation-basierter Code-Generator (weniger Boilerplate)
|
|
- **injectable_generator: ^3.1.0** - Generator für injectable
|
|
|
|
**Logging Integration:**
|
|
- **talker_flutter: ^5.1.17** - Flutter-UI für talker Logs
|
|
- **talker_riverpod_logger: ^5.1.17** - Automatisches Logging aller Riverpod State-Änderungen
|
|
|
|
**Alternative zu Riverpod:**
|
|
- **bloc: ^9.2.1** + **flutter_bloc: ^9.1.1** - Event-driven, gut für komplexe Game Events
|
|
- **bloc_concurrency: ^0.3.0** - Parallelverarbeitung von Events
|
|
|
|
**Code Generation:**
|
|
- **build_runner: ^2.4.0** - Code Generation Framework
|
|
- **freezed_annotation: ^3.0.0** - Annotations für freezed
|
|
- **flutter_riverpod: ^3.3.2** - Flutter-Integration für Riverpod
|
|
|
|
**Linting:**
|
|
- **very_good_analysis: ^5.1.0** - Strengere Lint-Regeln (alternative zu flame_lint)
|
|
|
|
---
|
|
|
|
## 📋 Nächste Schritte
|
|
|
|
1. ✅ Flutter-Projekt erstellen
|
|
2. ✅ AGENTS.md erstellen (Ponytail + Code-Limits)
|
|
3. ✅ analysis_options.yaml konfigurieren
|
|
4. ✅ Riverpod + freezed installieren
|
|
5. ✅ Ordnerstruktur anlegen
|
|
6. ✅ Main Menu bauen
|
|
|
|
---
|
|
|
|
## 🔗 Links
|
|
|
|
- [[Wave Survivors - GDD]]
|
|
- [[Wave Survivors - Development Log]]
|