# [Java3D] komplexes Projekt?



## 1011337101 (28. Dez 2010)

Ich habe mal den Anfang Killer Game Programming gelesen, und würde gerne ein Projekt mit Java3D anfangen. 
Ich stelle meine Frage mal in einem Java-Forum, weil hier nciht alle von vornerein Java hassen, und glauben, das man ein schlechter Mensch ist, weil man nciht in C++ codet...

Wie auch immer, meine Frage: Kann man in Java komplexe 3D Spiele à la GTA 4 umsetzten, oder stößt man da an Performancegrenzen? Es gibt viele Leute, die sagen, Java sei viel zu langsam für jegliche Art von Spielen, deshalb würde ich gerne die Objektive Meinung dieser großen Java-Community hören. Kann ich einen Ego-Shooter in Java realisieren (von der Performance her), oder sollte ich lieber auf XNA oder gleich C++ für den Client umsteigen?

Mit freundlichen Grüßen, E.H.


----------



## Marco13 (29. Dez 2010)

Reicht Bytonic Software als Antwort? (EDIT: Ob Java3D darfür sooo gut geeignet ist, ist aber schwieriger zu beantworten - Jake ist im prinzip mit OpenGL (bzw. einer Java-Anbindung dafür) geschrieben)


----------



## Landei (29. Dez 2010)

Java ist für die Spiele-Entwicklung geeignet, auch wenn um schnelle Action geht (z.B. Grappling Hook ). Java3D ist dagegen für die Spieleentwicklung weniger geeignet, weil es sehr allgemein gehalten ist (schließlich soll man damit auch Simulationen von Produktinslinien oder Renderer für CT-Scan-Modelle schreiben können), und viele "spieltypische" Features (Partikelsystem, Nebel, Gelände, Octrees...) fehlen (*). Ich würde dir empfehlen, lieber gleich Java 3D-Spiel-Engines (wie JME, Ardor3D,...) oder Java-Wrapper um existierende C++-Engines (wie jIrrlicht), zu benutzen.


(*) Korrigiert mich wenn ich falsch liege, ist schon eine Weile her, dass ich damit rumgespielt habe.


----------



## Runtime (29. Dez 2010)

@Landei
Ein Partikelsystem und Nebel ist schon dabei.

@1011337101
Ich weiss nicht, ob Java3D schnell genug wäre, aber ich weiss, dass Java3D schnell mal einen Heapoverflow bekommt. Ich würde dir eher JMonkeyEngine empfehlen.


----------



## 1011337101 (29. Dez 2010)

Okay, also soweit ich das verstanden habe, kann man Java für Spiele benutzen, aber statt Java3D lieber eine Engine.
Die beiden Spiele dahen echt gut aus.

Ich werd mir mal die Java Engines anschauen, die ihr genannt habt.

Danke an alle die so schnell geantwortet haben 

LG


----------



## 1011337101 (30. Dez 2010)

Vielleicht könnt ihr mir eine Engine empfehlen? Ich suche keine, wo man nur reinscriptet und wo wenn man das spiel startet so ein Fenster kommt, wo man die Auflösung, Vollbild/Fenster, Farbtiefe etc. wählen kann. Ich möchte nur eine Lib, die man importiert, und wo man dann alle Funktionen in seinem eigenen Programm nutzen kann.

Gibt es soetwas überhaupt?  Hoffe ihr könnt mir helfen, ihr kennt euch damit wohl besser aus.
Hab mal GHook gespielt (jmonkey), aber da war auch son dummes Fenster am Anfang, kann sein das das von der Engine kommt...
Sone koplette IDE brauch ich auch nicht unbedingt.

LG, 1011337101


----------



## tuxedo (30. Dez 2010)

Mit JMonkeyEngine bist du schon richtig. Alternativ kannst du dir auch jPCT java 3d engine bilinear filtering texture bump mapping gouraud demo download free jpct api animation skeletal anschauen. 

Beides sind Engines die dir freie Hand bei der Entwicklung lassen. 

- Alex


----------



## 1011337101 (31. Dez 2010)

Ok, danke für dien Antwort.

Ich guck mir die beide mal an...

Grappling Hook sieht auf den ersten Blick schonmal besser aus als der jPCT Trailer


----------



## EgonOlsen (2. Jan 2011)

1011337101 hat gesagt.:


> Grappling Hook sieht auf den ersten Blick schonmal besser aus als der jPCT Trailer


Naja, wenn man auf bunte Klötze steht...


----------



## 1011337101 (4. Jan 2011)

^^ also ich finds von der quallität her echt gut 


Hab nochmal ne Frage, die google mir nicht beantworten will:

Parst jmonkey irgendwie Scripts und wenn ja, welche Sprache? Oder soll ich einfach selbst JavaScript Sripte interpretieren?


----------



## slawaweis (4. Jan 2011)

1011337101 hat gesagt.:


> Wie auch immer, meine Frage: Kann man in Java komplexe 3D Spiele à la GTA 4 umsetzten, oder stößt man da an Performancegrenzen? Es gibt viele Leute, die sagen, Java sei viel zu langsam für jegliche Art von Spielen, deshalb würde ich gerne die Objektive Meinung dieser großen Java-Community hören. Kann ich einen Ego-Shooter in Java realisieren (von der Performance her), oder sollte ich lieber auf XNA oder gleich C++ für den Client umsteigen?


ich muss hier anmerken, dass die Entwicklung von GTA 4 100 Mio. Dollar verschlang, sowie 150 Entwickler und um die 1000 Personen allgemein daran gearbeitet haben (Quelle: Wikipedia). Die Programmiersprache ist für ein 3D-Spiel relativ. Es gibt auch in C++ nur wenige gute vorzeigbare 3D-Spiele, die von Hobbyprogrammierern von grund auf entwickelt wurden. Das meiste was man kennt sind Mods zu bereits vorhandenen Spielen.

So sollte man sich nicht stur in eine Sprache oder ein Framework verbeißen. Auch mit Java können gute 3D-Spiele gemacht werden, wenn man die richtigen Leute hat, die sich damit gut auskennen. Trotzdem wird die Programmierung in einem echten Spieleprojekt nur 10% bis 15% der Arbeit ausmachen, egal welche Programmiersprache man nimmt. Weiterhin gibt es verschiedene Ansätze für 3D in Java, z.B. Java3D, Layer zu OpenGL oder eine eigene Software-Engine. So sollte man sich nicht nach einem Framework richten, sondern versuchen es abstrakter zu gestalten, um später umsteigen zu können.

Was noch geht und auch in einigen kommerziellen Spielen verwendet wurde ist, die Grafik-Engine in C++ zu schreiben, aber die Logik und das Scripten in Java. So nutzt man das beste aus beiden Welten. Es ist sowieso nichts falsches daran C oder C++ zu kennen, auch wenn man Java gut beherrscht.

Slawa


----------

