Java für Spiele?

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
zwergmulch
Beiträge: 91
Registriert: 07.12.2009, 16:42
Echter Name: Fabian R

Java für Spiele?

Beitrag von zwergmulch »

Hallo, in Anlehnung an den Thread "The old good question" im Forum Grafikprogrammierung
will ich euch hier nun die Frage stellen, ob Java für die Spieleprogrammierung eine Berechtigung hat.

Da gäbe es (meiner meinung nach) folgende Kriterien:
1. Geschwindigkeit
2. Bibliotheken und Komfort
3. Features
4. Was euch sonst noch so einfällt :) [/i]

Was ich mit den einzelnen Punkten meine/Was ich dazu denke
1. Die Java-VM's sind eigentlich schnell genug geworden und
durch Lib's wie JOGL hat Java auch Zugriff auf Hardware-Beschleunigung für Grafik. Kein Argument für Java, aber auch nicht dagegen.
2. Klarer Punkt für Java, es hat imho die umfangreichste API und Komfort ist durch Garbage Collection etc. auch sehr groß.
3. Features könnten Kleinigkeiten sein, die einem aber im Gesamtpaket das Leben erleichtern. Z. b. Swing-GUI-Styles.
4. Was soll ich dazu schreiben? :roll:

Was meint ihr dazu?

EDIT: Bitte kein Flamewar a la "Welche Programmiersprache ist die bessere?" sondern ob Java
als Programmiersprache für Spiele eine Berechtigung hat! ;)
Zuletzt geändert von zwergmulch am 03.03.2010, 09:10, insgesamt 1-mal geändert.
Bild
Seraph
Site Admin
Beiträge: 1182
Registriert: 18.04.2002, 21:53

Re: Java für Spiele?

Beitrag von Seraph »

Imho hast Du die Frage falsch formuliert oder ich bin zu tolerant was das betrifft. ;) Warum sollte Java oder auch diverse andere Sprachen/Plattformen keine Berechtigung fuer die Spieleprogrammierung haben? Solange es moeglich ist, ist es auch berechtigt. Anders sieht es bei der Frage aus, ob ich es fuer sinnvoll halte. :D

Persoenlich wuerde ich es zumindest nicht nutzen. Warum nicht?

Ich kenne zugegebenermassen das aktuelle Java und seinen Umfang nicht, aber ich praeferiere .net, welches mittlerweile einen immensen Umfang und Funktionalitaet bietet und dank XNA die Spieleentwicklung sehr vereinfacht. .net ist auch mittlerweile auf so ziemlich jedem Windows-Rechner installiert, bei Java vermute ich einen Abwaertstrend (koennte mich da natuerlich irren).


Mein Fazit: Wenn Dir Java gefaellt, dann leg los, entwickle Spiele dafuer, nur werde ich es wohl niemals spielen koennen, da ich bei mir kein Java installieren werde, sofern ich es nicht fuer die Arbeit benoetige. :)
Benutzeravatar
Brainsmith
Establishment
Beiträge: 109
Registriert: 04.09.2009, 13:52
Echter Name: Fabbo

Re: Java für Spiele?

Beitrag von Brainsmith »

Java wird häufig benutzt, um große Portabilität zu gewährleisten( Handys etc.)
Den markantesten Nachteil (meiner Meinung nach) ist, dass Java keine Pointer hat, sondern nur referenzen nutzt. Das erfordert eine große Umstellung.
Viele, vor allem Web-basierte Spiele, werden mit Java geschrieben ( oder Flash).
Java wird auch von professionellen Spieleentwicklern benutzt, weshalb du die Frage mit der Berechtigung getrost mit ja beantworten kannst.

Was bei Java vielleicht zum Problem wird, ist, dass es nicht den Support für Spieleentwicklung gibt, wie beispielsweise für C++.
Gib mal "C++ 3D Engine" bei Google ein und "Java 3D Engine" ... wenn ich mich nicht täusche, wirst du da bei C++ wesentlich mehr sinnvolle Links finden.

Probier es doch einfach mal aus.


