[Java] Test RPG mit libGDX – Entwicklung

Test RPG mit libGDX – Version 1.0.0 pre-alpha

Dank Pentaquin (wir setzen dort libGDX ein) durfte ich mich wieder einmal in eine neue Game Libraries rein fuchsen, diesmal libGDX.

Um mein eigenes Wissen über libGDX zu erweitern habe ich kurzerhand ein kleines Test RPG (Role Playing Game) angefangen zu programmieren, auch um die Performance & Möglichkeiten von der Gaming Library libGDX einmal genauer auszutesten.

Dabei habe ich versucht nur Open Source Grafiken einzubinden, dessen Autoren findet ihr in der CONTRIBUTORS Datei sowie in den jeweiligen Asset Verzeichnissen.

 

Test RPG mit libGDX

Test RPG Game, die Grafiken stammen nicht von mir, eine Liste mit allen Grafik Urhebern findet ihr hier: CONTRIBUTORS und LICENSE (free Open Source Assets unter individuellen Lizenzen)

Continue reading

[Maven] Eine JAR mit allen dependencies

Wenn man mit Maven eine einfache JAR Datei buildet, enthält diese nur den eigenen Code, die Libraries sind nicht enthalten, sondern im lib Ordner versteckt.

Manchmal will man aber diese libraries gleich mit in der JAR haben, um nur diese eine JAR Datei ausliefern zu müssen. Dies nennt sich dann “JAR mit allen dependencies” oder in Original Sprache: “jar-with-dependencies”.

In diesem kurzen Artikel wird erklärt, wie es funktioniert.

Wer sich noch nicht mit Maven beschäftigt hat, sollte sich mit meinem Tutorial zu Maven Teil 1 und Teil 2 einmal auseindersetzen.

Continue reading

Ein künstliches neuronales Netz für Super Mario?

Ein künstliches neuronales Netz für Super Mario? Ihr habt richtig gelesen!

Ich habe im Netz ein interessantes Video inkl. Source Code gefunden, welches demostriert, wie eine künstliche Intelligenz mit Hilfe von künstlichen neuronalen Netzwerken Super Mario spielt:

 

Wer sich ebenfalls dafür interessiert, wie das funktioniert, findet den Source Code hier:

Source Code

 

Hinweis:
Dieser Source Code stammt nicht von mir, ihr findet den Link auch unter dem Video auf YouTube.

[Maven] Mit Maven ZIP Archiv erstellen / deployen Tutorial

Mit Maven ZIP Archiv erstellen

Wer kennt es nicht? Man hat eine Software (eine JAR Datei), die man als ZIP Archiv ausliefern will (z.B. um sie auf einer Download Seite zur Verfügung zu stellen) und muss diese ZIP Dateien noch von Hand erstellen. Heute zeige ich euch, wie ihr diese ZIP Archive automatisch von Maven generieren lassen könnt.

ZIP Archiv (GPL Lizenz, Quelle: https://www.iconfinder.com/icons/7034/compressed_document_file_zip_icon)

ZIP Archiv, GPL Lizenz, Quelle: Link

Continue reading

[Java] Hazelcast JUnit Tests

Ich habe mich früher oft gefragt, wie man Hazelcast JUnit Test schreibt.

Heute will ich euch eine kurze, aber knackige Antwort darauf geben.

 

Wer Hazelcast nicht kennt:

Hazelcast ist eine In-Memory-Data Grid, also eine der schnellsten (angeblich sogar die schnellste) NoSQL Datenbanken, die es derzeit auf dem Markt gibt.

Allerdings speichert Hazelcast die Daten per Default nur “In Memory”, also nur im RAM. Da es aber mehrere Hazelcast Nodes (Server) im Cluster geben sollte, können mehrere Hazelcast Server ausfallen, ohne dass dabei Daten verloren gehen. Bei Pentaquin nutzen wir Hazelcast derzeit vorallem als Cache für schnelle Zugriffszeiten, die ein 2D MMORPG dringend benötigt.

Continue reading

[Java] Ist eine Java HashMap Thread Safe?

Ist eine Java HashMap Thread Safe?

HashMap Code

In diesem Artikel wollen wir uns einmal damit beschäftigen, ob die Map Implementierung HashMap<Key,Value> Thread Safe ist. Sicherlich habt ihr auch schon einmal von einer ConcurrentHashMap gehört und euch gefragt, was denn jetzt der Unterschied zwischen diesen beiden ist. Auch gibt es bei einigen immer wieder etwas Verwirrung, weil man immer mal was von 16 Locks im Zusammenhang mit einer HashMap gehört hat. Heute wollen wir das Rätsel einmal auflösen.

Continue reading

[OpenGL] Vertex Buffer Object & Vertex Array Object – Was ist das?

Was sind eig. OpenGL Vertex Buffer Objects & Vertex Array Objects – kurz: VBOs und VAOs?

Gerade absolute OpenGL Neulinge haben es recht schwer, sich in die Materie von OpenGL einzuarbeiten, da immer wieder neue Begriffe auftauchen, die Anfänger verwirren lässt. Aus diesem Grund habe ich heute einmal einen kleinen Artikel verfasst, wo diese beiden Begriffe kurz erklärt werden.

 

Vorerst ein paar kurze Informationen vorab:

Die Grafikkarte kennt nur 3D Objekte, welche dann für unseren Bildschirm in 2D umgerechnet werden. Außerdem kennt die Grafikkarte nur 3 Ecke & 4 Ecke – wenn ihr also einen Baum darstellen wollt, oder sogar eine Kugel, bestehen diese Objekte aus lauter kleinen Triangles (Dreiecken) & Quads (Vierecken).

 

Hier mal eine untexturierte Kugel (erstellt mit Blender):

3D Kugel

Continue reading

[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

Continue reading

[Java] Shutdown Hook

Shutdown Button

Heute soll es einmal um Java Shutdown Hooks gehen, mit denen wir bestimmten Code beim Beenden der JVM ausführen können (z.B. Daten sichern usw.)

Der User kann eine Java Applikation auf mehrere Wege beenden oder abbrechen, z.B. auch über die Kommandozeile per STRG + C, was wir weder abfangen, noch beeinflussen können. Allerdings gibt es eine Möglichkeit, dass trotzdem ein bestimmter Code ausgeführt wird, wenn der User dies tut – die Shutdown Hooks.

Continue reading