Schlagwort-Archive: C++

Zur Zeit befasse ich mich (wieder) privat und beruflich mit dem Thema „Entwurfsmuster“ („Design Patterns„). Meine letzten Versuche, diese Thematik anzugehen, waren zaghaft und wenig erfolgreich. Zu trocken und zu abstrakt. Ich hatte nie das Gefühl, dass ich irgendwas davon irgendwo mal hätte einsetzen können. Inzwischen habe ich den Entschluss gefasst, mir die Entwurfsmuster jetzt endgültig gedanklich anzueignen und damit zu arbeiten. Das bekannte Werk „Entwurfsmuster von Kopf bis Fuß“ („Head First Design Patterns„) bringt dem Leser die einzelnen Muster auf humorvolle bildhafte Weise näher. Ich muss sagen, das gelingt wirklich sehr gut. Zum ersten Mal habe ich den Eindruck, dass ich es verstehe und daraus einen Vorteil ziehen kann.

Vielleicht hatte ich deshalb Schwierigkeiten, mich initial damit anzufreunden, weil die Entwurfsmuster bei mir für ein mittelschweres Trauma gesorgt hatten. Dieses genoss ich vor eineinhalb Jahren, kurz nach meinem Studium, das ich mit einem breiten Grinsen und vor Stolz geschwellter Brust abschloss, und eine Welt erwartete, die taufrische Informatiker mit offenen Armen, einem Glas Sekt, und dem roten Teppich empfangen würde. Damals, in meiner Experimentierfreude, bewarb ich mich bei einer Spieleentwicklerfirma als Junior-Developer für Tools. Freudig erzählte ich davon, dass ich mich für den Richtigen für den Job halte, weil ich viel Erfahrung mit Spielen habe, weil ich das Spiele-Repertoire des Unternehmens kenne und selbst spiele, und ganz besonders weil ich selbst schon etwas Erfahrung im Bereich Spieleentwicklung gesammelt habe, sowohl 2D als auch 3D, sowohl Windows als auch Linux, sowohl Java als auch C++. Bestimmt würde man mir gleich den Arbeitsvertrag rauslegen.

Stattdessen fragte man mich ziemlich ausführlich, ob mir Erich Gamma ein Begriff ist, ob ich weiß wer die Gang of Four ist und was die eigentlich gemacht haben, ob ich irgendwelche Design Patterns kenne und möglichst auch gleich beschreiben könnte, wofür die da sind. Observer hier, Factory da, Design Patterns dort und überall. Ich musste bei jeder Frage abwinken und saß am Ende nur noch mit einem roten Kopf da, wollte nur noch, dass es endlich aufhört. Der Rest des Bewerbungsgesprächs verlief nicht minder ernüchternd. Lauter Begriffe, die ich vielleicht mal gehört hatte, oder eben nichtmal das. Es ging spätestens jetzt nicht mehr darum, ob ich die Stelle bekommen würde oder nicht. Die haben es nämlich geschafft, mir den Job auszureden. Ich wollte die Stelle gar nicht mehr. Ich begann zu zweifeln, ob ich als Entwickler überhaupt geeignet bin. Vielleicht hätte ich als Maurer mehr Glück.

Ich bin aus dem Informatikstudium entlassen worden, ohne dass der Begriff „Entwurfsmuster“ jemals in einer Vorlesung gefallen wäre. Java, PHP, C und C++ waren im Studium eigentlich nicht zu kurz gekommen und auch gab es die eine oder andere Vorlesung zum Thema Software Engineering, wo dann so Dinge wie das Wasserfall-Modell und das V-Modell durchgenommen wurden. Meine Noten waren zumeist überdurchschnittlich. Ich hatte nie Anlass gehabt mich schlecht vorbereitet zu fühlen. In meiner Freizeit hatte ich durchaus das eine oder andere kleine Progrämmchen oder Spielchen entwickelt, aber auch da stieß ich nie auf Entwurfsmuster, wenn ich mal was recherchierte. Und dann stand ich da, mit einem Diplom in der Hand, ohne Kenntnis von Entwurfsmustern. Und so jemanden wollen die Arbeitgeber wohl nicht.

Ich hatte Glück, ich bin nach zehnmonatiger Stellensuche gnädigerweise doch noch in einem IT-Unternehmen angestellt worden. Was sprach am deutlichsten gegen meine Anstellung: die zehnmonatige Stellensuche – „Grenzwertig“, laut Personaler. Dass ich unerfahren bin und keine Entwurfsmuster kenne, ist unproblematisch und lässt sich ändern. Warum nicht gleich so? Dann wären mir auch zehn Monate Unsicherheit erspart geblieben. Hätte meine Arbeitslosigkeit länger als ein Jahr angedauert, wer weiß ob mir mein Diplom dann noch genützt hätte.

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.