Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

10.12.2016, 22:04

Eine neue 2D (RPG) Game Engine für Java

Eine neue 2D (RPG) Game Engine für den Java Bereich

Heute wollte ich euch einmal meine neue Java 2D Game Engine in einem noch sehr frühem Stadium (1.0.1 Alpha Release) vorstellen. :D
Vorerst gleich die Information: In diesem Thread will ich aktuell das Projekt nur vorstellen, suche also derzeit (noch) keine Mitwirkenden.
Ich entwickle aktuell nur den Code, für Assets (Präsentationen) nutze ich derzeit auschließlich Open Source oder Lizenzfreie Bilder (z.B. von opengameart.org), der Fokus liegt also derzeit nur auf dem Code. Die Assets (Bilder, Musik, Fonts usw.) gehören meistens auch nicht mir und unterstehen somit einer speziellen Lizenz, die es mir erlaubt, diese Assets für meinen Anwendungsfall zu verwenden.


(Link)


Wieso eine neue Game Engine?
Im Java Bereich ist mir schon seit längerer Zeit eine Marktlücke bekannt geworden:
Seit Slick2D eingestellt wurde, gibt es kaum gute Game Engines, die nur für 2D ausgelegt und auch speziell dafür optimiert worden.
Auch die libGDX & jMonkeyEngine Engine (beide eher für 3D ausgelegt, aber mit 2D Mode) konnten mich bisher leider noch nicht wirklich überzeugen - es gibt leider auch kaum Alternativen für den 2D Bereich. Meines Wissens gibt es derzeit sogar gar keine (kostenlosen) Game Engine für Java, die nur für 2D ausgelegt & optimiert ist - oder irre ich mich da?

Kurze Informationen zu mir
Wie ich in den Regeln zur Projektvorstellung gelesen habe, "ist es eine Sache der Höflichkeit, sich kurz vorzustellen".
Aus diesem Grund ein paar Informationen zu mir.
Ich heiße Justin, bin derzeit 20 Jahre alt und studiere aktuell Informatik an der TU Dresden.
Mit etwa 11 oder 12 Jahre habe ich angefangen, erste kleine Programme (damals in C / C++) zu schreiben, habe das immer weiter ausgebaut und bin dann irgendwann vorrangig bei Java gelandet (was ich wohl vorallem einem guten Bekannten zu verdanken habe).
Außerdem wirke ich aktuell auf freiwilliger Basis (ohne Entgeld!) bei dem 2D MMORPG Projekt Pentaquin mit.

Allgemeine Informationen
Ursprünglich aus einem privatem Prototypen für das Projekt Pentaquin entstanden, habe ich nun die Sache selbst in die Hand genommen und eine kleine 2D Game Engine für Java erstellt, die später einmal hauptsächlich für den RPG Bereich ausgelegt, aber theoretisch für alles verwendet werden kann.
Sie ähnelt auch eher einem Framework, da man nicht wie bei Unity einfach Objekte in die Szene setzen kann - Java Kentnisse sind beim Anwender wie bei ähnlichen Game Engines also vorausgesetzt.
Entwickelt wird die Game Engine, wie schon erwähnt, in Java 8, basiert auf LJWGL und nutzt hierbei GLFW zur Fenstererstellung, sowie OpenGL 3.2 fürs Rendering.
Auch OpenGL 2.0 wird theoretisch unterstützt, wenn man in den Hints die OpenGL Minimumversion auf OpenGL 2.0 setzt - habe es bisher aber noch nicht getestet.
Lizenziert ist der Code (nicht die Assets) unter der Apache 2.0 Lizenz, d.h. ihr könnt den Code beliebig (auch kommerziell!) verwenden, modifizieren und verteilen (die Lizenz muss beigelegt werden, aber eure Software muss nicht unter der selben Lizenz stehen - am besten in die Lizenz schauen).
Bei den Assets müsst ihr die jeweiligen Lizenzen der Urheber beachten, die im Ordner vorliegen (z.B. data/graphic).
Unterstützt werden die Plattformen Windows (32 & 64 Bit), Linux (nur 64 Bit - LWJGL hat den 32 Bit Support gedroppt) & Mac OSX.
Besonderen Wert wollte ich vorallem auf die Optimierung für Computer Plattformen legen - Android Unterstützung ist aktuell nicht geplant, da ich hierfür auf OpenGL ES 2.0 setzen müsste.

