GEIL0

Ein PC-Spiel entstanden aus einem Universitätsprojekt im Fach “Computergrafik”

Bei diesem Projekt handelt es sich um ein Spiel, das in C++ mit OpenGL entstanden ist. Dabei wurde keine game engine benutzt, alle shader, mesh transformations, Kameras, Projektionen, Beleuchtungseffekte und shading, Texturen und co. wurden den Übungsvorgaben entsprechend manuell erstellt. Das Projekt wurde schließlich mit 99/100 Punkten bewertet.

Features

 

Cubic Hermite Splines

Das Spiel bedient sich einer Mechanik, die normalerweise in rail shootern eingesetzt wird. Dabei werden SpielerInnen auf Schienen durch einen Level bewegt, anstatt sich frei bewegen zu können. In Rennspielen wie F-Zero (welches dieses Projekt inspiriert hat) werden Fahrzeuge auf einer Schiene bewegt. Allerdings kann man sich normal auf die Schiene oder entlang der Schiene frei in einer Box bewegen. Das Fahrzeug steht dabei immer in Richtung der Schiene geneigt.

curves.gif

In diesem Projekt konnte ich die Funktionalität mittels Cubic Hermite Splines implementieren. Die Map besteht aus vier Cubic Hermite Splines, welche überlappende Start- und Endpunkte haben. Wird der Bewegungsinput nach vorne gegeben, wird das Fahrzeug entlang der aktuellen Spline bewegt. Mit Bewegungsinput nach links oder rechts, wird das Fahrzeug normal auf die Kurve verschoben. Das dient dem Ausweichen.

Finite_difference_spline_example.png

Videotexturen

Im Projekt wurden Videotexturen verwendet. Die Texturen wurden auf einen Würfel gemapped und mit 30fps wiedergegeben. Dabei wurde keine library verwendet, stattdessen wurden 90 frames eines Videos (welches aus dem Spiel F-Zero GX, der Inspiration für dieses Projekt, stammt) im assets folder des Projekts gespeichert und über eine delta time Berechnung angepasst an die frame rate des Spiels mit genau 30fps wiedergegeben.

cel-shading

Zusätzlich zum “normalen” Shading wurde ein cel-shading shader implementiert. Die Farbstufen im Screenshot sind auf 30 reduziert, was, den Tests während der Entwicklung zufolge, für diese Texturen und Modelle ungefähr der sweet spot für einen ansprechenden Effekt sein dürfte.

Bloom

Ein Bloom shader wurde implementiert um Lichtquellen “strahlender” wirken zu lassen.