„Software Engineering for Game Developers“, erschienen bei Thomson Course Techology, beschäftigt sich auf 862 Seiten in 19 Kapiteln mit der effektiven Entwicklung von Computerspielen durch die Anwendung von Prozessen aus der traditionellen Softwareentwicklung. Das Buch, das sich an Anfänger und Fortgeschrittene richtet, durchleuchet alle Schritte von der ersten Idee bis zur Veröffentlichung anhand eines konkreten Beispiels: das „Ankh Adventure“ Projekt wurde vom Entwicklungsteam innerhalb der Projektzeit und im –budget entwickelt. Die Autoren, Dr. John P. Flynt und Omar Salem, sind selbst erfahrene Softwareentwickler und haben sich u.a. als Lehrer im Bereich Spieleentwicklung betätigt.
Am Anfang des Softwareentwicklungsprozesses steht die Anforderungsanalyse. So stellen auch die Autoren nach einer Einführung zunächst im zweiten Kapitel „Requirements – Getting the Picture“ die Frage: wo stehe ich, wo möchte ich hin, und wie bringe ich das zu Papier? Dabei erfährt der Leser nicht nur, welche Werkzeuge zur Verfügung stehen, sondern erhält auch sehr konkrete Tipps, z.B. zur richtigen Formulierung von Use Cases, bei denen ein Entwickler gerne schnell und unbewusst zu weit in die Technik abdriftet. Um die Anforderungen in ein Softwaresystem zu transferieren zu können erfährt der Leser dann im Kapitel „A Tutorial: UML and Object-Oriented Programming“ von UML als Modellierungssprache und den zugehörigen Begriffen aus der objektorientierten Programmierung. Wie sich diese Hilfsmittel anwenden lassen, findet sich dann im vierten Kapitel, „Software Design – Much Ado about Something“, in dem besprochen wird, welche Prinzipien beim Softwaredesign gelten, wie UML Diagramme und Dokumente aus der Analyse zusammenspielen, um zu einem erfolgreichen Design zu führen, oder wie ein Design in einzelne Abschnitte, den „Stripes“, aufgeteilt werden kann. Die Inhalte des Kapitels orientieren sich dabei stellenweise an Industriestandards des amerikanischen IEEE (Institute of Electrical and Electronics Engineers). Im nächsten Schritt wird diskutiert, dass nicht alles von Grund auf selbst entworfen werden muss: kommerzielle Middleware und Open Source Bibliotheken werden unter dem Aspekt der Wiederverwertbarkeit îm Kapitel „Old Is Good – The Library Approach“ beleuchtet. Kapitel 6 widmet sich unter dem Titel „Object-Oriented Fantasies and Realities“ den Grundsätzen objektorientierter Programmierung, und das Kapitel „P is for Pattern“ erweitert das Wissen um eine Übersicht und die Anwendung von Entwurfsmustern. Weniger technisch geht es im folgenden Teil weiter, der sich um Risikomanagement dreht, bis dann im Kapitel neun, „Iterating Design“, die bereits angesprochenen Stripes zur Entwicklung des Ankh Adventure aufgestellt und anhand von Use Cases und Klassendiagrammen konkretisiert werden. Mit dem Lesen von Kapitel neun ist das geplante Spiel damit in Einzelabschnitte gebrochen, die im weiteren Verlauf abgearbeitet werden. Um ein Projekt umzusetzen, ist es vonnöten, die Arbeit der Entwickler und Künstler zu katalogisieren, zu versionieren, und zu archivieren. Hierzu werden in Kapitel zehn unter „Control Freaks and Configuration Management“ Asset- und Sourcecodeverwaltungen wie CVS und zugehörige grundlegende Konzepte wie Branches vorgestellt; weiterhin findet der Leser Informationen über automatisierte Builds und Installationsverfahren. Das umfangreiche elfte Kapitel widmet sich der Kunst des Testens: „Evident Evil – The Art of Testing“ etabliert auf knapp 50 Seiten Verfahren für den erfolgreichen Softwaretest, und Kapitel zwölf führt Metriken ein, die in der Softwareentwicklung verwendet werden – von Begriffen wie Lines Of Code (Anzahl Zeilen Programmcode) bis hin zur Projektdauer werden hier allerlei Aspekte betrachtet, die besonders für Projektleiter von Interesse sind – inklusive einer Abhandlung der entsprechenden Darstellungsmöglichkeiten als Diagramm und einer Kurzeinführung in Statistik. Nachdem in den bisherigen Kapiteln viele Themen besprochen wurden, fügt Kapitel 13, „What People Do – Development Strategies“ alles zusammen und erläutert, wo man nun die Entwicklung beginnt, und welche Strategien dabei zu beachten sind. Zu diesen Strategien gehört das Aufsetzen der Softwareumgebung (Versionskontrolle, Textverarbeitung, …) genau so wie die Definition und Überprüfung von Code Conventions oder die Behandlung von Konflikten innerhalb des Teams. Weitere Themen sind Test-, Release- und Qualitätssicherungspläne, sowie der Alpha- und Beta-Status der Software. Unter der Überschrift „Practice, Practice, Practice“ beschäftigt sich das folgende Kapitel dann mit dem täglich Brot des Softwareentwicklers: die Stripes werden untersucht, um Testkandidaten zu ermitteln, es werden Aufwände geplant, und schließlich der Code implementiert. Kapitel 15, „Team Work“, bietet einen interessanten Einschub über die Struktur eines Teams, Rollen von Teammitgliedern, und die Integration von Projektplanungsmitteln in das Team, um diesem stets ein Ziel vor Augen bieten zu können. Im Laufe der Entwicklung etablieren sich Prozesse, die aus verschiedensten Gründen geändert, angepasst, verbessert werden müssen. Diesen Änderungen widmet sich das Kapitel „Process Improvement“. Wer den Weg, die Software zu entwickeln, verbessert, der verbessert die Software, so ein prägender Satz des Kapitels, welches weiterhin die Standards von ISO (International Standards Organization), IEEE und SEI (Software Engineering Institute) gegenüberstellt. Mit „Release Planning and Management“ ist der Leser dann auch schon ganz kurz vorm vermeintlichen Ende des Entwicklungsprozesses angekommen. Hier erfährt er von den verschiedenen Release-Leveln, Beta Release Plan Konzepten, Versionsnummern, und der Arbeit nach dem Release, nämlich Bugtracking und Support nach Auslieferung. Kapitel 18 widmet sich dem bei Entwicklern oftmals unbeliebten Thema der Dokumentation („Documentation – Learning How to Learn“), bis schließlich Kapitel 19, „Philosophy of Software Engineering and Game Development“, den praktischen Teil abschließt und die Softwareentwicklung philosophisch beleuchtet.
Im Anhang finden sich eine Installationsanleitung für das Ankh Adventure samt Quellcode sowie das auf der CD enthaltene Tool „SmartDraw“, eine Anleitung zur Arbeit mit den Quellcode- und SmartDraw-Dateien, eine Einführung in Quellcodeverwaltung mit CVS, eine Übersicht von Ressourcen, sowie sämtliche Ankh Dokumente, wie z.B. das Design Dokument.
„Software Engineering for Game Developers“ ist ein umfangreicher Titel, der alle Aspekte der traditionellen Anwendungsentwicklung zumindest anschneidet und zeigt, wie sich diese auf die Spieleentwicklung übertragen lassen. Leider geht die Entwicklung des Spiels, Ankh Adventure, im Verlauf des Buches ein wenig unter. Zwar werden die einzelnen Stripes erarbeitet und beschrieben, am Ende hat man jedoch ein 30000 Zeilen Projekt auf der CD, das im Buch nicht in voller Tiefe diskutiert werden konnte. Glücklicherweise ist das Projekt überschaubar genug, um selbständig die Lücken zu schließen, und die Stripes erleichtern den Einstieg zusätzlich. Trotzdem sind grundlegende C++ Kenntnisse für den Leser unabdingbar. Außerdem deckt das Buch ein Semester Software Engineering durchaus ab, weshalb ich Anfängern von diesem Titel zunächst abraten würde. Angenehm ist, dass die Autoren am Ende eines jeden Kapitels weitere Referenzen auflisten, die sich der geneigte Leser zu Gemüte führen kann. Ebenso helfen die zur Verfügung gestellten (IEEE-) Vorlagen dabei, die beschriebenen Prozesse selbst anzuwenden. Diese beziehen sich natürlich hauptsächlich auf den amerikanischen Raum; Standards nach DIN sucht man in dem englischsprachigen Titel naturgemäß vergebens. Ein wirkliches „for game developers“ hat das Buch aber meiner Meinung nach nicht verdient, denn wirkliche Unterschiede zu den Prozessen der Anwendungsentwicklung werden nicht deutlich.
John P. Flynt with Omar Salem, „Software Engineering for Game Developers“;
Thomson Course Technology 2005;
ISBN 1-59200-155-6
Matthias Gall, Juni 2005