Files

3.5 KiB
Raw Permalink Blame History

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/E/14 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, 14 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 Assets
  • decompiled/ — Decompilierter Java-Source
  • web/ — Browser-Version (Code-Struktur: siehe AGENTS.md)