Ps: Ja, die Swing-Bibliotheken sind klasse, aber auch nichts anderes als beim Visual Studio das .NET-Framework.
Und ich gehe mal davon aus, dass du kein Spiel im Rahmen der Swing-Bibliothek erstellen willst.. ^^ Dann fehlt irgendwie... Grafik.
Virus
Beiträge: 38
Registriert: 20.09.2002, 17:28
Kontaktdaten:

Re: Java für Spiele?

Beitrag von Virus »

Brainsmith hat geschrieben:Den markantesten Nachteil (meiner Meinung nach) ist, dass Java keine Pointer hat, sondern nur referenzen nutzt.
Was soll daran ein Nachteil sein? Referenzen funktionieren in Java ja etwas anders als in C++.

Ansonsten: Für Hobby Projekte kann man sicher auch mit Java ne Menge anfangen. Was allerdings IMO wichtig ist, viele Informationen dazu finden zu können. Ohne selber recherchiert zu haben denke ich, das man wesentlcih mehr Informationen zu C# + XNA als Java * OGL finden wird.
Aber sobald man die API "im Griff" hat, ist das eigentlich auch nebensächlich...
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Java für Spiele?

Beitrag von Krishty »

Virus hat geschrieben:
Brainsmith hat geschrieben:Den markantesten Nachteil (meiner Meinung nach) ist, dass Java keine Pointer hat, sondern nur referenzen nutzt.
Was soll daran ein Nachteil sein? Referenzen funktionieren in Java ja etwas anders als in C++.
Eben, ein Nachteil ist das nicht. Als Nachteil sehe ich eher, dass Java nur entweder Referenzen oder native Datentypen nutzt … das ist echt zum Haareraufen, adieu Metaprogrammierung ;)

Die Frage ist eigentlich komplett falsch gestellt. Spiele werden heute zum Großteil in Lua und ähnlichen Skriptsprachen geschrieben … wofür man auf C/C++/C#/Java zurückgreift, ist die Engine-Programmierung. Und da spielt die Portabilität auf Konsolen eine Rolle … ich glaube nicht, dass es eine brauchbare Java-VM für XBox 360 und PS3 gibt … für Yamba-Produkte ist man andererseits wieder fein raus. (Portabilität von Java, OpenGL & Co soll in „echten“ Anwendungen sowieso anders aussehen als man es vom Papier her kennt, wird mir immer wieder erzählt. Ohne es überprüft zu haben, lasse ich das mal so stehen.)

Generell lässt sich die Ausgangsfrage also nicht beantworten.

Gruß, Ky
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Java für Spiele?

Beitrag von Chromanoid »

Sobald man etwas umfangreichere Spiele, die man per Web-Start oder in-Browser bzw. in Facebook zugänglich machen möchte, entwicklen will, ist Java eigentlich die Sprache der Wahl. Ggf. kann man noch an Unity3D oder ähnliches denken, aber Java hat da sicherlich eine größere Verbreitung, gerade wenn man nicht-Windows-Systeme mit einbezieht. Die Webstart/in-Browser und Plattformunabhängigkeit sind wirklich ein großer Reiz. Aber ein ganz wesentlicher Vorteil für Java bei Spieleprogrammierung ist meiner Meinung nach der außerordentlich hohe Programmierkomfort (z.B. mit Netbeans oder Eclipse), die flexible Zusammensetzung einzelner Pakete/Bibliotheken und die damit verbundene "Entwicklungs-Dynamik".

Wie ich schon im Weltenmotor-Thread erwähnt habe, haben vor allem die Runescape-Macher Java für Spiele eingesetzt. Wenn man nach mehr Beispielen sucht, wird man vielleicht nicht so viele kommerziell erfolgreiche Titel finden. Dabei sollte man aber nicht vergessen, dass Java eine etablierte Plattform für Businessanwendungen ist. Und das merkt man besonders, wenn man allgemeinere Dinge für Datenhaltung, Ressourcenmanagement, Netzwerkkommunikation usw. sucht. Java strotzt nur so von Frameworks und Bibliotheken.

Ebenfalls vorteilhaft bei Java ist der open Source Geist, der diese Plattform schon lange begleitet. Natürlich gilt das genauso für C/C++/Mono, aber Microsoft .NET mit DirectX lässt da ein bisschen zu wünschen übrig.

