In diesem Projekt haben wir ein kleines Autorennspiel gebaut.
- Steuerung des Autos
- Straßenrundkurs
- Checkpoints und Ziellinie
- Rundenzeiten und Gesamtzeit
- Inkl. Zeitdifferenz zu Rekord
- Geist (zweites Auto), den Rekord repräsentiert
- Skybox
↑
forwärts fahren (beschleunigen)↓
rückwärts fahren (bremsen und negativ beschleunigen)←
nach links lenken→
nach rechts lenkenleertaste
bremsen Wird weder positiv noch negativ beschleunigt, so wird leicht gebremst.
Die Straße, Checkpoint, Ziellinie und Landschaft wurden mit Maya erstellt und als .fbx 3D-Modell exportiert und dann mit ASSIMP in das Programm eingebunden.
Auf der Rennstrecke gibt es eine Ziellinie und einen Checkpoint, diese werden genutzt um die Rundenzeiten und Zwischenzeiten zu ermitteln. Die Zeiten werden auf der Konsole ausgegeben. Nach einem kompletten Rennen, was standardmäßig aus 3 Runden besteht wird die Gesamtzeit mit der aktuellen Bestzeit verglichen, falls noch keine Bestzeit existiert oder die aktuelle Zeit schneller ist wird der Rekord in einer Datei gespeichert/überschrieben. In der Datei werden die Rundenzeiten und die Model-Matrizen der Fahrt mit den zugehörigen Zeitstempeln gespeichert.
Durchfahren von Checkpoints und der Ziellinie (sofern alle Checkpoints der Runde durchfahren sind) führt zu Konsolenausgaben mit Zeitangaben. Da alle Runden vollendet wurden und noch kein Rekord Vorlag wird beim Beenden des Programms die Fahrt in dem unter dem angegebenen Pfad gespeichert und wird bis zur aktualisierung von dem Geist wiederholt werden.
Zeitdifferenzen beim vollenden von Runden werden in der Konsole ebenfalls ausgegeben. Da die Gesamtzeit geringer als die bisherige Bestzeit war wird die Rekord-Datei aktualisiert.
Existiert ein Rekord, so wird dieser durch ein zweites Auto (den "Geist") repräsentiert, welches anhand der in der Datei gespeicherten und Zeitstempeln zugeorndeten Model-Matrizen bewegt wird.
- Benutzte Libraries
- glfw
- glew
- SOIL
- ASSIMP
- Resourcen
- open.gl
- learnopengl.com
- SonarSystems/Modern-OpenGL-Tutorials
- Verwendet beim Modelloading (Code Modelloading)
- Verwendet für die Skybox (Code Skybox)
- Car Model
- Model des Autos, aus der kostenlos verfügbaren Blender Datei exportiert.
- Stackoverflow Read floats from a .txt file
- Verwendet um istringstream zu verstehen für das Einlesen der Datei, die den Geist steuert (Methode: CarGhost::readRecordFile(...))
- Code aus den Übungen