# Waterslide mit Java3D



## Waterslide (21. Aug 2010)

Hallo Community,

ich mag das Spiel "Extreme Tux Racer" und ich mag das Spiel "Waterslide Extreme" auf meinem iPod touch. Nun habe ich mir einfach mal so gedacht: wie wär's mit einem Spiel, das beides kombiniert? Tux rast die Wasserrutsche entlang! Dies kann ich wunderbar mit einer kleinen Einarbeitung in die 3D-Materie kombinieren.
Damit Ihr mich ein bisschen einschätzen könnt: 3 Jahre Java Erfahrung u.a. in OOP, Netzwerk, Java2D, Swing, JDBC. Damit will ich sagen, dass ich schon etwas machen kann in Java ;-) 

Nun denn, aber von Java3D habe ich absolut keine Ahnung und ich habe auch keine Ahnung, wie ich das mit der Rutsche & Co. hinbekommen soll (kann ich mir im Moment schlecht vorstellen ... aber erst einmal der Reihe nach).

Also, ich habe mich mal ein bisschen im Internet bezüglich Java3D umgesehen. Also es gibt da so Sachen wie LWJGL, JOGL oder jMonkeyEngine zur Realisierung von 3D Applikationen. Wobei ich glaube, dass die jMonkeyEngine nicht nur diese OpenGL-Funktionaliäten bereit stellt, sondern auch noch eine reichhaltige API zur Entwicklung aller möglichen 3D Sachen. Dann habe ich mir mal ein Paar Beispiele der jMonkeyEngine angesehen (jedoch relativ wenig verstanden ...).

Zunächst lässt sich meine Unkentniss auf zwei Fragen zusammenfassen:
1.) Wie finde ich ein geeignetes und kleines (ich habe es immer sehr gerne, wenn die Dateigröße sehr, sehr gering bleibt) Framework, mit dem ich mein Vorhaben realisieren kann?
2.) Ich brauche doch kein großartiges Modell, oder? Denn meine Figur bewegt sich ja immer in dieser Art "Tunnel" und sammel Objekte bzw. wird von diesen verlangsamt?

Was ich will, ist ein Anstoß, so dass ich in die Materie komme.
Ich hoffe, Ihr könnt mir helfen!
Gruß,
Waterslide


----------



## Friedhelm (21. Aug 2010)

Es kommt darauf an ob Du umfangreich Java programmieren und Dir so das Spiel bauen willst (Home | jMonkeyEngine), oder ob Du nur ein Spiel bauen willst (Download ShiVa3D Suite, Authoring Tool and Players)

Wenn Du alles selber mit Java machen willst: 

Jogl (Von Sun unterstützt) - https://jogl.dev.java.net/
LWJGL (Neue Entwicklung die Jogl vereinfacht) - lwjgl.org - Home of the Lightweight Java Game Library

Ich denke das mit dem Wasser ist schon ziemlich tricky. Dazu musst Du wahrscheinlich Partikel / 2D Physics verwenden.

- Also wenn ich nur Spiele produzieren würde wollen, Kohle einstreichen bei Iphone und Android, dann würde ich Unity nehmen.
- Wenn ich Hobby mäßig meine Java Kenntnisse erweitern würde wollen, dabei ein kleines Game coden, dann würde ich Jogl nehmen (LWJGL ist zu weit weg von Android).
- Wenn ich an Java und an Games programmieren Spaß haben würde wollen, dann würde ich JME nehmen.


----------



## Waterslide (22. Aug 2010)

Zunächst einmal Danke für Deine Antwort.

In einigen Teilen habe ich mich wohl falsch ausgedrückt ...
1.) Ich will keine App für das iPhone, Android oder sonstige mobile Platformen schreiben, sondern nur für Mac, Windows, Linux. Also ein ganz normales Spiel!
2.) Genau wie Extreme Tux Racer soll es ein OpenSource spiel werden ... also nix mit Kohle!

Gruß,
Waterslide


----------



## Friedhelm (22. Aug 2010)

Ich habe nur alle Möglichkeiten aufgelistet


----------



## Waterslide (23. Aug 2010)

Nun, angenommen ich entscheide mich für Jogl. 
*Wie gehe ich es jetzt an?* Ich meine, wie bekomme ich nun die Umgebung & Co. hin?

Gruß,
Max


----------



## Waterslide (23. Aug 2010)

... oder um keinen zu verwirren 

Gruß,
Waterslide

P.S.: Ihr könnt mich aber auch Max nennen ;-), denn das ist mein Home-name (auffindbar unter System.getProperty("user.name"))!


----------



## sbadbbado (23. Aug 2010)

> Wie gehe ich es jetzt an? Ich meine, wie bekomme ich nun die Umgebung & Co. hin?



Na , du hast schon 3 Jahre auf den Buckel , wie bist du denn zuvor an Projekte ran gegangen?
Nehme mal Stark an, das du dich erst in das Thema eingelesen hast ?
Es gibt genug Tutorials für dieses Thema, wenn dann muss man sich auch die Zeit dafür nehmen.