Für wirklich alle Programmierer am meisten interessant an Java ist wohl Java zur Serverprogrammierung. Dort kann man die geballte Ladung Java-Bibliotheken und Javas Flexibilität nutzen. Von Updates während der Laufzeit bis ausgeklügelten Frameworks für Skalierbarkeit usw. kann Java sehr viel bieten. Zudem gibt es nun auch noch das Projekt project-darkstar / Sun Gaming Server.

Ich persönlich würde mich wie folgt entscheiden:
Für Server immer Java (natürlich nur wenn es noch nichts fertiges gibt)
Für 2D Spiele Flash
Für extrem aufwändige 2D oder 3D Spiele je nach Zielgruppe Java (Browser) oder XNA (XBox)
Für kleine 3D/2D Spiele im Browser/iPhone lässt sich evt. auch noch Unity3D einsetzen (iphone version kostet was).

Bei XNA darf man nicht vergessen, dass man damit auch auf die XBox 360 bzw. in den XBLIG Channel kommt und so eine interessante Vermarktungsmöglichkeit auch für Hobbyspiele an der Hand hat.

Ich würde (wenn du evt. auch ein bisschen Geld mit deinen Spielen verdienen möchtest) die Technologie anhand des Vertriebskanals auswählen. Problematisch bei Java sind die im Gegensatz zu Flash fehlenden Werbe-APIs. Allerdings kann man mit Flash so nur bei besonderem Erfolg von seinen Spielen wirklich profitieren. Grappling Hook ist wohl das "beste" Beispiel wie man ein Indie Java-Spiel vermarkten kann... Mit Java kann der alleinige Autor Linux, Mac und Windows-Spieler ansprechen und so wahrscheinlich auch zahlungsbereitere Kunden als verwöhnte Windows-Spieler erreichen.

Hier mal die Anmerkungen von Christian Teisler dem Autor von Grappling Hook zu Java bzw. der Java 3D-Engine jmonkeyEngine als "Spieleentwicklungsumgebung" (stammt von: http://jmonkeyengine.com/blog/blog/2009 ... ling-hook/):
Erlend: Let’s continue on with the technicalities Couple standard ones:
Erlend: Did you make use of many other free coding resources (or otherwise) besides jME?

Christian: jME is the third engine I have used for Grappling Hook. Before jME I have worked for around one month with Ogre and two weeks with the Irrlicht Engine. But it was the right decision to switch to jME, finally.

Erlend: Two quick ones:

� Greatest experience with JME
� Worst experience with JME

Christian: It wouldn’t have been impossible to create the game with a c++ engine in that time. jME is a Java engine, and Java is great for game development. The performance is good, I can develop very fast with it, no compilation time, awesome memory profiler, great library… jME is also very intuitive for me, and the community is great.

The worst experience was the physics integration. I have used jmephysics and ODEJava for around three months. First it worked quite well. Adding multi threading was easy. but then i realized, that there are some memory leaks and random crash bugs deep in ODEJava. and no one will ever fix it, because the ODEJava project has been dead for years. So i had to rip out the entire physics out of an already good working game.

how did you resolve it?

Fortunately the decision to use only blocks in an octree for the level design made it really easy to write the physics code from scratch. There are only collisions between axis aligned bounding boxes.
btw: http://jbullet.advel.cz/ ist einen Blick wert wenn man eine Physik-Library für java sucht.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Java für Spiele?

Beitrag von Chromanoid »

Krishty hat geschrieben:adieu Metaprogrammierung ;)
naja dafür hat man in Java Reflection und einfache "Templates" ;) (Generics) sind ja auch möglich (jaja ich weiß ist nicht dasselbe aber auf ähnliche weise einsetzbar).

@zwergmulch: falls du diese seite noch nicht kennst http://www.javagaming.org/ ist sie einen blick wert...
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 583
Registriert: 05.07.2003, 11:17

Re: Java für Spiele?

Beitrag von Lord Delvin »

Chromanoid hat geschrieben:naja dafür hat man in Java Reflection und einfache "Templates" ;) (Generics) sind ja auch möglich (jaja ich weiß ist nicht dasselbe aber auf ähnliche weise einsetzbar).
So nen Vergleich können nur Leute bringen, die Templates nicht verstanden haben, aber egal.

