Archive for category 3D Java

MMO mit Java – Charakter Auswahl

Nachdem die Schwierigkeiten mit FengGui ausgestanden sind, lief die Erstellung des Charakter Auswahlbildschirms deutlich schneller. Einzig die Liste zur Auswahl der einzelnen Charaktere verursachte zunächst einige Schwierigkeiten. Wird bei FengGui nicht explizit ein Theme ausgewählt, so bleiben Schriftarten und Hintergründe schwarz.

Das Setzen der Farbe und Hover-Farbe erfolgt folgendermaßen:


DecoratorLayer underlay = new DecoratorLayer();
PlainBackground plainBackground = new PlainBackground(new Color(0.97f, 0.89f, 0.52f, 0.5f));
RoundedBorder roundedBorder = new RoundedBorder(new Color(0.97f, 0.89f, 0.52f, 0.5f), 3, 3);
underlay.add(plainBackground, roundedBorder);
list.getAppearance().setHoverUnderlay(underlay);
list.getAppearance().setSelectionUnderlay(underlay);

Die erste Version des Auswahlbildschirms verfügt nur über ein statisches Hintergrundbild. Professionelle MMO’s verwenden hier entweder eine reine 3D Landschaft, eine 3D Landschaft kombiniert mit einer Skybox (z.B. GuildWars) oder ein Hintergrundbild, dessen Himmel animiert ist. Die einzelnen Gui’s sind mittels GameStates separiert, wichtig ist, dass aus den States sämtliche Widgets entfernt werden, damit diese nicht die nächste Maske beeinflussen. Hier nun das Ergebnis:

Charakter-Auswahlbildschirm

Eine erfreuliche Erkenntnis ergab sich noch: Der Text der GameButtons kann programmatisch eingefügt werden, damit erübrigen sich spezifische Bilder für jeden einzelnen Buttons und reduzieren die Malarbeit.

No Comments

MMO mit Java – Login Client mit FengGui

Nach dem ich jede Menge Inkompatibilitäten zwischen der JMonkeyEngine und FengGui beseitigt hatte und ich zweitweise dachte es funktioniert doch nicht ist die erste Version des Login Clients jetzt fertig. Schlussendlich ist es aber doch geschafft und alle Bibliotheken sind kompatibel im Maven Repository verstaut.

Nach einem Login mit den richtigen Daten werden die Account Informationen vom Server abgeholt. Fehlt also noch die Oberfläche zur Auswahl und Erstellung der Charaktere.

No Comments

MMO mit Java – JMonkeyEngine Client

Nachdem die Performance mit Java2D auf hohen Auflösungen zu wünschen übrig lies, ging ich über, den Client mit Java3D neu zu erstellen. Die Bücher Killer Game Programming in Java und Pro Java 6 3D Game Development sehr hilfreich.
Da Java3D aber nicht mehr weiterentwickelt wird, bzw. nur mehr im Rahmen für JavaFX war es sinnvoller auf eine für Spieleentwicklung spezialisierte Szene Graph API einzusetzen. Hier bot sich die JME – JmonkeyEngine 2 an. Die Ergebnisse können sich sehen lassen und die Einarbeitung fällt dank des umfangreichen Tutorials und der regen Forumaktivität – ganz im Gegensatz zu Java3D – ziemlich einfach aus.

Hier der erste Prototyp des Clients, der Avatar ist übrigens aus Neverwinter Nights, das Modell mit Hilfe eines eigenen Parsers,erzeugt mit antlr, eingelesen.

Impressionen einer virtuellen Welt

Hier ein weiteres Bild:

Impressionen einer virtuellen Welt

Auch wenn optisch schon ein ansprechendes Ergebnis da ist, so ist noch einiges zu tun, gerade hinsichtlich der Animationen, animiert Laufen kann der Avatar, aber es gibt noch einige Schwierigkeiten bei Sitzen und Aufstehen. Derzeit ist aber die Anbindung an den Application Server mit JMS interessanter.

No Comments

Java3D auf Vista 64

Nachdem meine Versuche die JMonkeEngine auf Grund der darunterliegenden Bibliothek lwjgl mit Vista 64 zu laufen zu bringen gescheitert sind, bin ich für meine Versuche wieder auf Java 3D ausgewichen. Java 3D läuft sowohl mit der 32bit Variante des JDK’s als auch mit der 64bit Variante problemlos auf Vista 64. Wie früher auch ziehen die Beispiele einiges an Prozessorleistung.

Tags:

No Comments

3D Java: JMonkeyEngine

Was die JMonkeyEngine angeht, so scheint diese auf den ersten Blick ziemlich professionelle Anwendungen, zumindest Demos, hervorzubringen. Diverse Screenshots und Videos auf youtube führen zunächst zu ungläubigen Staunen, was mittlerweile mit Java alles möglich ist. Klar, die Grafik kann sich nicht mit der gängiger Spieletitel messen, aber mit der Optik populärer MMO’s wie World of Warcraft kann Java mittlerweile mithalten.

Die JMonkeyEngine in eigenen Projekten zu verwenden gestaltet sich jedoch schwieriger als zunächst erwartet. Für Version 1 gibt es die Libraries zum Download, jedoch lässt die Dokumentation zu wünschen übrig. Die Wiki Anleitung empfiehlt das Open Source Projekt bei java.net mittels cvs auszuchecken. Dies läuft relativ problemlos, doch scheiterte ich am compillieren der Sourcen. Es schien, als wäre gerade jemand dabei gewesen, Code einzuchecken, hatte aber dabei einige Dateien vergessen, was mich in eine Sackgasse führte. Also Versuch 2 mit Version 2 des Projekts, diesmal aber als svn Projekt. Auschecken wieder kein Problem, jedoch streikte diesesmal der Compiler mit einem OutOfMemory, was aber an meinem Vista 64 System liegen kann. Diverse Kommentare im svn log führten mich auf die richtige Fährte, das Problem behob sich mittels höherer Memory Einstellungen im ant Buildfile. Der Test führte mich dann dennoch in eine Sackgasse, denn die benötigten lwjgl Bibliotheken, auf die JMonkeyEngine aufbaut bringt eigene .dll Bibliotheken für den Zugriff auf opengl mit, die jedoch nur für die 32bit Version von Windows zur Verfügung stehen.

Fazit: Die Probleme mit 64bit Systemen und die mangelhafte Dokumentation lassen mich derzeit vor dem Einsatz der JMonkeyEngine abraten, ich rate hier doch zu dem bewährten Java3d, welches sowohl unter 32bit als auch 64bit Systemen einwandfrei arbeitet.

Tags: ,

No Comments