libGDX; Multiplattform-Game-Engine für Java

Für ein kleineres Projekt war ich auf der Suche nach einer Game-Engine für Java. Empfohlen wurde mir schlussendlich libGDX. Dabei handelt es sich um eine Game-Engine welche ursprünglich für Android entwickelt wurde. Mario Zechner, der ursprüngliche Entwickler der Engine, baute allerdings nach relativ kurzer Zeit eine Unterstützung für Desktopsysteme ein. Mittlerweile werden als Zielsysteme Linux, macOS, Windows, Android, iOS und der Webbrowser unterstützt.

Ein kleines Projekt in libGDX, nach ein paar Stunden Entwicklungszeit

libGDX eignet sich für 2D- als auch 3D-Spiele und ist relativ einfach strukturiert, so dass man in wenigen Stunden von einer Idee zu einem Ergebnis kommen kann. Die seit mittlerweile 2009 in der Entwicklung befindliche Engine wurde 2010 erstmalig veröffentlicht und hat sich seitdem stetig weiterentwickelt. Technisch basiert die Engine neben Java auf OpenGL, welches zum Rendering der Spieleszenen genutzt wird.

Die Liste der implementierten Features von libGDX ist lang. So wird Audio ebenso unterstützt wie die abstrakte Behandlung von Eingabegeräten, so das ein Spiel auf Touchscreen ebenso läuft wie auf gewöhnlichen Rechnern. Im Bereich der Grafik werden Partikelsyssteme, die Nutzung von Tile-Maps (mit einer nativen Unterstützung des TMX-Dateiformates) und vieles mehr unterstützt. Der Entwickler nutzt dazu die entsprechenden High-Level-APIs und muss sich nicht mit der konkreten Implementierung herumschlagen. Daneben existieren entsprechende Hilfs- bzw. Datenklassen, welche die verwendete Mathematik wie Matrizen, Vektoren und ähnliches abdeckt.

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=hA2e3xIuNlk

Neben den im Kern vorhandenen Features, existiert ebenfalls eine Unterstützung für zusätzliche Module, so können unter anderem Box2D und das Entity-System Ashley als zusätzliche Module eingebunden werden.

Die offizielle Seite des Projektes ist unter libgdx.badlogicgames.com zu finden. Neben der spartanischen Dokumentation auf der offiziellen Webseite, ist die Wiki des GitHub-Projektes ein guter Einstiegspunkt für den Start mit libGDX. Der Quelltext der Engine ist ebenfalls auf GitHub zu finden. Die Engine ist unter der Apache License in Version 2 lizenziert und somit freie Software.

Ubuntu ohne Splash Screen starten

Beim Start einer Ubuntu-Installationen wird ein Splash Screen angezeigt. Möchte man stattdessen dauerhaft die Statusmeldungen beim Hochfahren sehen, so kann dies über die GRUB-Konfiguration geändert werden. Dazu muss die Default-Konfigurationsdatei von GRUB im Editor geöffnet werden:

sudo nano /etc/default/grub

Dort muss die Zeile:

GRUB_CMDLINE_LINUX_DEFAULT="splash quiet"

zu:

GRUB_CMDLINE_LINUX_DEFAULT="text"

geändert werden. Nachdem die Änderung der Konfiguration gespeichert wurde, muss GRUB bzw. die Konfiguration desselben aktualisiert werden. Dies geschieht mittels:

sudo update-grub

Anschließend kann der Rechner neugestartet werden. Statt des Splash Screen werden nun die Statusmeldungen beim Start angezeigt.

Animationen unter GNOME 3 deaktivieren

Unter GNOME 3 gibt es eine Reihe von Fensteranimationen, welche die Oberfläche hübscher erscheinen lassen. Auf leistungsschwachen Systemen können diese Animationen allerdings zu Problemen führen. Möchte man diese Probleme mildern, können die entsprechenden Fensteranimationen abgeschaltet werden. Dazu muss das Terminal geöffnet werden und dort der Befehl:

gsettings set org.gnome.desktop.interface enable-animations false

eingegeben werden. Anschließend sind die Fensteranimationen sofort deaktiviert. Je nach Rechner wirkt sich diese Einstellung mehr oder weniger positiv auf die Performance aus.

Shell-Befehle Stück für Stück erklärt

Befehle in der Linux-Shell sind für viele Leute meist ein Buch mit sieben Siegeln. Während ein:

cat example.txt | grep "error"

für die meisten Nutzer noch verständlich ist, wird es bei komplexeren Befehlszeilen doch recht unübersichtlich. Für diese Fälle gibt es den Webdienst explainshell.com.

Die Befehlszeile wird Stück für Stück erklärt

Dieser Dienst splittet die einzelnen Befehle und erklärt sie mit Hilfe der Informationen der sogenannten man-Pages. Diese wurden geparst und sind als Datenbasis hinterlegt. Mit Hilfe einer Heuristik werden die einzelnen Befehle erklärt. Der Quelltext für den Dienst, welcher in Python geschrieben wurde, ist auf GitHub zu finden. Lizenziert ist das Projekt unter der GPL3 und damit freie Software.

Qualitative Audioverbindungen übers Internet

Wenn man einen Podcast aufnimmt und mit jemandem sprechen möchte der etwas weiter entfernt ist, so bietet sich eine Audioverbindung über das Internet an. Früher wurde dies meist über Skype gelöst; das Problem hier ist die starke Komprimierung und Echo-Unterdrückung, welche zu vielen Artefakten im Audiosignal führt. Eine Alternative hierzu ist der sogenannte double ender. Hierbei werden die Audiospuren der Teilnehmer nicht nur übertragen, sondern zusätzlich lokal aufgezeichnet. Anschließend werden die einzelnen Spuren in einer DAW wieder zusammengefügt. Allerdings kann es bei diesem Verfahren zu Synchronisationsproblemen kommen, so dass es in der Praxis eher seltener verwendet wird.

studio-link.de

Glücklicherweise gibt es mit Studio Link eine Software welche das Problem einer sinnvollen N-1 (N minus 1) Schaltung löst. Bei einer N-1 Schaltung wird das eigene Signal aus dem Mix entfernt, so das man sich nicht selber hört. Studio Link nutzt die Protokolle für IP-Telefonie um ein möglichst latenzfreies und sauberes Audio zu liefern. Neben den Pluginlösungen als VST, AU und LW2-Plugin, bietet Studio Link eine Standalone-Variante, sowie in Zukunft eine entsprechende Hardware. Die Standalone-Lösung ist für Linux, macOS und Windows verfügbar. Bezogen werden kann Studio Link unter studio-link.de. Der Quellcode kann auf GitHub gefunden werden; er ist unter freien Lizenzen lizenziert.