Ich würd Java für codetechnisch (auf deiner Seite) simple opensource Spiele schon verwenden, wenn ich weis, dass ich da nie wieder was anfassen will später oder irgendwelche Funktionen ändern. Sowas wie Tetris, Minesweeper, Frozenbubble, etc..
Gründe pro sind die selben wie für C#. Gegen C# spricht allerdings, dass es schon broken by Design ist. Es ist einfach witzlos für was zu entwickeln, was du nur gut auf Windows PCs zum laufen bekommst - meine Meinung.

Dagegen spricht, dass es imo ein Krampf ist, wenn du in Spielen anfangen musst dir über Hardwarenahe Dinge gedanken zu machen und durch die Grenzen von Java behindert wirst, was dann vielleicht dazu führt, dass du teile in clibs auslagern musst oder son spaß.

Meine Erfahrung mit Java ist eigentlich, dass es ähnlich portabel ist, wie sauberer C++ code. Nicht ganz so wie Javafanatiker sagen, aber meistens funktionierts dann doch einfach so.

Ich finds halt doch erstaunlich, dass die Sprache so alt ist und nichts wirklich bekanntes zustande Gebracht hat auf dem Gebiet, aber vielleicht hab ichs auch nur übersehen.

EDIT: Hab ma in das Javagaming reingeschaut und das scheint meine Theorie zu bestätigen, dass man immer Java nehmen sollte, wenn dir C++ vs. C# C# antwortet;)
Zuletzt geändert von Lord Delvin am 24.01.2010, 17:01, insgesamt 1-mal geändert.
XML/JSON/EMF in schnell: OGSS
Keine Lust mehr auf C++? Versuche Tyr: Get & Get started
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Java für Spiele?

Beitrag von Chromanoid »

Lord Delvin hat geschrieben:Ich würd Java für codetechnisch (auf deiner Seite) simple opensource Spiele schon verwenden, wenn ich weis, dass ich da nie wieder was anfassen will später oder irgendwelche Funktionen ändern.
Das verstehe ich nicht so genau. Das ist doch gerade der Vorteil von Java. Die gute Wart-, Aktualisier- und Erweiterbarkeit durch dynamische Bindung der Klassen und die sehr abwärtzkompatible VM. Wer sowas sagt hat Java nicht verstanden :P.
Lord Delvin hat geschrieben:So nen Vergleich können nur Leute bringen, die Templates nicht verstanden haben, aber egal
Mir ist schon klar, dass da bei C++ viel mehr als nur ein paar Compilertricks hinterstecken und sich Metaprogrammierung gerade in C++ fast zu einer eigenen Kunst entwickelt hat...
Lord Delvin hat geschrieben:Dagegen spricht, dass es imo ein Krampf ist, wenn du in Spielen anfangen musst dir über Hardwarenahe Dinge gedanken zu machen und durch die Grenzen von Java behindert wirst, was dann vielleicht dazu führt, dass du teile in clibs auslagern musst oder son spaß.
In einem Hobby- oder indiespiel-Projekt hat man schon verloren sobald man sich über hardware nahe dinge gedanken machen muss.
Lord Delvin hat geschrieben:Ich finds halt doch erstaunlich, dass die Sprache so alt ist und nichts wirklich bekanntes zustande Gebracht hat auf dem Gebiet, aber vielleicht hab ichs auch nur übersehen.
Ich möchte dabei nochmal "auf dem Gebiet" unterstreichen.
Seraph
Site Admin
Beiträge: 1182
Registriert: 18.04.2002, 21:53

Re: Java für Spiele?

Beitrag von Seraph »

Lord Delvin hat geschrieben:Gegen C# spricht allerdings, dass es schon broken by Design ist. Es ist einfach witzlos für was zu entwickeln, was du nur gut auf Windows PCs zum laufen bekommst - meine Meinung.
Vor einigen Jahren habe ich noch genauso gedacht, mittlerweile bin ich da etwas realistischer geworden. ;)
Hanno
Beiträge: 25
Registriert: 28.02.2009, 14:15

