Game Development mit Java, Kotlin und JavaFX

FXGL – Eine JavaFX-Bibliothek für Spieleentwickler

Dominik Mohilo

© Shutterstock / Nikolay Solidcreature

Lasst uns ehrlich sein: Im Herzen eines jeden Entwicklers steckt doch der Wunsch, auch irgendwann einmal ein Spiel zu programmieren. Wer dies mit JavaFX tun möchte, für den ist die neue Bibliothek FX Gaming Library (FXGL) ein guter Startpunkt. Die umfangreichen Features bilden eine solide Grundlage und die ausführliche Dokumentation erleichtert den Einstieg.

Das Problem mit FX Gaming Library, beziehungsweise JavaFX im Bereich Game Development gleich vorweg: Für das Programmieren von 3D-, Mobile- oder Webspielen ist es nicht so gut geeignet, sagt Almas Baimagambetov, Entwickler der Bibliothek. Wer sich allerdings – vielleicht in seiner Jugend – vorgenommen hat, einmal ein 2D-Spiel zu schreiben, für den könnte die FXGL ein guter Startpunkt sein.

FXGL – Die Features

Aktuelle Features

FXGL basiert auf Version 8 von JavaFX und bietet eine vollständige JavaFX-Integration. Zudem bringt die Bibliothek Top-Level-Java-Inferfaces mit einer Lower-Level-Kotlin-Implementierung. Neben der Physik-Engine JBox2D, dem Entity-Komponenten- und Kontrollsystem Ents und dem Eventsystem FXEventBus, ist auch AStar integriert, eine kleine Bibliothek, die in Spielen die A*-Pathfinding-Suche erlaubt.

Screenshot aus einem mit FXGL programmierten Space-Shooter / Quelle: FXGL Homepage

Screenshot aus einem mit FXGL programmierten Space-Shooter / Quelle: FXGL Homepage

Die Bibliothek beinhaltet auch einige Code-Snippets, um die im Entstehen begriffenen Spiele ganz den eigenen Vorstellungen nach zu gestalten. Schablonen gibt es zum Beispiel für das Intro (Video oder Animation), das Haupt- und Gamemenü und diverse UI-Elemente (Dialoge, Leisten, Buttons). Für Menüs und UI-Elemente ist ein anpassbares globales CSS inbegriffen.

Auch in Sachen Frameworks hat die FXGL einiges zu bieten: So ist unter anderem das Logging-Framework Log4j2 und das IO-Framework EasyIO in der Library enthalten. Auch ein Framework für globale Services fehlt nicht im umfangreichen Paket, dass Baimagambetov geschnürt hat.

Neben diesen Features sind natürlich auch einige Basics für die Spieleentwicklung mit an Bord, unter anderem ein System zum Speichern und Laden, ein Achievement-System und ein In-game-Notification-System sowie Game Loop. Auch Input-Bindings für Maus und Tastatur gibt es mit FXGL in vorgefertigter Form, außerdem ein Audio System.

Zukünftige Features

An der Bibliothek wird weiterhin gearbeitet und zukünftig sollen einige neue Features in FXGL implementiert werden. Für Speicherzwecke soll an der Datenverschlüsselung und -kompression gearbeitet werden, auch Streaming und die Integration von JSON und XML sind auf dem Wunschzettel für spätere Releases.

Im Wiki zur FXGL gibt es eine vollständige Liste mit möglichen Features. Dort werden auch jene abgehakt die bereits implementiert sind.

Beispiel für ein mit FXGL erstelltes Menü / Quelle: FXGL Homepage

Beispiel für ein mit FXGL erstelltes Menü / Quelle: FXGL Homepage

FXGL – Eher akademischer Natur

Almas Baimagambetov sieht den Fokus von FXGL trotz des großen Funktionsumfangs eher im akademischen Bereich und empfiehlt für ernsthafte Bestrebungen im Game Development Libraries wie LibGDX oder JMonkey:

almas gplusIf you are serious about game development I would suggest that you use LibGDX or JMonkey as they will provide you with better support both in terms of tools and performance. FXGL was not meant to compete with any other existing game library.
 

Die einfachste Art, FXGL in ein Projekt einzufügen, ist die Verwendung von Maven oder Gradle. Es gibt allerdings auch die Möglichkeit von verschiedenen Releases ein uber-jar zu bekommen. Folgende Bibliotheken werden für die Verwendung der FX Game Library benötigt:

  • Guice 4.0
  • jfxtras-window 8.0-r4
  • controlsfx 8.40.10
  • FXEventBus 1.0
  • Ents 1.0.4
  • EasyIO 0.1.4
  • AStar 1.0
  • Log4j2 2.5
  • GDX-AI 1.8.0
  • Kotlin std-lib, std-runtime 1.0.3

Um mit FXGL schnell durchzustarten, aber auch für fortgeschrittene Nutzer hat Almas Baimagambetov eine Reihe von Video-Tutorials für YouTube gedreht. Diese beinhalten neben Coding-Beispielen auch Setups für die Entwicklungsumgebungen Eclipse und IntelliJ IDEA:

Weitere Informationen zur FX Gaming Bibliothek und diverse Download-Optionen finden sich auf der offiziellen Homepage. Auf GitHub sind Beispiele und ein Wiki zu FXGL verfügbar. Almas Baimagambetov kann für Fragen oder Anregungen per E-Mail oder Gitter Chat kontaktiert werden.

Aufmacherbild: Computer game concept.. von Shutterstock.comUrheberrecht: Nikolay Solidcreature

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: