[Java] Neue 2D (RPG) Game Engine – Version 1.0.1 (Alpha) released!

Derzeit arbeite ich u.a. an einer neuen Java 2D Game Engine, da die alte Java Game Engine Slick2D leider schon lange nicht mehr weiterentwickelt wird.

Auf der Java Seite gibt es aktuell leider kaum wirkliche Alternativen im 2D Bereich (mir fallen spontan nur libGDX und jMonkeyEngine ein).

libGDX konnte mich dabei aktuell noch nicht wirklich überzeugen (vorallem was die Performance angeht – hier habe ich einige Blicke “unter die Haube”, also in den Code geworfen…) und sowohl libGDX als auch jMonkeyEngine 3D Game Engines sind, die zwar einen 2D Mode besitzen, aber eher für 3D und weniger für 2D ausgelegt und somit auch eher dafür optimiert wurden. Auf dem Markt habe ich daher schon lange nach einer guten und kostenlosen Java 2D Game Engine gesucht, aber bin bisher nicht fündig geworden.

Nun habe ich die Sache selbst in die Hand genommen und arbeite aktuell an einer neuen 2D Game Engine, in der Programmiersprache Java 8 geschrieben, die zwar vorrangig für 2D RPG Spiele ausgelegt sein soll, aber auch andere Spiele unterstützen wird. Diese soll quasi eine Alternative zu libGDX & jMonkeyEngine schaffen und für 2D & Computer Plattformen optimiert sein.

JuKuSoft Java 2D Game Engine

 

Allgemeines zur Java 2D Game Engine (unterstützte Plattformen, Technologien & Lizenz)

Diese neue 2D Game Engine basiert auf LWJGL, GLFW & OpenGL 3.2 (wobei eig. auch OpenGL 2.0 unterstützt werden sollte) und unterstützt aktuell Windows 32 / 64 Bit, Linux (nur 64 Bit, da LWJGL den Support für 32 Bit gedroppt hat), sowie Mac OSX. Lizenziert ist die Game Engine selbst, also der Code (nicht die Assets!), unter der Apache 2.0 Lizenz, d.h. ihr könnt den Source Code (nicht die Assets!) beliebig verwenden (auch kommerziell), modifizieren & verteilen. Allerdings muss eindeutig darauf hingewiesen werden, dass diese Game Engine die Apache 2.0 Lizenz nutzt und dass diese von mir (jukusoft.com) stammt. Auch eine Kopie der LICENSE muss beigelegt sein – aber das kennt ihr sicherlich schon alles. Euer eigenes Programm (kann auch kommerziell sein) selbst muss allerdings nicht unter der Apache 2.0 Lizenz stehen, dieses muss nicht einmal Open Source sein.

Genauere Informationen zur Apache 2.0 Lizenz: https://de.wikipedia.org/wiki/Apache-Lizenz

 

Version 1.0.1 Alpha released

Heute habe ich die Alpha Version 1.0.1 released, ihr könnt sie bereits verwenden, aber es sind noch nicht alle geplanten Features implementiert. Auch einige Optimierungen müssen noch vorgenommen werden, perfekt ist die Game Engine noch lange nicht. Gern könnt ihr mir übrigens eure Meinungen & Verbesserungsvorschläge mitteilen!

Ich habe versucht die Best Practices aus der LWJGL Dokumentation mit zu berücksichtigt. Da diese Game Engine auf LWJGL basiert, könnt ihr selbstverständlich auch eigene OpenGL, OpenCL & OpenAL Calls ausführen. Es wird nur OpenGL unterstützt, eine DirectX oder Vulkan Unterstützung ist aktuell nicht geplant. Die Sound Engine wurde noch nicht begonnen.

 

Was besteht bereits?

Hier eine kleine Auswahl:

  • Window System – einfache Fenstererstellung mit GLFW
  • eine eigene Math Library (wieso ich nicht auf JOML setze, erkläre ich lieber an anderer Stelle – das würde hier den Rahmen sprengen)
  • Game State System (annähernd fertig – es werden auch mehrere Game States gleichzeitig unterstützt, z.B. für In-Game Menüs)
  • einfaches Input Handling (aktuell per Input Listener, weitere Features sind geplant)
  • Alle Basic Classes (z.B. Material, Mesh usw.) für das Rendering
  • Resource Manager (wird noch verbessert)
  • Logging
  • Text rendern
  • einfache Bilder rendern (aktuell leider noch keine Spritesheets / Texture Regions)
  • ein UI Renderer (der einfach alle Objekte mit einer orthogonalen Projektionsmatrix zeichnet, aber keine Lightings einbezieht)

 

Welche Features sind noch geplant?

  • voller Game Renderer
  • Lighting Support
  • einfache Verwaltung & Auslesen von Game Configs
  • Spritesheet Unterstütung (auch als Texture Region bekannt)
  • Text rendern mit NanoVG (eine LWJGL Library, die dies erheblich vereinfacht)
  • besseres Input Handling
  • einfache Unterstützung von Animationen (per Spritesheet & mehreren Layern für RPG)
  • Tiled Mapeditor (TMX Dateiformat) Unterstützung für 2D RPG Spiele
  • einfacher SpriteBatcher (mal schauen, wie man diesen optimieren kann…)
  • Sound System

 

Systemvoraussetzungen

Die Systemvoraussetzungen wurden noch nicht genau getestet, sollten aber in etwa wie folgt aussehen:

  • Java 8 (JRE)
  • Ein unterstütztes Betriebssystem:
    • Windows 7, 8 oder 10 (32 & 64 Bit)
    • Linux (nur 64 Bit)
    • Mac OSX
  • Eine Grafikkarte mit OpenGL 2.0 – besser OpenGL 3.2 Unterstützung

 

Performance Improvements

In dieser Version habe ich einige Performance Verbesserungen vorgenommen, u.a. werden jetzt keine Objekte mehr im Renderer Loop erzeugt (außer einfache Datentypen wie int, long usw.), womit sich die Performance & GC Aktivität deutlich verbessert hat:

Performance Improvements

 

An der Dokumentation arbeite ich aktuell noch, hier könnte euch ein Blick in die README.md auf der Github Seite aber auch schon ein klein wenig helfen.

Die Game Engine findet ihr hier: https://github.com/JuKu/rpg-2dgame-engine/releases

Source Code: https://github.com/JuKu/rpg-2dgame-engine

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.