Re: Java für Spiele?

Beitrag von Hanno »

Lord Delvin hat geschrieben:Gegen C# spricht allerdings, dass es schon broken by Design ist. Es ist einfach witzlos für was zu entwickeln, was du nur gut auf Windows PCs zum laufen bekommst - meine Meinung.
Was spricht denn gegen Mono? Mir ist bewusst, dass es nicht den neuesten .NET-Standard implementiert, aber wenn man von vornherein weiß, dass Mono eine Zielplattform ist, dann kann man das ja beachten.

Übrigens ist das eine richtige Frage, keine rhetorische. Ich hab mit Mono (und .NET im Allgemeinen) kaum Erfahrung.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Java für Spiele?

Beitrag von Chromanoid »

Im Grunde spricht gar nichts gegen mono. Allerdings kann man wenn man mit directX arbeiten möchte mehr mit .NET anfangen... Und wenn man openGL benutzen möchte, sollte man meiner Meinung gut überlegen ob man nicht doch lieber Java statt Mono+C# benutzen will. Java ist wahrscheinlich schneller als mono, java ist im gegensatz zu mono weiter verbreitet, hat eine extrem große Community und ist ebenfalls opensource. Ich glaube also dass es nur sinnvoll ist mit mono zu arbeiten, wenn man unbedingt mit c# programmieren möchte. Es läuft übrigens nicht nur Java mit der Java-Plattform/VM: Es gibt da Scala, Groovy, Processing und noch ein paar andere (alle sind sicherlich einen Blick wert)...
Benutzeravatar
Lord Delvin
Establishment
Beiträge: 583
Registriert: 05.07.2003, 11:17

Re: Java für Spiele?

Beitrag von Lord Delvin »

Hanno hat geschrieben:Was spricht denn gegen Mono?
Jedes mal wenn ich versucht hab ne C# Anwendung, die mich interessiet hätte zum laufen zu bekommen ging die weder mit mono noch mit wine, wobei das in wine laufende .NET noch schlechter zu sein scheint als in mono. Und wenn ich mit so Portierungsproblemen schon anfange, dann sehe ich nicht warum ich nicht lieber Java verwenden soll.

Ich denke dass die Unterstützung da ähnlich mies ist wie mit flash, wenn du ein 64bit linux laufen lässt. Is mir letztlich aber auch egal, ich will niemend von irgendwas überzeugen, mich regts nur immer wieder auf, wenn Leute ihren Code nur für Windows entwickeln unnötige Ressourcenverschwendung aber egal.
XML/JSON/EMF in schnell: OGSS
Keine Lust mehr auf C++? Versuche Tyr: Get & Get started
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: Java für Spiele?

Beitrag von dronus »

Also ich würd denk dazu:

* Geschwindigkeit der Codeausführung ist kein Problem. Auf meinem Rechner ist 08/15 Code mit der Sun JVM mittlerweile schneller als GCC -o3.
* Extreme Optimierung kann man vergessen, besondere Prozessorbefehle (SIMD) usw. liegen im Verantwortungsbereich der VM-Programmier, die sicher nicht täglich an Spieleoptimierung feilen :-)
* Ärgerlich ist, das man keine Objektarrays anlegen kann bzw. keine Objekte auf dem Stack liegen. Das kostet unnötiges Heap-Aufräumen.
* Die größten Geschwindigkeitsunterschiede macht eh der Coder aus.
* Java kann weniger, das führt zu besser austauschbarem Code meines erachtens. Man kann einfach nicht so viele "individuelle Stile" entwickeln, weil es keine Templates etc. zum ausreizen gibt (zumindest nicht mit nacktem Java).
* Java ist etwas kindergartenmäßiger als C (keine Pointer usw.) das ist doch sehr angenem, egal wie erfahren man mit Programmieren ist. Es gibt seltener "lustige" Effekte, bei denen man nach Stunden einen großen Aha-Effekt hat. (Versaute Pointer, falscher Cast, nicht-virtuelle Funktionen etc.).
* Platformunabhängigkeit ist tatsächlich erstaunlich gut.

soweit erstmal..
Seraph
Site Admin
Beiträge: 1182
Registriert: 18.04.2002, 21:53

