Add village 3D wiring, voice lines, and 1.74 m world scale.

Houses ~8.5 m; chimps capped ~0.85 m with safer axis fitting. Large GLB/PBR packs stay local until Git LFS (Forgejo HTTP 413).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
copilot 2026-09-15 12:02:57 +02:00
parent 1d9e0a6532
commit 1cc8aa9b9d
507 changed files with 12991 additions and 579 deletions

View file

@ -16,24 +16,27 @@ Pay2Win – um reiche Leute anzulocken. Absichtlich chaotisches Meta-Comedy-Acti
|--------|--------|
| Bewegen | WASD / Pfeile (relativ zur Kamera) |
| Umschauen | Maus |
| Interagieren | E / Leertaste |
| Angriff | Linksklick / J |
| Interagieren | E / Leertaste — gelbes Puls-Highlight = E-Ziel |
| Angriff | Linksklick / J — rotes Highlight = Angriffsziel |
| Pause (Shop/Inventar/Settings) | Esc |
| Cutscene skippen | Enter |
Unten erscheint ein Prompt (`[E] Reden` / `[E] Öffnen` / `[J] Angreifen` / Ausgang). Treffer flashen; Daneben zeigt kurz „Daneben!“.
Third-Person-Kamera folgt dem Spieler (`SpringArm3D`). Billboards nutzen Y-Billboard (Mario-Baum-Stil).
Im Inventar (Pause): Item doppelklicken/aktivieren — **Milch** skippt zum Endboss.
## Scaffold-Inhalt
Kanonischer Plan: **[DESIGN.md](DESIGN.md)**
Kanonischer Plan / **einzige Wahrheit:** **[DESIGN.md](DESIGN.md)**
- Story-Flow inkl. Catscene + Dressler-Boss; Magier-Branch → Mond
- Third-Person-Kamera, Billboard-Y-Planes
- Story-Flow: Dorf-Hauptwelt (Reif + Tor + Wiese zu Fuß) → Catscene + Dressler; Magier-Branch → Mond
- Third-Person-Kamera, Billboard-Y-Planes + `SpriteFit`
- First-Run-Sprache DE/EN/BY, Musik gesperrt laut, Burger-Cham
- Milch-Skip, Tiramisu-Fett, Glitzos, Bowser-Hammer, Death Ja/Nein-Satire
- Save: `user://save.json`
- Gegner: Chase/Melee-AI laut DESIGN.md §16
## Regenerieren von Platzhaltern
@ -45,11 +48,20 @@ python3 scripts/tools/generate_scaffold.py
### Grafik
**Schuhmacher (Reif/Mark)** — Dateien zum Ersetzen, siehe [`assets/sprites/placeholders/REPLACE.md`](assets/sprites/placeholders/REPLACE.md):
- `reif.png` / `mark.png` — Mensch (Boss)
- `shoe.png` — geworfene Schuhe
- `stick.png` — Stock
- `tiramisu.png` — Tonne nach Sieg
Weitere TODOs:
- Titelbild: verpixeltes Mario + Sonic + Burger-Regen + verstörter Mensch
- Burger-Cham-Bild (70-jähriger Mann mit Burger)
- Intro Tisch/Konsole vor/nach Explosion
- Dorf-Häuser & verstörte Dorfbewohner
- Schuhmacher Reif, Eisbär + Schlangenmähdrescher, Schlange, Kuh-Masseur
- Eisbär + Schlangenmähdrescher, Schlange, Kuh-Masseur
- Glitzos, dunkelgrauer Magier, bayerischer Farmer, Urhahn, Nutztiere
- Mond: Käseverkäufer, Katapulte, Mondschwert, Fake Bowser
- Dresslermeister (Riesenapfel), Hongkong/Glitschkönig, Quirxels
@ -58,11 +70,24 @@ python3 scripts/tools/generate_scaffold.py
### Audio
- Laute Startmusik mit Gesang („Hey, das hier ist so eine laute Musik extra…“)
- Sprecher Intro / Hongkong / Dorf / Bayerisch „Schulz“ / EN / DE-Snippets
- Burger-Cham, Explosion, Kämpfe, Massage, Käsekatapult, …
- **Dialog-Stimmen (Piper, high models):** `assets/audio/voice/{de,en,by}/`
- Casting: `data/voice_cast.json` (pro NPC eigenes High-Modell / Emotion-Speaker)
- Einmal neu: `python3 scripts/tools/generate_voice_dialogs.py --force` (dauert)
- **Watcher** (solange keine echten Takes): `python3 scripts/tools/generate_voice_dialogs.py --watch`
→ baut WAVs neu, sobald `data/locales/*.json` oder `voice_cast.json` ändern
- Modelle unter `~/.local/share/piper/voices/` (thorsten-high, libritts-high, …)
- Burger-Cham, Explosion, Kämpfe, …
Aktuell liegen nur generierte Beep-WAVs unter `assets/audio/placeholders/`.
Platzhalter-SFX weiter unter `assets/audio/placeholders/`.
### 3D-Modelle
- Ablage: `assets/3DModelle/` → `props/` / `houses/` / `animals/` (Details: `assets/3DModelle/README.md`)
- Drop in Root oder `_inbox/`, oft noch umbenennen → Auto-Sort wartet **45s Idle**:
`python3 scripts/tools/organize_3d_models.py --watch --import`
- Einmal: `python3 scripts/tools/organize_3d_models.py --force --import`
- Dorf-Häuser: Scan aller `houses/*/*.glb` außer `massour/`
- Dorf-Tiere: Scan aller `animals/*/*.glb` außer `cow/` (Kuh = Masseur **im Dorf**)
## Hinweis
Keine echten Zahlungen, keine lizenzierten Charakter-Assets — alles Satire/Platzhalter.