Simon Szustkowski

Ein Blog über alles, was mir gerade so durch den Kopf geht

Mar 26, 2010

XNA Gaming Night Dortmund 2010

Was machen Geeks, wenn die Sonne scheint? Richtig, sich in der Uni verkriechen, und nächtelang irgendwelche Spiele programmieren.

So auch gestern. Da war nämlich die XNA Gaming Night. Eine Veranstaltung der Microsoft Student Partner, die interessierte Teilnehmer einen kurzen Einblick in die Spieleprogrammierung mit Hilfe von C# und dem XNA Framework bieten sollte.

Trotz einiger technischer Startschwierigkeiten bekamen wir dann einen nicht ganz zweistündigen Vortrag über die Grundlagen der 2D-Programmierung zu hören, bevor es dann los ging.

Unser Ziel war, ein einfaches Spiel zu programmieren, mit dem wir auch fertig werden konnten. Die Wahl ist auf Pong gefallen. Während die anderen Gruppen ebenfalls nette Spiele schrieben, die zum einen grafisch ansprechend waren, aber völlig ohne Konzept, bzw. von der Programmierung zu komplex, kamen wir mit der Zeit gut zurecht. Lediglich ein anderes Spiel wurde bis zu unserer Abgabe einigermaßen fertig, nämlich FDP-Hero. Hierbei fielen verschiedenfarbige Geldbündel vom Himmel, und man musste auf dem XBox-Controller die richtige Farbe drücken, damit die Geldbündel ins Parteisäckel fielen, und man einen dummen Spruch von Guido aufs Auge gedrückt bekam.

Sonstige Spiele waren sowas ähnliches wie Canabalt, so etwas wie R-Type, nur dass man den Hindernissen ausweichen musste, ein Space-Invaders-Klon, und einiges anderes mehr, was sich aber noch in der Entwicklungsphase befand.

Bei der Entwicklung von unserem Spiel hat sich zunächst das Problem ergeben, dass @rene_dev sein Windows nur in einer VM am Start hatte, und da erst die 3D-Beschleunigung nicht zum laufen kriegte. Ja, Pong ist 2D, aber da es auf .NET und DirectX basiert, muss merkwürdigerweise auch eine 3D-Beschleunigung vorhanden sein. Da ich mittlerweile den übelsten Spaghetticode geschrieben hatte, haben wir das Projekt aufgesplittet. Mein Main Goal war: Fertig werden. Renés Main Goal war: Sauberen Code schreiben. Was sich irgendwie in sehr seltsamen Verhaltensmustern in der Ballphysik niederschlug. Nichtsdestotrotz war es sehr amüsant, mal wieder was richtiges zu coden, was sich nachher auch in einem echten Kompilat niederschlug, und nicht noch immer wieder interpretiert werden musste.
Gegen 3 Uhr hatte ich dann auch die Punkteanzeige und den Sound implementiert. Anzumerken ist, dass nur die Sounddateien aus fremden Quellen stammen, alles andere haben wir eben from scratch entworfen. Gut, die Schriftart lag uns als TrueType Font vor, wir mussten sie dann noch in ein Spritefont konvertieren.

Abschließend kann ich sagen, dass das programmieren mit XNA wirklich sehr einfach ist. Wir kamen mit kaum Vorkenntnissen in die Veranstaltung, und haben jetzt ein voll funktionsfähiges Spiel entwickelt. Das bringt schnelle Erfolgserlebnisse. Schade, dass es sowas nicht für den Mac gibt.

So, und zu guter letzt möchte ich euch das Spiel auch nicht vorenthalten. Die Steuerung ist recht einfach, mit Q und A steuert ihr das linke Paddle, mit O und L das rechte. Mit Space startet ihr den Ball. Punktezähler gehen bis unendlich, wobei die Grafikengine euch da schon zurechtweisen wird, wenn die angezeigte Zahl größer als die Canvas ist.
Hier könnt ihr euch dieses wahrhaft umwerfende Spiel downloaden. Braucht wahrscheinlich aktuellstes DirectX und .NET, läuft aber auch noch auf XP.