Das Projekt wächst zusammen
Damit sind alle Grundlagen gelegt und die einzelnen Bestandteile können zu einem Ganzen zusammengefügt werden. Die Spiellogik ist in der Klasse GameScreen untergebracht. Während der Initialisierung wird ein scrollender Hintergrund erzeugt und ein Spielermodell als Sprite. Der Spieler kann das Flugzeug nach links und rechts bzw. nach oben und unten bewegen, weshalb diese Logik in einer extra Klasse untergebracht ist.
Die Darstellung der gegnerischen Flugobjekte übernimmt eine Komponente, die wie ein Partikelsystem arbeitet. Das bedeutet, dass die Komponente am Anfang vier Gegner instanziiert und sich um die Aktualisierung der Positionen kümmert. Sobald ein Gegner außerhalb des Sichtbereichs liegt oder abgeschossen wurde, recycelt die Komponente das Objekt und setzt eine neue Ausgangsposition fest. Dadurch verhindert die Klasse eine Instanziierung neuer Objekte, was auf der Xbox 360 zu Performanceeinbußen führen kann. Schuld ist die geänderte Logik des Garbage Collectors. Auf der Konsole läuft ein spezielles .NET Compact Framework, bei dem der Garbage Collector weniger häufig den Heap von unbenutzten Objekten bereinigt. Dadurch kommt es zu Speicherengpässen. Die Kollisionskontrolle zwischen dem Spieler und den Gegnern ist in der SpriteEmitter-Klasse hinter der Methode Collides verborgen. Die Methode erwartet eine Instanz des Spielers und prüft, ob zwischen dem Spieler und einem Gegner eine Kollision stattgefunden hat. Wurde eine Kollision registriert, wird der Gegner als zerstört markiert und dem Spieler Energie entzogen. Ist der Energielevel bei 0 angelangt, ist das Spiel vorbei. Ein neuer Bildschirm reiht sich in die Liste des Screen Managers ein und signalisiert dem Spieler das drohende Spielende.
Zur Darstellung der Geschosse wird dasselbe Prinzip angewendet, das bereits die SpriteEmitter-Klasse zur Verwaltung der Gegner benutzt. Eine fest vorgegebene Anzahl von Geschossen wird initialisiert und als Sprites gerendert. Die Projektile haben eine Lebenszeit von maximal drei Sekunden. Nach Ablauf dieser Zeitspanne gelangen sie in einen Queue von freien Elementen. Kollidieren die Projektile in der Zwischenzeit mit einem der Gegner, wird das gegnerische Flugobjekt zerstört und dem Spieler werden zehn Punkte auf sein Punktekonto überwiesen. Sowohl Projektil als auch der Gegner werden wieder als verfügbar gekennzeichnet. Alle Projektile werden von der Weapon-Klasse verwaltet, die eine Collides-Methode besitzt. Von jener Methode werden Sprite- Emitter-Objekte erwartet. Je Projektil findet eine Kollisionskontrolle mit allen Gegnern statt. Eine Optimierung ist dahingehend möglich, dass der Bildschirm in Regionen eingeteilt und verwaltet wird. Eine Kollisionskontrolle würde nur zwischen Objekten in derselben Region erforderlich sein (wer sich für die Details interessiert, sollte sich den Quellcode auf der Heft-CD näher anschauen).
Spielspaß auch auf der Konsole
Es dürfte am Anfang noch sehr ungewohnt erscheinen, dass sich ein am PC mit einem kostenlosen Werkzeug entwickeltes Spiel so ohne Weiteres auf eine echte Gamekonsole übertragen lässt (man könnte auch sagen, das ist eine kleine Sensation, denn wer sich jemals mit dem Gedanken getragen hat, Spiele für die Playstation oder eine andere Konsole zu entwickeln weiß, dass dies eine recht kostspielige Angelegenheit ist, und die „Ehre“ nur wenigen zuteil wird). Mit der Xbox 360 wird dieser Traum Realität.
Bevor der Spielespaß auf der Konsole beginnen kann, muss die Xbox 360 auf die Ausführung von XNA-Anwendungen vorbereitet werden. Es beginnt mit einer Formalität, die nichts mit Technik zu tun hat. Voraussetzung ist eine Mitgliedschaft im XNA Creators Club (diese kostet 49 Euro für vier Monate und 99 Euro für ein Jahr – alle Preisangaben ohne Gewähr) und eine Mitgliedschaft bei Xbox Live Silver. Letztere ist kostenlos und spiegelt sich nur in einer Registrierung des Spielernamens auf der Xbox 360 wieder. Die Anmeldung zum XNA Creators Club erfolgt direkt auf der Konsole (also der Xbox) über den Xbox-Live-Marktplatz und dort in der Rubrik Spiele | Alle Spieledownloads. Wurde der Punkt XNA Creators Club selektiert, zeigt ein weiteres Menü den Eintrag Mitgliedschaften an und den Download XNA Game Launcher. Diese Anwendung ist Voraussetzung für die Ausführung von XNA-Anwendungen auf der Konsole. Der XNA Game Launcher prüft beim Start, ob eine Creators Club- Mitglieschaft existiert und baut eine Netzwerkverbindung zum Computer auf, um die Daten zu übertragen.
Liegt der XNA Game Launcher auf der Konsole vor, wird über das Menü Settings | Generate Connection Key die Verbindung gestartet. Im XNA Game Studio Express wird der angezeigte Code im Dialog Tools | Optionen | XNA Game Studio Express | Add eingegeben. Nach der Bestätigung des Sourcecodes auf der Konsole und im XNA Game Studio Express ist die Entwicklungsumgebung fertig konfiguriert. Projekte werden immer über ein Netzwerk vom PC zur Xbox 360 übertragen. Die Spielekonsole wartet auf neue Daten, wenn im XNA Game Launcher der Menüpunkt Connect To Computer selektiert wurde. Über [F5] wird das Xbox-360Game-Projekt kompiliert und der Datentransfer gestartet. Wurde die Datenübertragung abgeschlossen, startet die Konsole automatisch die Anwendung. Wird das Projekt im Debug- Modus ausgeführt, stehen alle Möglichkeiten des Debuggers auch Remote zur Verfügung.
Weiter in 3D
Nachdem in dieser Folge der Einführungsserie zum XNA Framework ein zweidimensionales Spiel (hoffentlich) erfolgreich umgesetzt wurde, geht es in der nächsten Folge der XNA-Einführung in der dritten Dimension weiter. Dabei wird das in dieser Folge vorgestellte Spiel auf 3D „umgestellt“. Es werden die grundlegenden Begriffe der 3D-Programmierung erklärt und es wird gezeigt, wie ein vorhandenes 3D-Modell gerendert wird und wie ein Terrain mithilfe eines eigenen Content Processors das Licht der 3D-Welt erblickt.
Jens Konerow ist Microsoft Student Partner an der Universität zu Lübeck und Entwickler bei KEEP IT SIMPLE in Hamburg.




