Switch OggMusicBackend from streaming an external, git-ignored music/ folder (relative to the run directory) to streaming bundled classpath resources under /music/, so the four manor tracks ship inside the JAR and play out of the box — consistent with how fonts are bundled. The play loop reopens the resource each iteration via a BufferedInputStream (the vorbisspi SPI needs mark/reset to read the OGG header). Missing tracks still fall back to silence. Add the four converted OGG Vorbis tracks (manor-theme/cellar-drone/musicbox/ lament) under src/main/resources/music/, un-ignore that path, and re-anchor the gitignore so only the top-level MP3 source folder stays ignored. Update docs/music.md for the bundled approach and conversion recipes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Semesterprojekt – Textadventure
Design- und Architekturdokumentation. Dient als Spec während der Implementierung.
Inhalt
| Datei | Inhalt |
|---|---|
| architecture.md | Package-Struktur, Schichten, DTO-vs-Domain-Trennung |
| conventions.md | Sprache, ID-Format, Naming, Lombok-Cheatsheet |
| data-structures.md | Alle gewählten Collection-Typen mit Begründung |
| item-model.md | Item-Hierarchie (abstract + 3 Subtypen), Lombok-Inheritance |
| yaml-schemas.md | Schemas für items.yaml, rooms.yaml, npcs.yaml, game.yaml |
| loading-flow.md | Lade-Reihenfolge, Referenz-Auflösung, Validierung |
| commands.md | Befehlsparser, Command-Pattern, Befehlsliste |
| npcs.md | NPC-Modell, Talk- und Give-Interaktion |
| implementation-status.md | Aktueller Stand, Phasen-Checkliste, festgelegte Entscheidungen |
Pflicht vs. Optional (laut Aufgabenstellung)
- Pflicht: ≥4 Räume mit Navigation, ≥3 Gegenstände mit Inventar
- Optional/Bonus: NPCs, Swing-GUI
Beide optionalen Teile sind hier eingeplant.
Technologie-Stack
- Java 25
- Jackson (YAML) für Daten-Loading
- Lombok für Boilerplate-Reduktion
- JUnit 5 + AssertJ + Mockito für Tests
- Logback + SLF4J für Logging
- Swing für GUI (Bonus)