Files
Wackelpeter/README.md
T

64 lines
2.4 KiB
Markdown

# Wackelpeter
Browser-Port des 2012er jMonkeyEngine-Spiels "Wackelpeter" (Blobtest).
## Übersicht
3D Arena-Survival-Spiel: Der Blob "Wackelpeter" kämpft mit Schwert und
Feuerball-Stab gegen Wellen von Monstern. Bei 10% Kill-Chance droppt ein
heilendes Kreuz. Cel-Shading-Look, Wellen werden alle 10 Sekunden stärker.
Monster: Spinnen (ab Welle 1), Geister (ab 3), springende Frösche (ab 4),
Schleime (ab 5, teilen sich), Fledermäuse (ab 5), Pilz-Türme (ab 6),
Krabben (ab 7), Bienenschwärme (ab 7) und alle 5 Wellen ein Boss-Golem.
## Restaurierung
Das Original lag nur kompiliert vor (Blobtest.exe + JME3-Libs). Der Source
wurde per CFR-Decompiler wiederhergestellt (siehe `decompiled/`), die Modelle
aus dem JME3-Binärformat `.j3o` extrahiert und nach glTF/GLB konvertiert.
### Konvertierungs-Pipeline
1. `j3o_converter/` — Java-Programm (JME3 via Maven) lädt `.j3o`-Dateien und
exportiert Mesh, Skeleton, Animationen und Materialien als JSON.
Ausführung via Podman:
```
podman run --rm -v $(pwd)/j3o_converter:/work:Z \
-v $(pwd)/extracted:/extracted:Z \
-v $(pwd)/web/public/models:/output:Z \
-w /work docker.io/library/gradle:8-jdk17 bash -c '
gradle --no-daemon installDist &&
java -cp "build/classes/java/main:build/install/j3o-converter/lib/*" \
J3OConverter /extracted/Models/spider/spider.mesh.j3o /output/spider.json'
```
2. `j3o_json2gltf.py` — konvertiert das JSON zu glTF 2.0 (.glb) mit
Skeleton und Animationen (Keyframes werden mit der Bind-Pose kombiniert,
da JME3-Tracks relativ zur Bind-Pose sind).
3. `ogre2gltf.py` — Alternative für Modelle mit Ogre `.mesh.xml`/`.skeleton.xml`.
4. `j3o_parser.py` — experimenteller Python-Parser für das `.j3o`-Format
(durch die Java-Lösung ersetzt).
## Web-Version
```
cd web
npm install
npm run dev
```
- Three.js + TypeScript + Vite
- Steuerung: WASD bewegen, Space springen, Maus zielen,
Linksklick Schwert, Rechtsklick Feuerball (per Skill),
Q Kettenblitz (per Skill), E Teleport (per Skill), H Hitboxen (Debug)
- Roguelike-Skillsystem: Kills geben XP, bei Level-Up pausiert das Spiel
und bietet 3 Skill-Karten (neue Skills oder Upgrades). Seed (Startmenü)
steuert die Angebote, "Nochmal spielen" behält den Seed bei.
## Verzeichnisse
- `Original/` — Original-Build (Blobtest.exe, JME3-Libs)
- `extracted/` — Aus dem Original extrahierte Assets
- `decompiled/` — Decompilierter Java-Source
- `web/` — Browser-Version