jMonkeyEngine: 3D-Engine für Java-Spiele

Veröffentlicht am

Vor einiger Zeit bin ich eher zufällig über einen Link zur Webseite von jMonkeyEngine, einer 3D-Spiele-Engine, gestolpert. Da ich Java-Programmierer bin, war ich gleich angetan von den Möglichkeiten. Nun habe ich erste „Gehversuche“ gestartet und möchte hier ein paar Zeilen darüber schreiben…

Was genau ist jMonkeyEngine?

Screenshot aus dem About-Dialog…

jMonkeyEngine, oder auch kurz jME genannt, ist eine Game-Engine für in Java programmierte OpenGL-3D-Spiele. Bei der Installation erhält man eine erweiterte Version der Java-IDE NetBeans als Entwicklungsumgebung – die jMonkeyPlatform.

Die Engine ist Open Source Software (Quellcode) und laut Wikipedia „unter einer BSD-Lizenz veröffentlicht, dadurch eignet sie sich sowohl für kommerzielle Gamestudios, als auch für Privatleute und Universitäten.“.

Derzeit aktuell ist die Version 3.0 Beta. Den Beta-Status hat das Projekt m.W. aber schon recht lange – und eine Roadmap habe ich nicht gefunden. Allerdings muss man auch sagen, dass das Ganze als Beta-Version einen guten Eindruck macht.

Was kann jME?

Der Showcase auf der Projekt-Webseite zeigt ein paar Beispiele von Games, die mit der Engine erstellt wurden. Dort kann man schon einmal einen ersten Eindruck der Möglichkeiten bekommen.

Unter anderem findet man dort auch das Spiel Mythruna, ein Minecraft-Klon, der unter anderem auch im offiziellen Promo-Video zu sehen ist:


Die detaillierte Feature-Liste (siehe jME-Webseite, in englischer Sprache) ist lang. Und es würde wohl keinen Sinn machen, sie hier einfach zu wiederholen. Ich möchte hier nur ein paar spezielle Punkte nennen – ein paar Projekte, die jME integriert hat:

  • LWJGL, die Lightweight Java Game Library – wird von von der Enginge praktisch als Default-Renderer benutzt.
  • JBullet – eine Java-Implementierung der Bullet Physics Bibliothek. Sie sorgt für faszinierend einfache Handhabung von physikalischen Gegebenheiten.
  • NiftyGUI – wird für GUIs (Menüs, HUDs usw.) benutzt. Ein interessantes Projekt, mit dem sehr ansehnliche Oberflächen erstellt werden können.
  • TerraMonkey – das Teil-Projekt, das für die Erzeugung der Landschaften zuständig ist. Es werden verschiedene Techniken angeboten. So können beispielsweise Grafiken als Height-Maps für Hügel-Landschaften verwendet werden.
  • SpiderMonkey – das Teil-Projekt, das für die Umsetzung der Netzwerk-Kommunikation in Multiplayer-Spielen verwendet werden kann.

Zudem ist noch erwähnenswert, dass…

  • die erstellten Projekte natürlich auf den verschiedensten Plattformen laufen. Das Spiel kann per Webstart oder als Applet deploy-t werden. Für Linux-Versionen kann ein Linux-Launcher erstellt werden, für Mac ein App-Bundle und für Windows eine .exe-Datei. Außerdem wird die Auslieferung auf die Android-Plattform angeboten.
  • das Kamera-System mit der Chase-Kamera – zumindest für bestimmte Spiele (3rd-Person) – sehr einfach zu benutzen ist. Die Kamera verfolgt dabei in sanften (und konfigurierbaren) Bewegungen ein bestimmtes Objekt, den Spieler. Eigene Kamera-Führungen sind aber natürlich genauso machbar.
  • 3D-Modelle aus Blender importiert werden können. Wobei man hier auch sagen muss, dass es dabei hier und da noch Probleme gibt.

Wo anfangen?

Zunächst: neben der Produkt-Homepage jmonkeyengine.com gibt es noch eine offizielle Community-Webseite namens jmonkeyengine.org. In den Foren sind dort auch die Entwickler der Engine unterwegs.

Als erstes ist es eine gute Idee, die auf der Community-Webseite angebotenen Tutorials durchzuarbeiten. Dabei wird man schon das eine oder andere Mal ins Staunen geraten, wenn man sieht, welche Ergebnisse mit ziemlich wenig Code erreichbar sind. Wie man bei den Tutorials sieht, kommt die Engine mit einigen Beispiel-3D-Modellen, so dass man sich zunächst auch einmal sparen kann, eigene Modelle in Blender zu erstellen.

Hilfreich sind auch die Dokumentationen, die auf der gleichen Seite aufgelistet sind, auf der auch die Tutorials zu finden sind. Gerade die, wie ich finde, sehr gute Einführung in das nötigste aus dem Bereich Mathematik („Math for Dummies„) hat mir sehr geholfen.

Richtig! Mathematik! Mathematik-Kenntnisse sind natürlich notwendig. Da kommt man nicht drum herum. Die Einführung für Dummies ist wirklich sehr gut, und man hat doch schnell das Gefühl, verstanden zu haben, wie Vektoren und Quaternionen funktionieren. Das Hirn wird trotzdem qualmen – versprochen! Eine weitere Einführung, die mir sehr geholfen hat, ist die 4-teilige Reihe im Linear algebra for game developers auf dem Blog des Entwickler-Studios Wolfire. Die Grundlagen sind dort nicht direkt in Bezug auf jME und zudem in englischer Sprache beschrieben. Trotzdem aber, wie gesagt, sehr hilfreich.

Fazit

Mit den genannten Hilfestellungen wird einem der Einstieg recht leicht gemacht und man bekommt sehr schnell Ergebnisse, die zumindest einen selbst faszinieren. Natürlich ist es dann aber noch ein riesiger Schritt zum fertigen Spiel.

Zudem gibt es natürlich auch hier immer wieder Kleinigkeiten, an denen man ewig festhängt. So habe ich derzeit das Problem, dass ein Objekt, das ich von Blender importiert habe, nicht richtig gerendert wird. Zum Verzweifeln.

Trotzdem hat sich mir da eine für mich neue, große Welt aufgetan – mit lauter interessanten Möglichkeiten…


Dieser Artikel wurde in der/den Kategorie(n) Planet-U, Programmierung und Skripting, Spiele veröffentlicht und mit den Tags , , versehen.

4 Kommentare zu jMonkeyEngine: 3D-Engine für Java-Spiele

  1. Kommentar von Andreas
    23. Oktober 2012, 19:41 Uhr.

    Hach, dass es die noch gibt. Ich hab damals am MonkeyWorld3D Projekt mitgearbeitet. Das Projekt ist leider eingeschlafen…

    • Kommentar von normen
      25. Oktober 2012, 04:11 Uhr.

      ..war dafür aber schon eine Inspiration für die jetzige SDK :)

  2. Kommentar von blub
    23. Oktober 2012, 22:21 Uhr.

    Toller Beitrag. Ich persönlich verfolge JME seit Jahren und es ist immer wieder toll, wenn andere das Projekt entdecken.

  3. Pingback: Bitmap-Fonts erstellen (mit Hilfe von jME) | ME and my U

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>