3D-Grafik Wahl des Wrappers / der Engine

Xandaros

Mitglied
Hallo!
Ich habe mir mit ein paar Kollegen in den Kopf gesetzt ein kl... größeres Spiel zu programmieren.
Da ich schon häufiger Reaktionen auf Threads gesehen habe, die ähnlich anfingen, möchte ich gleich zu Anfang betonen: Ich brauche keinen Ratschlag ob das realisierbar ist, oder nicht, es geht nur darum, etwas zu tun zu haben und nicht mit dem mega Spiel schlechthin hinterher dazustehen.

Nachdem ich jetzt gute 2 Stunden darüber nachgedacht habe, welche Programmiersprache ich verwenden sollte, ist meine Wahl auf Java gefallen. Java ist vergleichsweise sehr einfach und ich habe ein etwas größeres Maß an Vorwissen.
Laut Wikipedia kann Java - in manchen Fällen - performancetechnisch selbst C++ das Wasser reichen und meine Hauptsorge wäre damit aus der Welt.

Die nächste Frage, die sich mir stellt ist, welchen OpenGL Wrapper / Welche Grafik bzw. Game Engine benutze ich.
Ich bin bei meiner Recherche über einige Möglichkeiten gestolpert, die ich einmal kurz aufzählen möchte:
  • JOGL, ein OpenGL Wrapper, wenn ich das richtig verstanden habe
  • LWJGL, Lightweight Java Game Library klinkt für mich nach einer leicht gewichtigen Game Engine.
  • Java3D, scheint eine Grafik Engine zu sein, die zwar einfach zu benutzen, aber wohl nicht so performant zu sein scheint
  • jMonkeyEngine, dies scheint eine sehr mächtige Game Engine zu sein. Performancetechnisch scheint diese auch ganz gut abzuschneiden.

Mein momentaner Favorit ist hierbei ganz klar die jMonkeyEngine, da diese Unterstützung für Grafik(Mit Shader, Licht, etc.), Sound und Physik hat. (Wobei wir Physik wahrscheinlich nicht brauchen werden, Schwerkraft lässt sich simulieren und Kollisionen, die über ein nicht-durch-die-wand-gehen und nicht-durch-den-boden-fallen hinaus gehen, werden wir nicht benötigen. Vielleicht als Eye Candy, aber das kann nach ganz unten auf die TODO Liste.)

Da ich mich jetzt so deutlich zu der jMonkeyEngine bekannt habe, möchte ich trotzdem um weitere Meinungen bitten.
Welche Probleme könnte ich mit dieser Engine bekommen? Welche Vorteile bieten vielleicht andere Engines, die diese nicht bieten?
Ist meine Wahl vielleicht komplett daneben gegriffen?

Ich hoffe auf ein wenig Unterstützung, damit die Planung etwas schneller vonstatten gehen kann :)

Anmerkungen:
Ich spreche von "Ich", da ich zurzeit der einzige Programmierer bin, die anderen sind Game Designer, Grafiker und Musiker.
Das Spiel soll im Endstadium MMORPG-Charakter aufweisen, ob es jemals dazu kommen wird, wird die Zeit zeigen.
 

Marco13

Top Contributor
Eine nette Übersicht gibt's unter Java und 3D-Grafik - it's engine driven [whoopsie's homepage]

Der wichtigste Unterschied bei den aufgezählten Libs ist die Ebene, auf der man programmiert. Während man mit JME und Java3D schwuppdiwupp ein mit Licht gerendertes frei drehbares Modell auf dem Bildschirm hat, braucht man mit JOGL/LWJGL schon 10 mal so viel Code um nur ein leeres Fenster aufzumachen ;) JME ist dabei noch mehr high-level, mit den Funktionen die speziell auf Spiele abzielen.

Einen konkreten "Nachteil" von JME kann ich nicht nennen (habe es auch als einziges der genannten noch nicht aktiv verwendet). Man steht damit eben, wie man so sagt, "on the shoulders of giants": Man kann sich auf's wesentliche konzentrieren, und verläßt sich darauf, dass JME den Rest erledigt.
 

Xandaros

Mitglied
Erstmal herzlichen Dank für den Link, das hat mir schon einmal sehr geholfen.
Ich habe mich dazu entschieden eine Game Engine zu benutzen, da ich für ein kleines Hobby-Projekt keine Lichtberechnung selbst schreiben möchte. (Zumal ich davon keine Ahnung habe und mich dort erst einlesen müsste.)

Nun sind dort mehrere Engines aufgelistet, die ich allesamt sehr gut finde.
Kurze Übersicht:
  • JME
  • jPCT
  • Ardor3D

jPCT hat so ein schönes Feature-Video auf der Homepage, das zeigt, was die Engine kann, was ich sehr hübsch finde.

Wie dem auch sei, jPCT hat ein sehr gewöhnungsbedürftiges Koordinatensystem:
In jPCT, the x-axis goes to the right, the positive z-axis goes INTO the screen and the negative y-axis goes UP.

Damit kann man sicherlich arbeiten, aber... y- geht nach oben? Sehr merkwürdig...

Auf der anderen Seite gefallen mir die Beispiele von jPCT deutlich besser...

Hmm... schwierig...
Ich warte mal ein paar Meinungen ab :)
 

Marco13

Top Contributor
Man kann und sollte in jedem Fall (soweit das möglich ist und Sinn macht) versuchen, die direkten Abhängigkeiten zum Renderer gering zu halten, um sich später ggf. umentscheiden zu können, wenn man noch nicht sicher ist. Suggestiv: Überlegen, wie das Rendering aussehen soll, dann mal das erste Objekt mit jPCT rendern und ggf. Alternativen antesten, um besser einschätzen zu können, was am ehesten zu den Anforderungen passt.
 

Ähnliche Java Themen


Oben