Den rest wirst du ja kennen.
Diagramme und Co.


----------



## Waterslide (23. Aug 2010)

Ich habe noch eine Frage: was meint Ihr, könnte man das auch in 2D realisieren?

Gruß,
Waterslide


----------



## Guest2 (23. Aug 2010)

Moin,

erstmal allgemein:

jogl und lwjgl sind beides bindings zur OpenGL API. Keines davon wird zurzeit von SUN oder Oracle unterstützt. Und keines davon ist einfacher als das andere. Lediglich der Ansatz zum öffnen einer OpenGL fähigen Zeichenfläche und das Ansprechen der OpenGL Funktionen unterscheidet sich. 

lwjgl bietet zusätzliche Funktionen um auf andere "Dinge", die häufig in Spielen benötigt werden, zuzugreifen, z.B. Gamepads, Lenkräder oder Joysticks. Außerdem ist ein Zugriff auf OpenAL möglich (aber da gibt es bessere Alternativen).

Java3D und jME verfolgen einen vollkommen anderen Ansatz. Beide basieren auf den Aufbau eines Szenengraphen, also der Beschreibung der darzustellenden Szene anhand eines Graphen. jogl und lwjgl transferieren hingegen Dreiecke zur Grafikkarte, wo die herkommen und was die darstellen ist hingegen Sache des Entwicklers.

Im Allgemeinen ist OpenGL auch sehr eigen, so das selbst ein OOP Gott persönlich keine sinnvolle Architektur für eine OpenGL Anwendung entwickeln kann, wenn er nicht auch OpenGL bis ins Detail beherrscht. Imho ist der einzige sinnvolle Tipp für einen OpenGL Anfänger: Einfach mal ein paar Dreiecke darstellen - und sich anschließend treiben lassen. Fähigkeiten und Codequalität wachsen dann mit jedem selbst geschriebenen OpenGL Programm.

Und konkret zum Anliegen von Waterslide:

Weist Du was ein Vector ist? Was eine Matrix ist? Wie man diese addiert und multipliziert?

Wenn ja, dann mach es in 3D, z.B. mit jogl. 

Wenn nein, dann ist es vermutlich sinnvoller wenn Du mit dem Tutorial von Quaxli einsteigst (Da ist dann aber auch kein OpenGL und auch kein 3D drinne).

Gruß,
Fancy


----------



## Waterslide (23. Aug 2010)

Also, das Tutorial habe ich bereits gelesen und ich habe auch schon zwei 2D-Spiele geschrieben. Und da habe ich mir gedacht, ob man das nicht in 2D realisieren kann. Denn ich habe ein Spiel gesehen, in dem es darum ging durch Röhren zu navigieren und das ist ja ähnlich (leider habe ich den Link verlegt ...) von meiner Idee.

Gruß,
Waterslide


----------



## Friedhelm (23. Aug 2010)

Also wenn Du eine Herausforderung suchst... und was Neues anfangen willst, dann empfehle ich Dir LWJGL (das ist einfacher zu handhaben als JOGL, und soweit ich weiss ziemlich aktuell - V2.5).

Wenn Du in Deinem bisherigen Wissensfeld 2D bleibst, gewinnst Du nichts dazu. Wenn Du aber jetzt in 3D einsteigst, kann es Dir später für andere Projekte nutzen 

Und ehrlich gesagt ist OpenGL nicht schwer zu verstehen. Man wird zwar kein OpenGL-Gott der das letzte aus der Grafikkarte rausholt, muss man aber auch ehrlich gesagt nicht um gute Sachen zu machen.


----------



## Rockstady (25. Aug 2010)

Waterslide hat gesagt.:


> Also, das Tutorial habe ich bereits gelesen und ich habe auch schon zwei 2D-Spiele geschrieben. Und da habe ich mir gedacht, ob man das nicht in 2D realisieren kann. Denn ich habe ein Spiel gesehen, in dem es darum ging durch Röhren zu navigieren und das ist ja ähnlich (leider habe ich den Link verlegt ...) von meiner Idee.
> 
> Gruß,
> Waterslide



Klar kannst du es 2D machen. Wäre dann aus der Vogelperspektive möglich, wie eine Art "Rennspiel".

____________________
|.......................o......|
|...X..........................|
|__________o________|

X = deine Figur
. = sind nur Platzhalter, da Leerzeichen ignoriert werden

Der Rest sind dann die Boni / Mali, die von rechts nach links laufen. Kannst du dann auch als Sidescroller laufen lassen, dass man die Figur selbst nur nach oben / unten bewegen kann und sich der Hintergrund von rechts nach links mit unterschiedlicher Geschwindigkeit bewegt. Mit Zufallsspawn, einer kleinen Highscore, "netten" Grafiken wird daraus sicherlich ein kleiner Zeitvertreib.


----------

