3D Games und Animationen ohne Installation

javaDeveloper2011

Erfahrenes Mitglied
Hallo Leute,

ich möchte Spiele und Graphiken in 3D mit Java entwickeln.
Dabei ist es egal was bei mir installiert sein muss, aber der Anwender / Spieler soll unbedingt nur mein Programm + mit-lieferbare Librarys (JAR's) brauchen!
JWS, Applets oder etwas anderes mit Server scheiden aus.
Auch das JMF, FMJ oder irgendetwas anderes außer einem normalen JRE dürfen nicht benötigt werden!

Bei JOGL z.B. gibt es da das ewige Problem den DLL's die in den Library-Path müssen aber nicht so recht wollen, in eclipse funktionierts zwar, aber kein Export ohne ClassNotFoundExceptions! Und wenns schon auf meinem Rechner nicht funktioniert, wie soll ich dann jemals eine User-freundliche / Plattformunaphängige Installation hin bekommen?

Ob OpenGL oder etwas anderes ist egal.

Gibts da hoffntlich irgendeine halbwegs machbare Lösung?
javaDeveloper2011
 
Ähm .. das ist aber ein bisschen krass. Aber als Beispiel empfehl ich dir mal Minecraft. Die schaffen es auch mit JOGL ... und alles als sehr kleines "Setup" in dem nur eine Art Patcher installiert wird der alle Daten herunterläd und danach auch sofort nutzbar einbindet. Also MUSS es möglich sein. Warum es bei dir bei Exports immer in CNFE endet weis ich leider auch nicht. Aber vielleicht würde es dir hier mal helfen dich mal von Eclipse zu lösen und mal dierekt auf Console zu versuchen ein lauffähiges Beispiel zusammen zu bauen. Das kannst du dann in ANT umsetzen und das von Eclipse verarbeiten lassen. Somit sollten zumindest diese Fehler behoben sein.
 
Hallo SPiKEe,

Ähm .. das ist aber ein bisschen krass.
Warum, es will doch schließlich Niemand seine Benutzer noch zu irgendwelchen extra Installationen zwingen.
Ich hab mich jetzt schon den halben Tag mit diesem Thread beschäftigt, vielleicht bringt er ja jemanden anders auf ne Lösung oder hilft mein Problem zu verstehen.

Gruß
 
Noch was:
Sowas hier hab ich auch schon probiert:
Java:
System.setProperty("java.library.path", "gluegen-rt.dll jogl_desktop.dll jogl_es1.dll jogl_es2.dll nativewindow_awt.dll nativewindow_win32.dll newt.dll");
oder auch:
Java:
System.loadLibrary("gluegen-rt");
...
Fehlermeldungen gabs keine, aber der Export ging trotzdem schief.

Dieses Batch-File:
Code:
java -Djava.library.path=..\..\lib\lwjgl-2.4.2\native\windows -cp ..\..\lib\lwjgl-2.4.2\jar\lwjgl.jar;..\..\lib\lwjgl-2.4.2\jar\lwjgl_util.jar;..\..\lib\jpct\jpct.jar;car.jar -Xmx128m CarTest width=640 height=480 refresh=0 mipmap
startet erfolgreich ein Java3D-Beispiel und soweit ich erkennen konnte völlig ohne Installation!
Nur weiss ich nicht recht wie ich dass nun für meine Zwecke adaptieren soll?
(Fürs erste will ich das in diesem Video beschriebene Beispiel nachmachen und exportieren)

javaDeveloper2011
 
Naja ... das deine erste Zeile da nich hinhaut kann ich dir verraten warum : weil ein LEERZIECHEN kein Trenner ist. Auf Windows müsstest du ein Semikolon ; als Trenner nehmen, unter Unix einen Doppelpunkt :.
Gleiches wendet man auch auf die CP-Angabe an. Ein wunder das Java überhaupt aus mehreren CP-Parametern sich selbst was zusammensetzt.
 
Also LWJGL bringt alle benötigten nativen Bibliotheken mit und entpackt diese dann automatisch. Wie genau das funktioniert, kann ich dir leider nicht sagen.

Je nachdem wie aufwändig dein Spiel sein soll würde ich mir mal jMonkeyEngine ansehen: http://jmonkeyengine.org/
Diese basiert auf LWJGL und JBullet (Physics), Version 3 ist zurzeit in Entwicklung und bringt einige interessante Features mit, eine kleine Auswahl: http://jmonkeyengine.com/engine/
 
Hallo genodeftest,

den JMonkey-Engine hab ich schon, trotzdem danke für den Tipp.
Jetzt hab ich einfach ein kleines Beispiel geschrieben (ohne JOGL) und folgend JAR's in den Class-Path gelegt: 3dcode, 3dutils, vecmath.
Und, JUHU! das mit NetBeans gebaute JAR funktioniert! Jetzt hab ich auch noch alle JAR's und DLL's die irgendwie mit 3d hießen aus dem Java-Installations-Verzeichnis geholt und alles funktioniert weiterhin, heißt das nun dass jeder mit normalem JRE ohne Java3D mein Programm ausführen kann?

Wenn jemand noch nen altes JRE / JDK hat oder sonst ohne Java3D unterwegs ist, wäre es nett wenn derjenige mal versucht mein Programm auszuführen.
(im Anhang)

Gruß javaDeveloper2011
 

Anhänge

  • dist.zip
    1,8 MB · Aufrufe: 18
Hi,

sitz gerade an meinem Mac und hab's ausgeführt...läuft!

Mac OSX 10.6.7
java full version "1.6.0_22-b04-307"


Gruß,
OneOf6
 

Anhänge

  • 3djava.jpg
    3djava.jpg
    15,6 KB · Aufrufe: 188
Bei mir klappt's jetzt so nicht, kann allerdings theoretisch auch an der Grafikkarte liegen:

Code:
01.07.2011 17:02:24 javax.media.j3d.NativePipeline getSupportedOglVendor
SCHWERWIEGEND: java.lang.UnsatisfiedLinkError: no j3dcore-ogl-chk in java.librar
y.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-d3d in jav
a.library.path
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.loadLibrary0(Unknown Source)
        at java.lang.System.loadLibrary(Unknown Source)
        at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:189)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:180)
        at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:137)

        at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:948)
        at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:280)
        at animation.MyUniverseContent.main(MyUniverseContent.java:15)

Windows XP SP3 32bit
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
 
Oracle JDK 6.24,
Ubuntu 11.04 Desktop 64Bit mit aktuellster Version von Mesa,
Gnome3
Grafikkarte: iGPU der ersten Generation Core i5

Absturz:
Code:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681)
	at java.lang.Runtime.loadLibrary0(Runtime.java:840)
	at java.lang.System.loadLibrary(System.java:1047)
	at javax.media.j3d.NativePipeline$1.run(NativePipeline.java:189)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.media.j3d.NativePipeline.loadLibrary(NativePipeline.java:180)
	at javax.media.j3d.NativePipeline.loadLibraries(NativePipeline.java:137)
	at javax.media.j3d.MasterControl.loadLibraries(MasterControl.java:948)
	at javax.media.j3d.VirtualUniverse.<clinit>(VirtualUniverse.java:280)
	at animation.MyUniverseContent.main(MyUniverseContent.java:15)
 
Zuletzt bearbeitet:
Zurück