commit 3e6635eac67331f5850a3e9d8f9ed4b89648647b Author: nico Date: Wed Aug 12 18:58:57 2026 +0200 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62b87ff --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +# Third-party source (has its own repo) +jmonkeyengine/ + +# Node +web/node_modules/ +web/dist/ + +# Python +__pycache__/ +*.pyc + +# Original binaries (kept locally only) +Original/ + +# Extracted raw assets (converted versions live in web/public) +extracted/ + +# Temporary +/tmp/ +*.log diff --git a/README.md b/README.md new file mode 100644 index 0000000..d9111b6 --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# 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