# 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 Spinnen. Bei 10% Kill-Chance droppt ein heilendes Kreuz. Cel-Shading-Look, Wellen werden alle 10 Sekunden stärker. ## 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 Feuerball, Rechtsklick Schwert, M3 Hände tauschen, E Teleport, H Hitboxen (Debug) ## Verzeichnisse - `Original/` — Original-Build (Blobtest.exe, JME3-Libs) - `extracted/` — Aus dem Original extrahierte Assets - `decompiled/` — Decompilierter Java-Source - `web/` — Browser-Version