Version 1.0.1 Alpha Released!
Heute habe ich nun endlich die Version 1.0.1 Alpha der Game Engine released.
Ihr könnt diese bereits verwenden (sie wird euch so einige Arbeiten abnehmen, selbst wenn ihr weiterhin selbst OpenGL schreibe wollt), aber es sind noch nicht alle Features implementiert.
In dieser Version habe ich vorallem den UI Renderer fertiggestellt (der alles mit einer orthogonalen Projektionsmatrix & ohne Kamera rendert) und einige Performance Improvements vorgenommen, während der Renderer Vorgangs sollten mittlerweile keine Objekte (außer einfache Datentypen wie int, long usw.) erstellt werden, was die RAM Auslastung mittlerweile recht konstant hält:

(Link)


Was funktioniert bereits?
Nun endlich zu der Frage, die wohl die meisten Leser dieses Beitrages interessieren könnte: Was besteht denn überhaupt 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, die übereinander gerendert werden, 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 & ausgebaut)
  • 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)

Genaueres seht ihr auch, wenn ihr einfach mal den Source Code kompiliert und die Main Klasse ausführt.

Welche Features sind noch geplant, aber noch nicht umgesetzt?
  • voller Game Renderer (mit Kamera & allem drum und dran)
  • 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

Auch einen Blog Artikel habe ich heute dazu verfasst (mit weiteren Informationen):
https://jukusoft.com/2016/12/10/java-2d-game-engine/
An der Dokumentation muss noch gearbeitet werden, aktuell gibt es nur die README.md Datei im Repository & das Example.

Nun noch die Links:
Game Engine Vorstellung auf meiner Webseite: Java 2D Game Engine
Source Code: https://github.com/JuKu/rpg-2dgame-engine
Downloads / Releases: https://github.com/JuKu/rpg-2dgame-engine/releases

Wer das Projekt gut findet, Kritik oder Feedback & Verbesserungswünsche abgeben will, ist hierzu herzlich eingeladen!
Auch über Motivation & Optimierungsvorschläge (falls jemand sowas braucht / haben will) würde ich mich diesmal sehr freuen! :D
»JuKu« hat folgendes Bild angehängt:
  • ga-768x450.png
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »JuKu« (10.12.2016, 22:20)


Toemsel

Treue Seele

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

2

12.12.2016, 15:36

Auch die libGDX & jMonkeyEngine Engine (beide eher für 3D ausgelegt, aber mit 2D Mode) konnten mich bisher leider noch nicht wirklich überzeugen - es gibt leider auch kaum Alternativen für den 2D Bereich. Meines Wissens gibt es derzeit sogar gar keine (kostenlosen) Game Engine für Java, die nur für 2D ausgelegt & optimiert ist - oder irre ich mich da?


LibGDX ist eine 2DEngine, die 3D zusätzlich anbietet. Ansonsten gibt es noch Slick2D, nichtsdestotrotz ist so eine Engine immer ein tolles Lernprojekt.

Slick2D ist schon lange obsolet.

3

12.12.2016, 22:21

Erstmal Danke für eure Antworten! :D

Bezüglich Slick2D:
Die letzte Feature Änderung fand glaube 2011 statt:
https://github.com/ariejan/slick2d/tree/…g/newdawn/slick

Allerdings gab es schon lange vorher keine großen Änderungen mehr, es wurde nur immer mal eine neuere LWJGL Version rein gebuildet. :D
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »JuKu« (12.12.2016, 22:29)


4

14.12.2016, 02:30

Habe mittlerweile Version 1.0.2 Alpha released, die u.a. jetzt Animationen unterstützt:


Charakter Animation


Die Charakter Grafik stammt übrigens von Paul Funk, einem unserer Grafiker bei dem Projekt Pentaquin.

Changelog in den Releases:
https://github.com/JuKu/rpg-2dgame-engine/releases

Die 2D Game Engine ist natürlich immer noch in einem sehr frühen Stadium.
Indie Game-Dev Programmierer beim 2D MMORPG Pentaquin | Pentaquin Foren Vorstellung

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »JuKu« (14.12.2016, 18:13)


Werbeanzeige