Erste Demo der “Spherical Engine”

tranform_demo

Unsere erste Demo zeigt unser GameObject handling.

Nachdem Richard Petersen und ich uns vor drei Jahren überlegt haben ein Spiel zu programmieren, mussten wir mit viel Geduld und Mühen feststellen, dass wir viel zu oft an die Grenzen des PC’s stoßen. Aus diesem Grund haben wir uns vor ungefähr eineinhalb Jahren überlegt eine Engine zu entwickeln und unseren Traum vom eigenen Spiel umsetzen zu können.

Die Grundlage der Engine ist fertig gestellt und ermöglicht eine einfache Verwaltung von einer großen Anzahl an Objekten in einer 3D-Szene. Mit verschiedene Techniken werden detaillierte Objekte nur in der Nähe angezeigt wohingegen grobe und große Objekte noch in weiter ferne erkennbar sind. Darüber hinaus gibt es die Möglichkeit, ein Objekt in den Hintergrund zu setzen, wie hier in dem Screenshot der Nachthimmel.

Die Game-Engine ist in Java geschrieben und verwendet die LWJGL-API für das Rendern mittels OpenGL. Nach dem Start mit OpenGL 1.0 basiert die Engine heute auf OpenGL 3.1 und ist auch nicht mehr abwärtskompatibel. Diese Entscheidung beruhte darauf, dass heute (so gut wie) jeder Computer mindestens OpenGL 3.3 unterstützt und dass mit der Version 3.1 einige Funktionen “deprecated” wurden, so zum Beispiel die Funktionen der Fixed-Pipeline. Entsprechend muss alles mit Shadern implementiert werden.

Heute können wir mit Stolz unsere erste Demo unserer Engine präsentieren. Diese erste Beispielszene soll die Funktionsweise der Transformation der Objekte, sowie deren Abhängigkeiten vorstellen. Die Objekte werden in Bäumen gespeichert. Durch Transformation eines Elternknotens werden von uns die Kindknoten ebenfalls entsprechend transformiert damit das Transformationsverhältnis von Eltern zu Kind beibehalten wird und nicht selbst berechnet werden muss. Gleichzeitig sind die Koordinaten der Kindknoten abhängig vom globalen Koordinatensystem und nicht vom Koordinatensystem der Elternknoten, damit trotz dieser Abhängigkeit jedes Objekt beliebig transformiert werden kann.