3.5 KiB
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
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'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).ogre2gltf.py— Alternative für Modelle mit Ogre.mesh.xml/.skeleton.xml.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/E/1–4 Skills (Hotbar, siehe unten), ESC Pause, H Hitboxen (Debug)
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.
| Skill | Art | Effekt |
|---|---|---|
| Feuerball | Aktiv (Rechtsklick) | Explodierender Feuerball |
| Teleport | Aktiv (Hotbar) | Teleport zum Zielpunkt |
| Kettenblitz | Aktiv (Hotbar) | Blitz springt auf mehrere Gegner |
| Falle | Aktiv (Hotbar) | Hält 1 Gegner fest und fügt Schaden zu |
| Gaswolke | Aktiv (Hotbar) | Bleibt am Boden, Schaden über Zeit |
| Aura | Passiv | Bodenkreis um den Spieler, Schaden + Wegstoß |
| Bumerang | Passiv | Kreist um den Spieler (ab Stufe 3 mehrere) |
| Reichweite / Schärfe | Passiv | Schwert-Range/-Schaden |
| Regeneration / HP-Absorption | Passiv | Heilung |
| Schild | Passiv | Absorbiert Schaden, lädt nach 8 s neu |
| Vitalität / Dornen / Flinke Füße | Passiv | Max-HP / Kontakt-DPS / Tempo |
- Hotbar: Aktive Skills werden in Erwerbs-Reihenfolge auf Q, E, 1–4 verteilt; Cooldown-Anzeigen zeigen Taste + Name, Level-up-Karten die künftige Taste.
- Schadens-Feedback: Blutpartikel, roter Vignette-Flash, Blob blitzt rot auf, ab <30 % HP pulsierende rote Vignette.
Verzeichnisse
Original/— Original-Build (Blobtest.exe, JME3-Libs)extracted/— Aus dem Original extrahierte Assetsdecompiled/— Decompilierter Java-Sourceweb/— Browser-Version (Code-Struktur: sieheAGENTS.md)