Waffen
Ingmar Ludwig
Waffen bzw. Projektile spielen im Space Game eine zentrale Rolle, da sie die Hauptinteraktionsmöglichkeit zwischen Spieler/-in, Umwelt und Gegnern darstellen. In diesem Teil sollen die wichtigsten Eigenschaften der zum Einsatz kommenden Waffen kurz vorgestellt werden. Zunächst wird dafür auf die allgemeinen Eigenschaften der Waffen eingegangen, dann auf die einzelnen Waffengattungen.
Struktur der Waffen im Space Game
Da das Vorrausahnen der Flugbahn des Gegners ein entscheidendes Spielelement darstellt, wird jedes Projektil einzeln erstellt und in jedem Aufruf der Render-Methode gemäß seiner Geschwindigkeit bewegt. So kann ein fliegendes Projektil vom Spieler bzw. der Spielerin längere Zeit beobachtet werden.
Die Lebenszeit des Projektils lässt sich in drei Phasen unterteilen:
Abschuss des Projektils
Vor Abschuss eines Projektils ist zu prüfen, ob noch genügend Munition vorhanden ist und ob die Cool-Down-Zeit seit dem letzten Schuss eingehalten wurde.
Wenn diese Bedingungen erfüllt sind, wird der zu der jeweiligen Waffe gehörende Sound abgespielt, die verfügbare Munition verringert, der Cool-Down-Timer auf Null gesetzt und das Projektil erzeugt. Das Projektil selbst besteht aus zwei Teilen: der grafischen Repräsentation und einem unsichtbaren, vereinfachten Körper für die Kollisionsüberwachung, der der grafischen Repräsentation als Kind angehängt wird.
Anschließend wird das Projektil entsprechend der Position des Schiffes orientiert und zur Szene hinzugefügt. Im letzten Schritt muss das erzeugte Projektil noch zur Liste der überwachten Projektile hinzugefügt werden, damit es korrekt gerendert wird.
Rendern
In der Waffen-Render-Methode werden die für jeden Frame notwendigen Veränderungen an den Projektilen vorgenommen.
Die Hauptaufgabe der Methode ist es, die überwachten Projektile gemäß ihrer Geschwindigkeit zu versetzen und beim Erreichen der maximalen Reichweite aus der Szene zu entfernen. Bei einer Kollision wird das Entfernen des Projektils durch die Kollisionsüberwachung aufgerufen.
Da die Framerate je nach Leistung des verwendeten Rechners oder nach Komplexität der Szene stark schwanken kann, ist eine Zeitmessung notwendig. Verwendet wird die Clock von Three.js, mit der die Dauer zwischen zwei Frames gemessen wird. Damit kann ein Projektil unabhängig von der Framerate mit konstanter Geschwindigkeit bewegt werden.
Um zu überprüfen, ob die maximale Reichweite überschritten wurde, wird in jedem Durchgang für jedes Projektil die Distanz zum Schiff berechnet. Ist diese größer als die maximale Reichweite, wird das Projektil entfernt. Dies widerspricht zwar der Logik, dass die Reichweite vom Abschussort bestimmt werden müsste, verbessert aber gegenüber der anderen Variante die Spielbarkeit, da sonst bei hoher Geschwindigkeit des Schiffes Projektile kurz vor dem Schiff verschwinden würden.
Entfernen eines Projektils
Soll ein Projektil entfernt werden, müssen die einzelnen Teile in der richtigen Reihenfolge gelöscht werden. Zunächst wird der für die Kollisionsüberwachung erstellte vereinfachte Körper gelöscht. Im Anschluss wird das Objekt aus der Szene entfernt und schließlich aus der Liste der überwachten Projektile gestrichen.
Arten von Projektilen
Nach den allgemeinen Eigenschaften soll nun auf die Besonderheiten der sechs im Spiel vorkommenden Projektilarten eingegangen werden.
Hauptlaser
Der Hauptlaser stellt die Standardwaffe des Spiels dar und ist mit unendlich viel Munition ausgestattet, da das Spiel ohne Waffe nicht sinnvoll spielbar ist. Der Laser erzeugt nur geringen Schaden und hat eine kurze Cool-Down-Zeit.
Standard-Rakete
Die Standard-Rakete dient als die Sekundärwaffe, für die häufig Munition gefunden werden kann. Der durch die Rakete hervorgerufene Schaden ist hoch, die Cool-Down-Zeit relativ lang.
Die Rakete hat die Besonderheit, dass bei dem Zusammenstoß mit einem anderen Objekt oder beim Erreichen einer bestimmten Distanz zum Schiff eine Explosion ausgelöst wird.
Explosion
Aus Gründen der leichteren Zusammenarbeit mit anderen Teilen des Spiels wird auch die Explosion der Projectiles-Liste hinzugefügt und über diese verwaltet. Die Explosion besteht aus einem animierten Partikelsystem zur Darstellung für den Spieler bzw. die Spielerin und einer großen unsichtbaren Kugel für die Analyse auf Kollisionen, die nach kurzer Zeit entfernt wird.
Laser-Maschinengewehr
Das Laser-Maschinengewehr verschießt nach einmaligem Auslösen über einen kurzen Zeitraum hinweg viele einzelne Geschosse, die eine gewisse Streuung aufweisen. In der Realisierung werden dafür im Abstand von jeweils 0.05 Sekunden sechs Einzelschüsse abgegeben, die aus jeweils vier Kugeln bestehen.
Shockwave
Die Shockwave wurde zur Erhöhung der Spieldynamik als Spezialwaffe für ausweglose Situationen eingeführt. Das Spielerschiff sendet dabei eine Druckwelle um sich selbst aus, die allen Objekten in einem bestimmten Umkreis einen relativ starken Schaden zukommen lässt. Realisiert wird dies, wie auch bei der Explosion, durch eine unsichtbare Kugel in Verbindung mit einem Partikelsystem.
Lenkrakete
Die Lenkrakete stellt eine besonders starke Waffe dar, die vergleichsweise selten eingesammelt werden kann. Nach einer kurzen Abschussphase, in der die Rakete geradeausfliegt, wird der am nächsten liegende Gegner aus der entsprechenden Liste herausgesucht und zielgerichtet angesteuert. Sobald sich die Rakete diesem genügend angenähert hat, wird eine Explosion ausgelöst. Falls gerade kein Gegner vorhanden ist, verhält sich die Lenkrakete wie eine Standard-Rakete.