Projekt Asteroids

Aus DGL Wiki
Wechseln zu: Navigation, Suche

Projekt: Asteroids

Kurzbeschreibung

Asteroids ist ein Remake des alten Klassikers „Comet“ für 1 bis 4 Spieler. Die Spieler können entweder über Netzwerk spielen oder sich eine Tastatur teilen, was den Spaßfaktor um Mengen erhöht. Es gibt vier verschiedene Spielmodi in denen die Spieler entweder gemeinsam oder gegeneinander antreten können. Ziel des Spiels ist es nach Möglichkeit nicht von Asteroiden zerlegt zu werden, sondern den Spieß umzudrehen.

Im Programm kann der Spieler Effekte wie Partikelsysteme und dynamische Beleuchtung mit Hilfe des OpenGL-Lichtes bestaunen. Der Spieler kann anhand komplexer Menüs durch das Programm navigieren.

Zusamnmenfassung der Projektentwicklung

Die Vorgeschichte

Ursprünglich hatte ich vor - wahnsinnig wie ich bin - einen 3D-Weltraumshooter zu schreiben. Dessen Entwicklung musste ich jedoch einstellen, da ich schnell feststellen durfte, dass sowohl künstliche Intelligenz als auch funktionierender Netzwerkcode nicht gerade leicht zu verwirklichen sind. Was bringt einem also der schönste Shooter, wenn man weder gegen menschliche Spieler noch gegen eine KI spielen kann, die wenigstens halbwegs intelligent erscheint. Daraufhin habe ich mir vorgenommen erstmal mit einem kleineren Projekt zu beginnen.

Ich entschied mich ziemlich schnell für einen Comet-Clone, da hier sowohl KI als auch Multiplayermodus (z.B. an einem PC mit einer Tastatur) leichter zu verwirklichen sind. Bei diesem Projekt habe ich mich vor allem auf den Spielspaß konzentriert und die Grafikpracht nur als Dreingabe betrachtet.

Weiterhin verwendet dieses Programm keine speziellen Extensions, damit es auf so vielen Systemen wie möglich läuft.

Für die Entwicklung des Programms kam Delphi und OpenGL zu Einsatz. Zur Soundausgabe habe ich FMod verwendet. Die Tastatureingabe wird über die Win32-API gesteuert. Für den Netzwerkmodus wollte ich ursprünglich die Indy-Komponenten einsetzen. Allerdings bin ich damit auf einige Probleme gestoßen und habe mich daher für die Windows-Sockets entschieden. Unter anderem ließ sich das Programm mit den Windows-Sockets wesentlich besser debuggen.

Die Entwicklung

Die Entwicklung des Projektes erfolgte Schritt für Schritt. Das Grundspiel war schnell erstellt. Diverse Features wie eine Highscore, verschiedene Spielmodi, die Menüs und der Netzwerkmodus wurden von mir im nachhinein implementiert. Das hatte den Vorteil, dass das Programm von Beginn an spielbar war. Dies brachte jedoch leider auch Nachteile mit sich. So war beispielsweise die Implementation des Netzwerkmodus zu einem Hauptproblem geworden. Das Programm war von Anfang an nicht dafür ausgelegt worden. Nach zwei gescheiterten Versuchen einen Netzwerkmodus zum implementieren entschloss ich mich beim dritten Versuch das Spiel komplett neu zu schreiben. Das hat sehr viel Zeit gekostet und ich kann nur jedem empfehlen den Netzwerkmodus (soweit geplant) von Anfang an zu integrieren und immer wieder zu testen, ob der Netzwerkcode auch das tut, was er soll.

Auch die nachträgliche Integration der vier Spielmodi macht den Quellcode nicht gerade übersichtlicher und lässt ihn an einigen Stellen wie ein Flickwerk erscheinen. Meist unterscheiden sich die Modi nur in der Punkteverteilung, so dass eine nachträgliche Implementation recht einfach war. Wer aber Größeres vorhat, der sollte sich darüber vorher im klaren werden und sein Programm entsprechend auslegen. Generell gilt, dass eine nachträgliche Implementation von Features wesentlich mehr Zeit in Anspruch nimmt, als wenn man sich von Anfang an die Türen dafür offen gehalten hat. Ausnahmen bilden natürlich Dinge wie z.B. eine Highscore oder die Menüs.

Da ich das Projekt sehr früh vorgestellt habe, kamen auch sehr viele gute Ideen aus der Community, die das Programm wesentlich verbessert haben und zu dem gemacht haben, was es heute ist. Dazu zählen z.B. der dynamische Hintergrund, die Schilde der Spieler oder der zweite Asteroidentyp. Es gab noch wesentlich mehr gute Vorschläge. Hätte ich jedoch versucht alle Vorschläge umzusetzen würde ich Asteroids noch heute entwickeln.

Durch die frühe Veröffentlichung standen eine Vielzahl an Systemen zur Verfügung, auf denen das Programm getetstet werden konnte und da die Tester selbst Programmierer waren konnten sie häufig sehr hilfreiche Fehlerbeschreibungen- teilweise sogar mit Lösungsvorschlägen liefern.

Nach der Fertigstellung des Projektes habe ich ein Postmortem veröffentlicht in dem ich den Entwicklungsprozess des Programms beschreibe und Probleme anspreche, die während der Entwicklung aufgetreten sind. Jeder Interessierte kann sich zudem den Delphi-Sourcecode des Spiels herunterladen. Anhand des Codes kann man sehr schön nachvollziehen, wie man ein etwas umfangreicheres Projekt aufbauen könnte. Ich hoffe sehr, dass der eine oder andere noch etwas daraus lernen kann.

Links