Schlagwort-Archive: Quellcode

Nur ein paar Wochen ist es her, als der neueste Titel aus dem Hause id Software, „Rage„, veröffentlicht wurde. Nun zeigt man sich dort großzügig: John Carmack, Mitgründer und Chefentwickler von id Software veröffentlichte gestern den Quellcode zum First-Person-Shooter „Doom 3„, den er zwischen 2000 und 2004 entwickelte. Nachdem es zuvor Befürchtungen gab, ein Teil des Algorithmus zur Schattenberechnung könne Patentrechtsklagen nach sich ziehen, setzte er sich kurzerhand noch einmal an sein betagtes Kultwerk und schrieb einen Workaround, der die als „Carmack’s Reverse“ bekannte Berechnungsweise ersetzt. Laut ihm seien nur eine Handvoll Zeilen bearbeitet worden.

Den Quellcode des in C++ geschriebenen Gruselshooters kann man auf der extra angelegten GitHub-Seite herunterladen. Das Paket ist 9,1 MB groß und umfasst – bis auf besagten Depth-Fail-Algorithmus – den gesamten Quellcode, der nötig ist, um eine ausführbare Datei zu erhalten. Spieldateien sind logischerweise nicht enthalten, da Doom 3 auch weiterhin nicht Freeware ist. Entpackt wiegen die Quelldateien ungefähr 35 MB. Für das Kompilieren wird Microsoft Visual Studio 2010 empfohlen. Das DirectX SDK ist zwingend erforderlich.

Carmack, der leider seit einigen Jahren Mitglied der Apple-Sekte … äh, Verzeihung, bekennender Apple-Sympathisant ist, hat sich mit Wolfenstein 3D, Doom und Quake einen Namen als inoffizieller Vater der First-Person-Shooter gemacht, obwohl er auch für sehr bekannte 2D-Jump’n’Run-Spiele wie Commander Keen verantwortlich ist. Das Spezialgebiet des genialen Spieleentwicklerveteranen sind Game-Engines – die meisten seiner Werke reizten die vorhandene Technik in jeder Hinsicht aus. Man schreibt ihm sogar zu, mitverantwortlich für die Verbreitung von Grafikbeschleunigerkarten Mitte bis Ende der 90er Jahre gewesen zu sein.

Persönlich halte ich die Veröffentlichung des Quellcodes von Doom 3 für einen ganz großen Gewinn, da die Technik hinter dem Spiel sich auch heute noch sehen lassen kann. Erwartungsgemäß werden sich fleißige und talentierte Programmierer finden, die sich den Quellcode vornehmen und ihn verbessern oder auf dessen Basis neue Spiele entwickeln. Carmack macht das einzig richtige in meinen Augen: Anstatt seine Arbeit vergammeln zu lassen, gibt er sie frei und macht sie für andere nutzbar. Wenn doch nur alle so denken würden.

Es gibt Neuigkeiten von Spacola Eclipse. Leider keine bahnbrechenden Neuigkeiten, aber immerhin. Aus irgendeinem mir bislang unerfindlichen Grund habe ich zur Zeit genug Motivation um wieder relativ intensiv an meinem kleinen Remake zu arbeiten. Die letzten Monate habe ich mir den Quellcode immer mal wieder angesehen und ein paar Verbesserungen eingefügt, aber ich habe mich konsequent davor gedrückt, neue Kernfeatures einzubauen, die dringend nötig wären. So darf ich nun (stolz) das Ergebnis der letzten drei Tage präsentieren:

In Spacola Eclipse darf jetzt scharf geschossen werden. Ich habe das Schießen endlich implementiert. Für drei Tage Arbeit ist das mickrig, sagt ihr? Ja ist es. Aber wenn ihr die Mathematikprüfungen im Studium gerade so bestanden habt (so wie ich), dann habt ihr vielleicht eine Vorstellung davon, wie mühsam es ist, sich trigonometrische Operationen, Vektorarithmetik und Koordinatensystemumwandlungen aus dem Kopf herzuleiten ohne danach zu googlen oder ein Mathebuch herzunehmen – vor allem dann wenn die letzte Mathematikvorlesung schon ein paar Jahre her ist. Alles was ich hier mache, lerne ich durch Trial and Error. Wenn ein Algorithmus nicht funktioniert, dann nehme ich ein Stück Papier zur Hand und überlege mir eine Lösung.

Leider gibt es noch nichts worauf geschossen werden kann. Die Gegnersprites sind zwar längst angelegt, aber die Gegner-KI ist praktisch noch „leer“. Zu diesem Zweck hab ich außerdem eine abstrakte Klasse für Gegner angelegt und die wichtigsten Methoden definiert. Leider ist es extrem schwer, das Gegnerverhalten rein aus der Beobachtung des Ergebnisses nachzubilden – also wenn man nicht weiß, was im Hintergrund alles passiert. Ich kann nur versuchen, etwas zu schreiben, das dem erwarteten Verhalten nahekommt.

