OPenGL mit Java möglich?`



  • Tribal Trouble gefällt mir recht gut. Es ist wohl nur die Anbindung von OpenGL in C++ geschrieben der Rest ist Java. Das Spiel ist zwar von der Grafik nicht so aufwändig, macht aber trotzdem einen soliden Eindruck.

    Der Wurmonline funktioniert leider weder in Opera noch in IExplorer, obwohl ich auch ein JDK drauf habe.



  • wenn du Spiele entwickeln willst, solltest du zur LWJGL greifen, weil sie dir noch viele zusätzliche Bibliotheken bietet wie FMOD, OpenAL, DevIL...


  • Mod

    Quake2 gibt es übrigens auch in ner Java-Version:

    http://www.bytonic.de/html/jake2_webstart.html

    🙂 Wahlweise mit JOGL oder mit LWJGL.



  • Ich habe mir mal das Jake2 angeschaut und es haut einen nicht wirklich vom Hocker mit den heutigen Rechnern. Wenns so schnell auf einem PIII 500 mit 128MB laufen würden dann wäre das schon was, aber so. <gähn>


  • Mod

    Gast2 schrieb:

    Ich habe mir mal das Jake2 angeschaut und es haut einen nicht wirklich vom Hocker mit den heutigen Rechnern. Wenns so schnell auf einem PIII 500 mit 128MB laufen würden dann wäre das schon was, aber so. <gähn>

    http://www.bytonic.de/html/benchmarks.html
    Erscheint mir zum originalen C-Code mehr oder weniger vergleichbar. :p Zumindest, wenn man die aktuellste Version betrachtet.



  • Ne, das muss ja langsamer sein. Die Grafikkarte kann doch mit Java nicht genauso schnell rechnen. 😉



  • Soweit ich informiert bin hängt es mehr von der Aufbereitung der Grafikdaten und dem richtige Timimg ab indem die GPU die Daten bekommt. Theoretisch sollte solange keine aufwendige KI- oder Physikberechnungen dabei sind Java in der Lage sein das ähnlich gut zu meistern wie C++. Kann aber auch sein das die Schnittstelle von JAVA da ein Flaschenhals ist.

    Ich kenne die Gründe da nicht genau warum es keine professionelle Spielesoftware in Java gibt.


  • Mod

    justchris schrieb:

    Ich kenne die Gründe da nicht genau warum es keine professionelle Spielesoftware in Java gibt.

    Ich kann Dir einige Gründe nennen. IMHO ist da weniger die Performance von Java relevant, als folgende Dinge:

    1. Java gilt zwar als "plattformunabhängig", aber nur so weit, wie eine JRE für die jeweilige Plattform verfügbar ist. Jetzt ist es leider so, dass es für die Playstation keine JRE gibt. Wenn man sich bei einem Spiel für Java entscheidet, dann entscheidet man sich automatisch auch gegen eine einfache Portierung des Titels auf die Playstation. Du kannst Dir vorstellen, dass man so einen großen Markt nicht gerne ignoriert.

    2. Für C++ existiert bezüglich der Spieleprogrammierung AFAIK eine deutlich bessere Infrastruktur als für Java. Damit meine ich die vorhandenen Bibliotheken, Werkzeuge usw..

    3. Oft werden "GC-Pausen" als großes Problem genannt. Ich weiß nicht, was da dran ist, aber wenn man in einem EGO-Shooter plötzlich mal ein paar hundert Millisekunden warten muss, dann ist das tödlich. Da ist halt die Reaktion der Software gefragt und nicht gerade der "Durchsatz". Ich weiß aber nicht, inwiefern das heute noch ein Problem ist. Es sind ja mit der Zeit andere GCs zu Java dazugekommen, die man alternativ nutzen kann. Und es gibt sicherlich auch Strategien, die Relevanz der GCs zu verringern. "...einfach weniger Müll produzieren" zum Beispiel.

    ...und es gibt wohl auch noch einige weitere Gründe.

    Insgesamt kann man allerdings sagen, dass Java mit der Zeit sicherlich auch für die Spieleprogrammierung attraktiver geworden ist. Und dieser Trend wird sich auch fortsetzen. Keine Ahnung, ob und wann ein größerer Spieletitel erscheint, der in erster Linie mit Java programmiert wurde. Es gibt ja durchaus ein paar kleinere Titel, die auf Java basieren. Einer der "Law & Order"-Titel wurde glaube ich in Java implementiert. Und Java wird durchaus auch für andere Zwecke, wie zum Beispiel das Skripting, in Spielen verwendet. "IL-2 Sturmovik" nutzt Java zum Beispiel in geringem Maße.



  • Das Problem der GC-Pausen dürfte nur in Singleplayer-Action-Spielen stören. In Mutiplayer Spiele dürfte der größe "Flaschenhals" der Ping zum Server sein. In Spielen wir Adventure/RPG/Strategie dürfte da die Pausen überhaupt nicht auffallen.



  • Der Ping zum Server beeinflusst aber idealerweise die Framerate nicht. Natürlich werden Lags auch als spielerisch störend empfunden, das ist aber nicht etwas, was man allgemein als schlechte Performance bezeichnet (denke ich).

    Zum GC: Der GC in der Sun-JRE hat eigentlich auch in der Client-Version eine ziemlich hohe worst-case GC-Zeit. Ich hab beim Arbeiten mit Eclipse schon GCs von 20ms gemessen, was in einem Spiel mit interaktiver Grafik sicherlich störend auffallen dürfte. Ist aber wohl eher eine Implementierungsfrage. Man kann auf Kosten des Durchsatzes die Pause-Zeiten sicherlich verringern.



  • Sehe ich genauso. Ich entwickel zwar keine Spiele mit Java, aber wenn der GC aktiv wird, dann ist das schon direkt spürbar. Vor allem die Tatsache, dass man nicht direkt beeinflußen kann, wann der GC aktiv wird, ist für Spiele denkbar ungünstig. Zwischen zwei Leveln könnte er ja ruhig aufräumen, aber in einer wichtigen Spielszene ist das tötlich, denn der GC zieht ordentlich Performance.



  • Kommt darauf an, wie man Performance misst. Von der Gesamtrechenzeit zieht er in der Praxis nicht viel ab. Man muss sich das nicht so vorstellen, dass man in einem Shooter 1-2mal in der Sekunde wegen dem GC nen Ruckler hätte. Die meisten Collections sind ganz klein und gehen in ~1ms. Aber jedesmal wenn ein großer Batzen kommt, ist die Pause-Zeit beim Sun-GC anscheinend enorm.

    Inwiefern du in normalen Anwendungen den GC "spürst", entzieht sich allerdings schon meiner Kenntnis. Gerade wenn du schlechte Performance "spürst", weißt du noch lange nicht, wieviel Anteil der GC daran hat.


Anmelden zum Antworten