
Das Ende des dritten Tages bringt die erste (einigermaßen) spielbare Version. Einigermaßen leider nur deswegen, weil die Kollisionsabfrage bisher absolut nicht zuverlässig funktioniert und auch die Explosionen noch nicht ganz an der richtigen Stelle gerendert werden.
Um die Kollisionsabfrage sowie die Explosionen kümmere ich am morgigen Tag. Heute lag der Focus darin, dem Spielerraumschiff das Schießen beizubringen sowie den bisherigen drei Gegnertypen jeweils ihr individuelles Bewegungsmuster zu verpassen. So fliegen Nightcrawler, Poomla Titan und Viper (benannt nach den Namen ihrer Erschaffer) noch nach relativ einfachen Mustern, aber der Spieler soll ja nicht gleich zu Beginn des Spiels völlig überfordert werden.
Für die Positionierung der Gegner im Level habe ich mir drei verschiedene Möglichkeiten überlegt:
- Die Gegner sind an festen Stellen im Level montiert und warten dort auf Ihren Einsatz, während die Spielkamera mit dem Spierschiff mitscrollt. Sobald die Kamera in die Reichweite eines Gegners kommt, wird dieser aktiviert und beginnt in seinem typischen Bewegungsmuster auf den Spieler loszufliegen - so weiß ich, dass es zum Beispiel bei Takatis von Poke 53280 gemacht wird.
- Kamera und Spielerschiff bleiben stehen. Die Gegner beginnen an ihren festen Startpunkten, die weiter vom Spieler entfernt sind desto später sie erscheinen sollen und fliegen von dort aus in ihrem Bewegungsmuster auf den Spieler zu bis sie irgendwann im Bildschirm erscheinen.
- Kamera und Spielerschiff bleiben stehen und die Zeit seit Beginn des Levels wird gemessen. Das Spiel verwaltet intern eine Liste der zu erscheinenden Gegnertypen, ihrer Startposition und zu welchem Zeitpunkt sie kurz außerhalb der Kamerasichtweite spawnen. Der Eindruck von Bewegung wird durch die im Hintergrund durchlaufenden Sterne simuliert.
Lösung 1 ist ein wenig aufwändiger zu implementieren, da die Kamera bewegt wird und alle Spielobjekte demnach über die Kamerabewegung informiert werden müssten. Lösung 2 hingegen wäre die ungeschickteste von allen, denn sie kostet gewaltig Rechenleistung: Ein Level kann bis zu hunderte Gegner enthalten und für alle diese müsste ihr jeweils gültiges Bewegungsmuster berechnet werden, selbst wenn die Feinde noch gar nicht zu sehen sind.
Ich habe mich also für Lösung 3 entschieden, da sie sehr schnell zu implementieren war und nur für die aktuell auf dem Bildschirm sichtbaren Feinde Berechnungen durchführen muss. Die Feinde werden kurz außerhalb des Bildschirms erschaffen und sobald sie am Spieler links aus dem Sichtbereich heraustreten, werden sie von der Engine "entsorgt" um Platz für neue Gegner zu machen.
Nun ist der erste Teil des Levels fertig und J-Type erwacht langsam zum Leben: Allerlei Gegner stürmen bereits in Formation auf den Spieler zu und dieser kann sich mit seiner ersten einfachen Waffe zur Wehr setzen. Da das aber alles, wie eingangs erwähnt, noch nicht 100%-ig funktioniert, kann ich im Moment leider nur ein paar Bilder zeigen:

Abbildung: Ein Geschwader Vipers im Sturzflug

Abbildung: Ein Konvoy aus Poomla Titans

Abbildung: Eine Staffel Nightcrawler im Formationsflug
Bis morgen!