Der erste Gegner wird der (von mir so bezeichnete) „Peashooter“ sein. Aus dem Handbuch des Originals ist der Name des Schiffs nicht ersichtlich, also hab ich ihn genau so genannt wie er aussieht – wie diese eine Pflanze aus „Plants vs. Zombies“. Er ist einer der wenigen Gegner, die auf den Spieler feuern können, und so ziemlich der erste, dem man im Spiel begegnet.

Alle Welt freut sich über Duke Nukem Forever, das morgen erscheinen wird. Ich dagegen richte mein Augenmerk wieder einmal auf die Klassiker. Die Quellcodes für Duke Nukem 3D und Shadow Warrior, den wohl bekanntesten Spielen auf Basis der Build-Engine, sind schon seit Jahren frei zugänglich und daher gibt es inzwischen sowohl großartige 1:1-Windows- und Linux-Portierungen der alten DOS-Spiele, als auch weiterentwickelte Versionen mit höheren Auflösungen und detaillierteren Texturen. Für die anderen Build-Engine-Spiele wie etwa Blood oder Redneck Rampage scheinen die Quellcodes dagegen verloren, und so bleibt einem bislang nur DOSBox um sie starten zu können.

Allerdings gibt es jemanden, der einen recht erfolgreichen Versuch unternommen hat, sich der Sache noch anzunehmen und Redneck Rampage von Xatrix Entertainment nativ auf modernen Betriebssystemen spielbar zu machen, ohne gleich einen kompletten Rechner emulieren zu müssen. eRampage ist eine modifizierte Version von eDuke32, die dahingehend verändert wurde, dass sie mit den Spieldaten von Redneck Rampage laufen kann. Dies ist nur deshalb möglich, weil die Spiele alle mit einer mehr oder weniger veränderten Version der Build-Engine von Ken Silverman laufen. Je größer die Unterschiede, desto schwieriger wird die Modifikation. Glücklicherweise scheinen Redneck Rampage und Duke Nukem 3D untereinander über weite Strecken kompatibel zu sein, was die Korrekturarbeiten reduziert. Da der Quellcode von Redneck Rampage nicht vorliegt, muss man eben solche Tricks anwenden. Streng genommen ist das also eine Version von Duke Nukem 3D, die mit einer Redneck Rampage Total Conversion gestartet wird.

Diesen nicht unbedingt kleinen Unterschied zu einem echten Windows-/Linux-Port erkennt man beim Spielen leider recht häufig. Es gibt einige Grafikfehler zu verdauen, die Spielmechanik ist nicht dieselbe, Gegner verhalten sich teilweise anders, außerdem ist der Spieler so groß wie ein ganzes Stockwert und heißt standardmäßig „Duke“. Viele Leveldaten sind nur mit Modifikationen problemlos spielbar, sonst muss man mit Abstürzen rechnen. Wenn man von den vielen kleinen und größeren Schnitzern absieht, wird man allerdings viel Freude daran haben. Auch die Addons (kurz „Rides Again“ und „Route 66“) lassen sich damit spielen. Ein Vorteil ist die weiterentwickelte Grafikengine, die auch größere Auflösungen erlaubt und insgesamt moderner wirkt.

Den Code von eRampage und die Windows Binaries kann man auf der Webseite des Projekts herunterladen. Das letzte Update ist leider über ein Jahr alt, daher ist nicht ganz klar, ob es überhaupt noch weiterentwickelt wird.

Ein kleiner Hinweis zu einem Webfundstück, über das ich kürzlich gestolpert bin. Möchte ich keinem vorenthalten, der sich Amiga-Dauerfeuerkämpfer und gleichzeitig Programmierer schimpft: Es ist der Quellcode von „Alien Breed 3D II: The Killing Grounds„, dem 1996 erschienenen letzten Amiga-Spiel aus der „Alien Breed“-Reihe der Kultspieleschmiede Team17. Der wurde zwar schon im März 1997 auf der CD einer Ausgabe des Magazins „Amiga Format“ veröffentlicht, aber bis zuletzt hab ich davon nix mitbekommen.

Das Paket besteht aus sechs komprimierten Archiven und umfasst 24 MB an Material. Entpackt sind es sogar fast 60 MB. Enthalten sind sowohl der Quellcode für das Spiel, die Tools, und einige Spieldateien wie Texturen, Hintergründe und Sounddateien. Inwieweit das Zeug komplett ist, kann ich leider nicht sagen.

Der Code des Spiels ist zum größten Teil 68k-Assembler, die Tools sind teilweise in AMOS geschrieben. Ob sich der Code problemlos kompilieren bzw. assemblen lässt, weiß ich nicht. Der alleinige Programmierer war laut MobyGames Andrew Clitheroe. Da stellt sich mir die Frage: Was für ein Wahnsinniger ist das, der einen ganzen First Person Shooter von vorne bis hinten in Assembler schreibt? Dieser Kerl hat meinen Respekt.

Downloaden könnt ihr die Dateien aus dem Aminet. Wird nur den wenigsten was nützen, aber vielleicht liest ja der eine oder andere Amiga-Assemblergott mit und will damit was anfangen.