2D Game-Engine in Java?



  • Ich suche eine 2D Game-Programming Engine in Java, die neben den ganzen Standardsachen (Input/Sound/Grafik IO etc.) auch Pixelshader unterstützt.

    Könnt ihr mir eine gute empfehlen?



  • Ok, anscheinend nicht.

    Ist echt merkwürdig. Wenn man nach dem labern der Professoren und Java-Fans gehen würde, dann müsste Java überall ziemlich weit verbreitet sein. Wenn ich aber in Google nach diversen Libs oder Engines für irgendetwas suche, dann gibt es etwas für meine Anforderungen entweder gar nicht, oder es ist dermaßen schlecht dokumentiert (wenn überhaupt liegt nur ne Javadoc vor die zwar sagt was alle Klassen und Methoden machen, aber nicht wie man alles im Zusammenhang zueinander benutzen muss. Sprich: Kurze Einsteiger-Tutorials fehlen).

    Ich hatte mir schon gedacht, dass es was Game-Development angeht in Java im Vergleich zu C++ etwas enger wird wenn ans suchen von externen Resourcen geht, aber dass es derartig schlecht ist konnte ich schlecht glauben.

    Bisher fand ich keine einzelne Lib, die (Pixel/Fragment-) Shader unterstützte. JGame war das einzige Framework was ein Tutorial hatte und ordentliche Features die man zum entwickeln von 2D-Spielen braucht, aber Shader hatte JGame auch nicht.

    Ich weiß zwar, dass ich mit lwjgl alles selber coden könnte, aber da ich in OpenGL überhaupt nicht fit bin, hab ich einfach keine Ahnung wie ich das machen soll.

    Rein aus Interesse hab ich mal nach ner 2D Physik-Engine in Java gesucht und Tada: Es gibt gleich 2 Ports von Erin Cattos Box2D in C++, aber bei beidem fehlen Tutorials, zudem sind beide Ports laut Performancetests unglaublich viel langsamer als die originale C++ Version (was wohl an der fehlenden Pointerarithmetik in Java liegt, mit deren gefährlichen Rumspielerei man doch noch einiges an Performance rauskratzen kann in C++) von Box2D. Bei einem der Ports wächst der Geschwindigkeitsnachteil gegenüber der C++ Version sogar exponentiell an, da diese Version des Ports viele der in C++ vielbenutzten Patterns in Java-übliche Konzepte umwandelt (Factory Pattern z.B.), was sich anscheinend extrem negativ auf die Performance ausübt.

    Alles in allem: Ziemlich enttäuschend.



  • Du bist auch nen cleverer Troll, wie wär's mal in nem Java Forum zu fragen, vielleicht kennen die sich da mehr damit aus als die Leute im C++ Forum, aber ist nur so 'ne Vermutung.

    PS: Wenn du mit OpenGL nicht klarkommst, und damit mein ich nicht die ogl api sondern die Konezepte die derer zugrundeliegen, dann ist Spieleentwicklung vermutlich eh nicht das richtige für dich...



  • Also ich habe lange Zeit Slick als 2D Engine unter Java genutzt, allerdings passt die nicht auf deine Anforderungen mit den Pixelshader. Ich muss aber auch sagen das ich keine 2D Engine für C++ kenne die Pixelshader Unterstützung anbietet. Das ist eher etwas für 3D Engines.

    Was die Performance angeht haben gerade Physik Engines unter Java das Problem das viele kleine Objekte (vor allem Vektoren) erzeugt werden, die meist nicht lange leben. Das new hat in Java einen noch höheren Overhead als es in C++ schon der Fall ist, und der Aufwand für die Garbage Collection auf sehr vielen Objekten ist auch nicht gerade ohne. Da gibt es Mittel und Wege das zu verbessern, aber soweit ich weiß wurde bei den 2D Physik Engines darauf verzichtet.



  • gastantwort schrieb:

    Du bist auch nen cleverer Troll, wie wär's mal in nem Java Forum zu fragen, vielleicht kennen die sich da mehr damit aus als die Leute im C++ Forum, aber ist nur so 'ne Vermutung.

    ich bin kein troll. vll. ist das java forum hier wirklich sehr wenig besucht. kannst du ein gutes java forum empfehlen?

    PS: Wenn du mit OpenGL nicht klarkommst, und damit mein ich nicht die ogl api sondern die Konezepte die derer zugrundeliegen, dann ist Spieleentwicklung vermutlich eh nicht das richtige für dich...

    nicht klarkommen ist der falsche ausdruck. mir fehlte bis jetzt einfach die motivation mich in directx oder opengl einzuarbeiten, über paar einsteigertutorials hinaus meine ich.

    der rest dieser aussage ist übrigens auch bullshit. ich entwickle schon seit ein paar jahren hobbymäßig 2d-games mit c++ und im rahmen meines studiums wudre ich vom prof dazu beauftragt mir ein projekt auszusuchen, weil ich (und ein kollege der bei dem projekt mitmachen wird) in den programmierübungen nichts neues mehr lernen. und wir haben uns eben dazu entschieden ein kleines game zu programmieren, bedingung ist halt nur das wir dafür java verwenden.

    genau für leute wie mich sind engines ja da. für leute, die sich mit dem low-level zeugs nicht abfinden wollen.

    Also ich habe lange Zeit Slick als 2D Engine unter Java genutzt, allerdings passt die nicht auf deine Anforderungen mit den Pixelshader. Ich muss aber auch sagen das ich keine 2D Engine für C++ kenne die Pixelshader Unterstützung anbietet. Das ist eher etwas für 3D Engines.

    SFML kann das. aber da viele leute noch alte und überflüssige krücken wie allegro oder sdl verwenden, ist SFML nicht so weit verbreitet, deswgen wissen nicht so viele davon.

    und gerade mit pixelshadern lassen sich in 2D games enorm viele nette dinge visualisieren, die ohne shader so nicht (oder nur mit sehr großem aufwand für den entwickler und die CPU) umsetzbar wären. von einfachen dingen blooming und paar verzerrungseffekte über pseudo-realistisches wasser bis hin zu shadern die dem ganzen game einen einheitlichen look verpassen, sodass man die auswirkung von verschiedenen grafikern nicht so sehr sieht, gibt es eigentlich keine grenzen für pixel shader.


Anmelden zum Antworten