Bei Asteroids3D handelt es sich um ein traditionelles Weltraumschießspiel. Ein Raumschiff befindet sich in einem Feld sich bewegender, rotierender Asteroiden. Ziel des Spieles ist es alle Asteroiden abzuschießen ohne vorher von den Asteroiden getroffen und zerstört zu werden.
Asteroids 3D ist eine 3D Version des Atariklassikers aus dem Jahre 1979; gleich seinem Vorbild ist keine Hintergrundstory vorgesehen.
Der Scenegraph wurde als n-ärer Baum implementiert. Die Berechnung der Objektdaten und die Zeichnung der Objekte sind dabei getrennt implementiert.
Die Berechnung spaltet sich in 2 Einzelschritte auf "Calculate" und, danach, "CalculateLater". Der Unterschied ist, dass im Berechnungsschritt "CalculateLater" Objekte aus dem Baum entfernt werden können.
Die Zeichnung der Objekte spaltet sich ebenfalls in 2 Einzelschritte auf "draw" und, danach, "drawTransparent". Der Unterschied ist, dass im Zeichnungsschritt "drawTransparent" die Objecte von "hinten" nach "vorne" gezeichet werden. Weiters können noch, ganz zuletzt, sogenannte "ScreenElements" direkt auf das bereits vollständig transformierte Bild gezeichet werden.
Zusätzlich kann der Scenegraph relativ einfaches kegelförmiges View Frustum Culling durchführen.
Für den Sound wurde die Libary Fmod ( www.fmod.org ) verwendet. In der Soundbehandlung wird zwischen kontinuirlichen (also loopbaren Sounds wie Hintergrundmusik oder Laser und Soundeffekten wie Schüsse oder Nachladegeräusche unterschieden. Zusätzlich gibt es ein gesondertes Format für das zeitlich beschränkte Abspielen von kontinuirlichen Sounds und für das Ein und Ausfaden von Sound, beides Funktionen die in Fmod nicht vorhanden sind und deshalb von uns selber realisiert wurden.
Die Collision Detection wurde hauptsächlich mit Bounding Spheres implementiert. Die einzige Ausnahme ist der Laser. Er wird im Rahmen der Collision Detection als Zylinder räpresentiert. Es gibt spezielle Objekte im Scenegraphen die mit einer entsprechenden Implementierung ausgestattet sind. Diese können, innerhalb des sie enthaltenden Scenegraphen, auf Kollision getestet werden.
Bei der Physik Engine kam die Formel für die Energieerhaltung beim elastischen Stoß (liegt zum Beispiel vor bei Billardkugeln) zum Einsatz (Quelle).
Kameras sind weitere spezielle Objekte im Scenegraphen und können sich in ihm beliebig bewegen. Wenn einer Kamera mitgeteilt wird das sie die Projektionsmatrix aufbauen soll, stellt sie ihre Position im Scenegraphen fest und setzt die Projektionsmatrix ensprechend.
Es werden die Objekte von X-Files in unser eigenes Dateiformat konvertiert um
dann im Spiel schnell eingelesen zu werden. Es können
dabei Objekte mit mehreren Texturen verwendet werden.
Der Scenegraph unterstützt 3 verschiedene Arten von Lichtquellen, Hintergrundlicht, direktionales Licht und positionales Licht. Maximal acht Lichtquellen direktionaler oder positionaler Natur können für ein Object gleichzeitig eingeschalten sein. Hintergrundlichtquellen sind beliebig viele erlaubt.
Direktionale und positionale Lichtquellen hängen im Scenegraphen und können sich in ihm beliebig bewegen. Hintergrundlichtquellen wirken bloß durch ihre Existenz im Speicher auf die Beleuchtung der Scene ein.
Es gibt spezielle Objekte im Scenegraphen deren Materialeigenschaften gesetzt werden können. Bei allen Objecten ist die Wirkung der glColor Aufrufe durch GL_FRONT_AND_BACK und GL_AMBIENT_AND_DIFFUSE gegeben.
Das Raumschiff, die Skybox und alle Asteroiden sind texturiert.
Es gibt zwei statische Lichtquellen im Spiel. Ein Hintergrundlicht und eine direktionale Lichtquelle mit fixer Ausrichtung im Raum. Weiters ist jedes im Projektil eine Lichtquelle für sich, wobei die Projektil-Lichtquellen nur für jene Spielelemente aktiviert werden, die ihnen nahe genug sind. Eine zusätzliche Lichtquelle befindet sich am Ende des Lasers wenn er einen Asteroiden trifft.
Die beleuchteten Spielelemente sind die Asteroiden und das Raumschiff.
Die nicht beleuchteten Spielelemente sind die Projektile, die Raketen, der
Laser, der Hintergrund, die Lebensbalken, die Staubwolken und die Vapour
Trails.
Windowmanagement: GLUT (Version 3.7.6)
Soundengine: FMOD (Version 3.7.2.0)
Asteroids3D kann durch Ausführen der Datei /bin/Asteroids3D.exe gestartet werden.
Zum Benutzen des Spiels ist unbedingt eine Maus erforderlich!
Während des Spielens kann Asteroids3D wie folgt gesteuert werden:
nach oben Taste | Raumschiff beschleunigt |
nach unten Taste | Raumschiff beschleunigt rückwärts |
nach links Taste | Raumschiff gleitet nach links |
nach rechts Taste | Raumschiff gleitet nach rechts |
Maus nach oben | Raumschiff dreht hinauf |
Maus nach unten | Raumschiff dreht hinab |
Maus nach links | Raumschiff dreht nach links |
Maus nach rechts | Raumschiff dreht nach rechts |
ESC | Spielmenü wird aufgerufen |
P | Spiel wird pausiert/wieder aufgenommen |
F1 |
Umschaltung Fenster/Vollbild |
F2 |
Hintergrundmusik 1 |
F3 |
Hintergrundmusik 2 |
F4 |
Hintergrundmusik 3 |
+ |
Hintergrundmusik lauter stellen |
- |
Hintergrundmusik leiser stellen |
linke Maustaste |
Abfeuern von Projektilen |
rechte Maustaste |
Abfeuern einer zielgelenkten Rakete |
mittlere Maustaste |
Feuern mit dem Laser |