Re: Java für Spiele?

Beitrag von Seraph »

Lord Delvin hat geschrieben:...mich regts nur immer wieder auf, wenn Leute ihren Code nur für Windows entwickeln unnötige Ressourcenverschwendung aber egal.
Warum und warum? :)
zwergmulch
Beiträge: 91
Registriert: 07.12.2009, 16:42
Echter Name: Fabian R

Re: Java für Spiele?

Beitrag von zwergmulch »

@ Virus 24. 1. 2010, 13:28 (Google bzw. Dokumentation):
Dem muss ich wiedersprechen, Java hat doch eine der ausführlichsten Dokumentationen
und mit javadoc kann man auch selbst leicht Docs erzeugen.

Und für Grafik (speziell JOGL oder LWJGL) gibt es auch Beispielcode bei den NeHe-OpenGL-Tutorials.

@ C# oder Java: Ist eine Frage des persönlichen Geschmacks und, ob man lieber für Windows und X-Box
oder Windows, Mac und Linux entwickeln will.
Aber (meiner Meinung nach) empfiehlt sich letzeres weil das Spielen (speziell Input und Spiel-Komplexität)
bei X-Box und Computern schon einen großen Unterschied macht. So hat man dann zwei unterschiedliche Programme
(ist aber immernoch besser als von 0 neu anzufangen, Engine und anderes bleibt ja 8-) ).
Bild
Hanno
Beiträge: 25
Registriert: 28.02.2009, 14:15

Re: Java für Spiele?

Beitrag von Hanno »

Danke für die Antworten.
Chromanoid hat geschrieben:Es gibt da Scala
Interessant, wie ich in letzter Zeit immer wieder auf Scala stoße, wo ich es nicht erwarte. Als ich damit vor ca. 1.5 Jahren angefangen habe kannte das noch kein Schwein :)
Psycho
Establishment
Beiträge: 156
Registriert: 16.09.2002, 14:23

Re: Java für Spiele?

Beitrag von Psycho »

* Geschwindigkeit der Codeausführung ist kein Problem. Auf meinem Rechner ist 08/15 Code mit der Sun JVM mittlerweile schneller als GCC -o3.
Ach komm, auf Benchmarks vielleicht.
In VirtualBox lade ich mit JDownloader und uTorrent, da liegen Welten in den Reaktionszeiten der UI zB.
Kein Plan ob der Code von JDownloader schlecht ist, hab aber das Gefühl ich würd bei einem beliebiges Programm nach ein paar Minuten benutzen sagen können, obs nativer Code ist.
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Java für Spiele?

Beitrag von Chromanoid »

Psycho hat geschrieben:In VirtualBox lade ich mit JDownloader und uTorrent, da liegen Welten in den Reaktionszeiten der UI zB. Kein Plan ob der Code von JDownloader schlecht ist, hab aber das Gefühl ich würd bei einem beliebiges Programm nach ein paar Minuten benutzen sagen können, obs nativer Code ist.
Die Swing UI ist jetzt auch nicht unbedingt die superschnellste. Das liegt an dem mit Performance erkauften Vorteil, dass Swing nicht die System-GUI benutzt und so auf allen Systemen gleich aussehen kann. Würde JDownloader AWT benutzen würdest du wahrscheinlich überhaupt nichts merken... Hast du bei JDownloader mal einen anderen Style probiert? Es könnte sein, dass das etwas verändert... Ich finde zum Beispiel, dass man mit Netbeans hervorragend arbeiten kann obwohl das Ding komplett in Java geschrieben ist... Java macht genauso wie .NET/Mono für Spiele erst in der heutigen Zeit mit guten PCs so richtig Sinn...

Man sollte sich immer fragen, ob hinter dem erträumten Gewinn von Performance durch hardwarenahe Programmierung nicht eigentlich ein realer Verlust an Flexibilität, Produktivität und Überschaubarkeit steckt.
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: Java für Spiele?

Beitrag von dronus »

