# Java als Programmiersprache für kommerzielle Spieleentwicklung?



## Miikku (10. Nov 2011)

Hi!

Ich möchte mich demnächst an ein größeres Projekt wagen: Ein kommerzielles 3D-Spiel. Noch am Anfang der Planung stehend überlege ich im Moment, welche Programmiersprache wohl die geeignetste wäre. Und hier kommt Ihr und Java ins Spiel: Haltet Ihr Java für eine geeignete Programmiersprache, um damit kommerzielle Computerspiele zu fabrizieren? Ich meine hauptsächlich als Alternative zu C++ bzw. C#.

Also einige Vor- und Nachteile habe ich hier schon zusammengetragen, bin mir aber bei der Gewichtung der einzelnen Punkte und ob ich vielleicht noch Wichtiges übersehen hab, nicht sicher:
_Vorteile:_
 - OOP und geiles handling, Java ist einfach meine Lieblingsprogrammiersprache
 - Garbage Collector
 - Plattformunabhängigkeit
 - * Speed
_Nachteile:_
 - ** Decompilierbar
 - *** Der Spieler muss den Java-Interpreter installieren/installiert haben
_Sternchen-Bedeutungen:_
*) Dass Java eigentlich voll speedy ist, weiß ich ja, aber kann es auch im Bereich Grafik, Sound und  - Spieleprogrammierung halt - bei C++ & co. mithalten?
**) Kann man Java immer decompilieren? Ich hab da überhaupt keine Erfahrungen mit. Sind die Klassen und Variablennamen eigentlich im Bytecode enthalten? Gibt es eine Möglichkeit das zu unterdrücken?
***) Kann man den Java-Interpreter nicht eigentlich durch einen in C++ oder einer anderen kompilierten Programmiersprache gemachten Installer mitinstallieren? Auf diese Weise müsste man den Kunden nur darüber informieren bzw. bestätigen lassen, dass sein Java-Stand nun geupdated wird. Wär doch machbar, oder?

_Und dann noch ein paar Punkte, in denen ich mich als totaler noob outen muss:_
 - Wie funktioniert das Zusammenspiel von Java, Grafikengines (ich meine jetzt DirectX und OpenGL) und Betriebssystemen? Kann Java, wenn es unter Windows ausgeführt wird, das dort installierte DirectX, und wenn es unter Linux ausgeführt wird das wiederum dort installierte OpenGL nutzen über eine gemeinsame Schnittstelle bzw. Bibliothek?
 - Unter C++ ist es ja mit vielen Compilern möglich, so kleine Assembler-Snippets einzubauen. Gerade in der performancelastigen Spieleprogrammierung ist das unter C++ ja ein wirklich wichtiges Werkzeug. Dass unter Java etwas derartiges allein schon der Plattformunabhängigkeit wegen nicht möglich ist, ist mir schon klar nur würde ich gerne eure Meinung dazu wissen; haltet ihr das für sehr relevant oder gibt es in Java stattdessen andere Optimierungs-Wege?
 - In Anlehnung an den überliegenden Punkt: Laut Wikipedia werden oft geräteabhängige Schnittstellengeschwindigkeits-Optimierungen in Assembler geschrieben. Kann ich auch unter Java geräteabhängigen Assemblercode einfügen?

Wow jetzt bin ich selber überrollt, wie viele Fragen ich wohl hatte... Aber gut, dass ich sie jetzt einmal aufgeschrieben hab, ich fühl mich gleich viel klarer im Kopf :bloed:

Achso, wenn jemand Bock hat mitzumachen, mein Skypename ist miikku857 noch sind wir zu dritt (10.11.2011) und entschlossen reich zu werden 

Ich freu mich schon auf konstruktive Antworten 

MfG, Miikku

PS: Versucht ja nicht es mir auszureden, ich bin entschlossen wie ein BERSERKER :toll: und werde mir alles nötige und noch nicht vorhandene Wissen aneignen


----------



## Kr0e (10. Nov 2011)

Hast ja schon viel genannt... Speedmäßig tut sich da nicht viel ... Ich persönlich denke, dass Java sehr gut geeignet ist aber bei weitem nicht am Besten. C++ oder auch C# haben einfach ein größeres Ökosystem für Spiele... DirectX und zahlreiche Bibliotheken. Sprich ich würde mal frehc behaupten, dass das was mit Java geht, teils einfacher mit C + DirectX-Libs realisierbar ist, nicht weil C/C++/C# cooler ist, sondern einfach weil es C viel länger gibt und man mit C# ebenfalls darauf Zugriff hat...

ABER: Das heißt ALLES nichts... Beispiel Minecraft: Der Kerl hat ohne Zusatzgrafiklibs wie jME3 das Spiel gemacht, ok hin und wieder fällt genau das auch auf  Aber hey, es klappt schon. Was man braucht ist nicht das Vorhaben ein Spiel zu machen sondern eine exzellente Idee! das ist alles, und außerdem wählt ein Informatiker die Sprache aus, jenachdem welches Problem herscht...

Also wenn du ne gute Idee hast und dir Java liegt, dann mqachs in Java, nichts spricht dagegen!


Gruß,

Chris


----------



## Evil-Devil (10. Nov 2011)

Minecraft nutzt direkt OpenGL über LWJGL. jME3 ist lediglich eine Engine die sowohl JOGL als auch LWJGL unterstützt.n  Oder mittlerweile nur onch eines von beiden?

Der Vorteil von C/C++/C# wurde ja schon genannt. Die Bandbreite an Libs und Toolchains ist dort sehr viel größer, weil eben die Industrie ihre Games damit herstellt.


----------



## Landei (11. Nov 2011)

Was mit Java (und JME) geht, zeigt z.B. Grappling Hook (wobei die Grafik da bewusst schlicht gehalten wurde). Ich habe selber mal ein 3D-Lernspiel mit JME geschrieben, und die Geschwindigkeit war kein Problem.


----------

