Spieleprogrammierung Gems 4


Wer immer noch nicht weiss, wie er die geschenkten Weihnachts-Euronen sinnvoll anlegen kann, sollte unbedingt weiterlesen. Spieleprogrammierung Gems 4 ist der Titel des vierten Teils aus der amerikanischen Erfolgsserie „Game Programming Gems“, übersetzt etwa „Juwelen der Spieleprogrammierung“. Die Serie richtet sich an fortgeschrittene bis professionelle Spieleentwickler, die vom Wissen anderer professioneller Entwickler profitieren wollen: um Marc de Loura, der als Serienherausgeber die Reihe im Jahr 2000 ins Leben rief und heute die Entwicklung bei Sony Computer America leitet, reihen sich Entwickler namhafter Unternehmen wie LucasArts, Electronic Arts, Microsoft oder ATI Research. In je etwa zehn Seiten langen Artikeln präsentieren die Autoren Algorithmen aus den Bereichen Allgemeine Programmierung, Mathematik, Künstliche Intelligenz, Grafik, Netzwerk und Multiplayer, und Audio. Zum ersten Mal finden sich auch Beiträge zum Thema Physik unter den Gems, womit de Loura den stetig wachsenden Möglichkeiten in Computerspielen Rechnung trägt, die jüngst durch Titel wie z.B. Half Life 2 demonstriert wurden. Mit diesen sieben Kapiteln bringt es die im Carl Hanser Verlag erschienene deutsche Übersetzung auf etwa 690 Seiten.
Das erste Kapitel, Allgemeine Programmierung, enthält 14 Artikel zu essentiellen Themen, die für Programmierer jeder Fachrichtung von Interesse sind; so z.B. zu Debugging, Logging, Timing und Entity-Management. Das Mathematik-Kapitel widmet sich in dieser Ausgabe mit sieben Artikeln u.a. Splines, Hüllvolumen und inverser Kinematik. Das neue Physik-Kapitel startet mit neun Artikeln auf rund 100 Seiten, und kommt mit so unterschiedlichen Themen wie der Simulation von Fahrzeugphysik, Zerstörung im Kampf oder Wasseroberflächen daher. Die künstliche Intelligenz wird in der vierten Ausgabe mit Artikeln u.a. über Kameraführung, dynamischer Programmierung oder konkrete Probleme wie dem Mauerbau in Echtzeitstrategiespielen abgehandelt. Das Thema Computergrafik hat in den Gems nach wie vor den größten Umfang, und wie in jeder Ausgabe finden sich auch diesmal wieder Artikel zum Thema Schattenwurf oder Terrain. Weiterhin finden sich u.a. Texte über die Anwendung von Teamfarben auf Modelle oder über Hitze- und Dunsteffekte. Das Netzwerk und Multiplayer Kapitel trägt dem fortwährenden Bestreben der Amateurentwicklerszene Rechnung, Massive Multiplayer Online Role Playing Games zu entwickeln, und behandelt dementsprechend u.a. die Verwaltung tausender Clients pro Server oder das Zeit- und Konsistenzmanagement bei Multiserver-MMORPGs. Das letzte Kapitel „Audio“ führt z.B. in die offenen Schnittstelle OpenAL ein oder zeigt die Programmierung eines Audioskriptsystems.
Spieleprogrammierung Gems 4 kommt mit einer CD, auf der alle Quellcodes der Kapitel enthalten sind. Zusätzlich beinhaltet die CD das DirectX 9 SDK (Update-Version Sommer 2003), die GLUT-Bibliothek sowie das Java 1.4.2 SDK als Windows- und Linux-Installer. Die Programme im Buch sind in den Programmiersprachen C, C++, Java und Phyton implementiert.
Vielfalt der Artikel und durch die zahlreichen Autoren ist für jeden Entwickler etwas Interessantes dabei. Das Niveau der Artikel variiert von Thema zu Thema. Die Artikel über Debugging oder Spannungssteigerung in Actionspielen sind beispielsweise eher wenig technisch
Grundsätzlich kann man mit GPG nicht viel falsch machen: gerade durch die orientiert und legen den Inhalt textlastig dar, während die Mathematik-Artikel naturgemäß sehr formellastig sind, oder weitere Artikel ihren Fokus auf den Quelltext legen und dementsprechend viele Ausschnitte präsentieren. Derart technisch orientierte Artikel fordern selbstverständlich detailliertere Kenntnisse. Inhaltlich mag speziell der mehrfach genannte Artikel zum Thema Debugging beim ein oder anderen Entwickler Kopfschütteln hervorrufen: hier wird tatsächlich geraten, das Betriebssystem neu zu installieren, falls man auf einen besonders bizarren Bug stößt, oder auch, diejenigen Warnungen abzuschalten, die man nicht anders beseitigen kann – eine Philosophie, über die man unter Entwicklern wohl durchaus streiten kann. Etwas befremdlich mag man als Leser den Artikel über „Algorithmen für die Zerstörung im Kampf“ im Physik-Kapitel empfinden, dessen Formeln auch für die Berechnung der Trefferwahrscheinlichkeit im menschlichen Rumpf und die Tötungswahrscheinlichkeit durch Sperrfeuer verwendet werden können; aber auch derartige Algorithmen haben ihren Platz in heutigen Simulationen.
Der insgesamt gute Gesamteindruck wird lediglich von ein paar kleineren Fehlern getrübt; so wird hier mal ein Variablenname nicht durchgängig verwendet (shooter vs. entShooter, S. 74), und dort fällt der Quellcode mal der Rechtschreibkorrektur zum Opfer (Cproperty, S. 119, was vermutlich eher CProperty heißen sollte), und an anderer Stelle findet sich auch ein inhaltlicher Fehler (bei Dreiecken, „die der Welt“ zugewandt sind, ist natürlich die Kamera gemeint, S. 269; die Makros zur Einbindung von Dateiname, Funktion und Zeilennummer heißen __FILE__, __FUNCTION__ und __LINE__, nicht __LINE oder __FILE, S. 24). Die deutsche Übersetzung bringt den Leser hier und da zum schmunzeln, da einige gängige Begriffe aus der Softwareentwicklung zwanghaft übersetzt wurden. So liest man von Rückruffunktionen (besser bekannt als Callbacks), das Factory-Design-Pattern wurde zur Fabrik, Smart Pointer werden „smarte Pointer“. Computer Science wurde zu Computerwissenschaft anstatt schlicht Informatik, und für ein Kürzel wie NPC existiert zwar die englischsprachige Bedeutung „Non Player Charakter“, nicht aber die deutsche.
Die Inhalte der CD sind leider wie in allen bisherigen Ausgaben nicht in einheitlichem Format – mitunter sind Codeschnippsel sogar nur als einfache Textdatei enthalten. Wünschenswert wäre, wenn alle Beiträge derart aufbearbeitet würden, dass Projektdateien für die gängigen Entwicklungsumgebungen zur Verfügung stehen.
Die Zielgruppe wird jedoch an derartigen Kleinigkeiten nicht verzweifeln. Der fortgeschrittene Entwickler findet in der vierten Ausgabe der Gems wieder eine interessante Zusammenstellung von Lösungsansätzen für die verschiedenen Teildisziplinen der Spieleprogrammierung, die in keinem Regal fehlen sollte.
Andrew Kirmse (Hrsg.), „Spieleprogrammierung Gems 4“;
Carl Hanser Verlag 2004;
ISBN 3-446-22944-2
Matthias Gall, Oktober 2004

Leave a Reply

Your email address will not be published. Required fields are marked *