Psycho hat geschrieben:
* Geschwindigkeit der Codeausführung ist kein Problem. Auf meinem Rechner ist 08/15 Code mit der Sun JVM mittlerweile schneller als GCC -o3.
Ach komm, auf Benchmarks vielleicht.
In VirtualBox lade ich mit JDownloader und uTorrent, da liegen Welten in den Reaktionszeiten der UI zB.
Kein Plan ob der Code von JDownloader schlecht ist, hab aber das Gefühl ich würd bei einem beliebiges Programm nach ein paar Minuten benutzen sagen können, obs nativer Code ist.
Ja, der Code von JDownloader ist superschlecht :-) ich hab ihn nicht gelesen, aber er verwendet das Java UI und selbiges ist overengeneered und wird nicht unbedingt von der Graka beschleunigt. Verschiedene fertige Programe zu vergleichen hat keinen Sinn.
Wer Spiele programmiert wird ja Fremdcode nur da benutzen wo nützlich, und sich sonst selbst optimierten Code schreiben, und das ist mit Java durchaus möglich, mit Ausnahme der fehlenden SIMD- usw. Unterstützung. Und da sind Benchmarks gar nicht so abwegig, den die zeigen ja gerade wie schnell ein algorithmisches Detail ist und aus einem Sack davon baut man sein Spiel dann zusammen.

Also ich würde Windows niemals für nativen Code halten :-)
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: Java für Spiele?

Beitrag von Krishty »

dronus hat geschrieben:aber er verwendet das Java UI und selbiges ist overengeneered und wird nicht unbedingt von der Graka beschleunigt.
Doch wird es … das höre ich daran, wie meine immer hochdreht, sobald ich in das Fenster wechsle. Einmal hat irgendwas gehangen und ich konnte JD nicht schließen, bis der Rechner ausging, weil die GPU überhitzte(!). Trotzdem mit das lahmste Programm, wo gibt auf die Welt.
dronus hat geschrieben:Also ich würde Windows niemals für nativen Code halten :-)
Naja, dieses „VM-Feeling“ gibt es schon, nicht nur bei JDownloader. Jedes Mal, wenn ich vom geliebten Visual Studio auf das durch die Uni erzwungene Eclipse umsteigen muss, kollabiert mir fast mein Rektum. Das kann natürlich von der anderen UI kommen, wie Chromanoid geschrieben hat … was man aber von portablem Code hat, wenn er auf n Plattformen schlecht läuft statt auf nur einer optimal, muss man selbst entscheiden.

Aber genug des Java-Bashings, UI ist bei Spielen ja nicht das Thema :)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: Java für Spiele?

Beitrag von dronus »

Krishty hat geschrieben: Jedes Mal, wenn ich vom geliebten Visual Studio auf das durch die Uni erzwungene Eclipse umsteigen muss, kollabiert mir fast mein Rektum. Das kann natürlich von der anderen UI kommen, wie Chromanoid geschrieben hat …
Eclipse verwendet kein Swing sondern die OS-native UI. Denke es ist wohl in ziemlichen 'Behördenstil' gecodet :-)

Ich würde den Effekt aber nicht VM-Feeling nennen, sondern es hängt viel mehr vom Code ab (also auch von den verwendeten Frameworks). DIe durch die VM vs. C-Compiler entstehenden Geschwindigkeitsvor- und Nachteile sind völlig witzlos im Vergleich zu den Unterschieden zwischen zwei Rechnern und den grotesken Verrenkungen die man in moderner SW so findet. Wenn ich in Windows XP einen Ordner mit 100.000 Dateien ansehe, und ihn nach einer Spalte sortieren will, habe ich genug Zeit um mich zu erinnern dass mir als Kind im Gymnasium von Quicksort erzählt wurde, und wie es funktioniert. Mit einem Prozessor, der Gigabytes in der Sekunde durchpumpen kann. Absolut lächerlich.

Ein Beispiel für VM-Nachteil: Es gibt einen Java-Port von Quake 2. Dort hat man je nach Rechner einen FPS-Verlust zwischen Null und einen Viertel gegenüber dem Original. (ok, ist eg egal da Quake 2 heutzutage 250fps hat)...

,..das schlimmste an Java ist, dass Swing mitgeliefert ist, und Leute es zu benutzen können, wenn sie wollen, und damit hätte Sun rechnen müssen, dass sie es wollen...
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Java für Spiele?

Beitrag von Chromanoid »

Naja Swing ist ja jetzt auch nicht nur schlecht ^^. Mittlerweile wird das ganze ja auch recht gut durch hardware beschleunigt. Allerdings muss man sich mit Swing ziemlich gut auskennen damit man die hardware-Beschleunigung auch bekommt. Und das ist dann auch die Crux des ganzen, da Swing da sehr unspezifiziert ist... http://www.jhlabs.com/ip/managed_images.html gibt da einen kleinen Einblick was java2D angeht :).

Ich persönlich kann nur empfehlen gerade Utilities und Editoren mit Java zu basteln. Gerade die netbeans-Plattform kann da recht hilfreich sein (Eclipse habe ich mir da noch nicht angeschaut, aber netbeans ist bestimmt sowieso cooler ^^): http://platform.netbeans.org/tutorials/ ... -apis.html
Hier mal ein paar Sachen die damit gemacht wurden: http://platform.netbeans.org/screenshots.html (unter anderem auch 3D Zeug für Boeing). Kann mir gut vorstellen, dass die netbeans-Plattform für fette Spieleprojekte durchaus Sinn macht...
Psycho
Establishment
Beiträge: 156
Registriert: 16.09.2002, 14:23

Re: Java für Spiele?

Beitrag von Psycho »

Chromanoid hat geschrieben:Man sollte sich immer fragen, ob hinter dem erträumten Gewinn von Performance durch hardwarenahe Programmierung nicht eigentlich ein realer Verlust an Flexibilität, Produktivität und Überschaubarkeit steckt.
Ja normal, ich denke auch, dass Java/C# für Programme wie JDownloader genau die richtige Wahl ist.
Nichtsdestotrotz war meine Aussage, dass Java höchstens auf Benchmarks schneller ist als C++ in die Richtung gemeint, dass Leute, die solche Benchmarks erstellen, meistens eh schon Java favorisieren und der Benchmark oft so gewählt wird, dass Java einfach relativ gut abschneidet. Wenn dronus den Test selber gemacht hast ist es ja ok, und das Java schneller geworden ist mit der Zeit nehm ich ihm auch ab. Aber "08/15"-Code wird denke ich nicht schneller sein als C++. Es geht ja nicht darum, welche Sprache jetzt z.B. schneller Speicher hin- und herkopieren kann, sondern wie schnell das letztendlich das Programm ist.
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: Java für Spiele?

Beitrag von dronus »

Psycho hat geschrieben: Aber "08/15"-Code wird denke ich nicht schneller sein als C++. Es geht ja nicht darum, welche Sprache jetzt z.B. schneller Speicher hin- und herkopieren kann, sondern wie schnell das letztendlich das Programm ist.
Ja da hast du recht. Wenn man mit '08/15' das Benutzen des gegebenen Frameworks einschliesst wird man vermutlich schnelleren C++ Code schreiben weil weniger Luxus bereitsteht und man eher mehr Code selber schreibt, der dann eben auch besser ans Problem angepasst ist.
Bei 3d-Anwendungen (mit wenig UI :-) ) hab ich allerdings bisher immer wenige Schwachstellen gehabt, an denen ein Großteil der Rechenleistung anfiel. Da kann man sich Luxus bei 90% des Codes problemlos leisten.. viel Code wird ja nur bei bestimmten Ereignissen, 1x pro Frame, wenige Male pro Frame oder so ausgeführt, im Gegensatz zu irgendwelchen Transformations- und Zeichenroutinen die evtl. viele tausend mal ausgeführt werden. Wenn man Spiele schreibt hat man ja doch meist einen Großteil des Codes im Griff, selbst die UIs sind ja meist selbstgeschrieben.

Wenn man natürlich mit einem dicken Framework arbeitet und ständig ominöse Funktionen aufrufen muss bei denen man man nur raten kann was für eine Lawine an Operationen das lostritt, kann man auch nicht viel mehr machen, als leise zu jammern und den alten Rechner zum Spermüll geben :-]
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: Java für Spiele?

Beitrag von Chromanoid »

http://www.java4k.com
ganz nette spiele dabei :)
Antworten