1.1.1 | An wen richtet sich dieses Buch? |
Dieses Buch ist für alle gedacht, die sich für die Thematik der Spieleprogrammierung interessieren und noch keinerlei Vorkenntnisse haben. Der Schwierigkeitsgrad beginnt bei null und steigert sich langsam, aber stetig im Verlauf der einzelnen Kapitel. Weiterführende Bereiche wie etwa die Grafikprogrammierung werden in diesem Buch zwar auch behandelt, aber für dieses Thema ist „nur“ ein Kapitel vorgesehen, das Dich ein wenig tiefer in die Materie einführen soll. Das Buch bezieht sich ausschließlich auf die Programmiersprache C++ und fokussiert dabei die Spieleprogrammierung.
Im Grunde spricht jedoch nichts dagegen, dieses Buch als Nachschlagewerk zu verwenden. Generell ist es für jeden nützlich, der die Programmiersprache C++ erlernen oder vertiefen will.
1.1.2 | Welche Vorkenntnisse werden benötigt? |
Um mit diesem Buch arbeiten zu können, werden keinerlei Programmierkenntnisse benötigt. Das Einzige, was man beherrschen sollte, ist der Umgang mit Windows oder Mac OS X. Wer weiß, wie man einen Computer einschaltet, Programme startet und mit Dateien arbeitet, ist fast schon überqualifiziert. Es wird erklärt, welche Programme man benötigt und wie man mit ihnen Quelltexte (Programmcode) erstellt, diese kompiliert (in eine für den Computer verständliche Sprache verwandelt) und schließlich lauffähige Programme erzeugt.
Solltest Du bereits über Programmierkenntnisse einer beliebigen anderen Sprache verfügen, so wird dies sicherlich nützlich sein, ist aber ‒ wie schon erwähnt ‒ nicht notwendig.
1.1.3 | Wie arbeitet man am effektivsten mit diesem Buch? |
Das Buch ist so gestaltet, dass die einzelnen Kapitel aufeinander aufbauen. Jedes Kapitel erfordert es, dass man die Themen aus den vorangegangenen Kapiteln durchgearbeitet und auch verstanden hat.
In den meisten Kapiteln wird es ein paar Aufgabenstellungen geben, die helfen sollen, das bisher Gelernte zu festigen. Dabei werden zu jeder einzelnen Aufgabe verschiedene Tipps gegeben, wie man sich am besten an die Lösung heranmacht. Es soll keinesfalls der Eindruck entstehen, dass es sich wie in der Schule um Hausaufgaben handelt. Vielmehr soll Dir hier die Möglichkeit gegeben werden, selbst zu kontrollieren, ob Du die bisher erklärten Themen wirklich verstanden hast. Praxis ist und bleibt eben ein wichtiger Aspekt, wenn nicht gar der wichtigste.
Am besten schaust Du Dir die jeweilige Aufgabe an und liest die dazugehörigen Tipps durch. Danach überlegst Du, wie man am besten diese Aufgabe lösen könnte. Gib nicht gleich auf, sondern versuche wirklich, zum Ziel zu kommen. Der Schwierigkeitsgrad ist so gewählt, dass man ohne Weiteres zur Lösung kommt, wenn man die vorhergehenden Kapitel gelesen und verstanden hat.
Direkt im Anschluss erfolgt eine Musterlösung, die Du Dir auch dann anschauen solltest, wenn Du die Aufgabe erfolgreich gelöst hast. Auf keinen Fall solltest Du Dir diese Lösung anschauen, bevor Du nicht selbst versucht hast, die Aufgabe zu lösen. Es ist ein gewaltiger Unterschied, ob man sagt „ja klar, so hätte ich das auch gemacht“ oder ob man es tatsächlich erst mal selbst versucht. Es ist zwar nicht zwingend erforderlich, sich mit diesen Aufgaben zu beschäftigen, um die nächsten Kapitel zu verstehen, dennoch ist Eigeninitiative der Schlüssel zum Erfolg.
Zu gegebener Zeit wird es auch sogenannte Fehlerquelltexte geben. Das sind kleine Programmbeispiele, die typische Fehler enthalten, wie sie häufig vorkommen. Das Ganze hat den Sinn, ein Gespür dafür zu entwickeln, wo überall etwas schiefgehen kann, welche Arten von Fehlern es gibt (Compilerfehler, Laufzeitfehler, Warnungen). Jeder wird früher oder später selbst mal die vertracktesten Fehler in seinen Quelltext einbauen und sich dann kopfkratzend auf die Suche danach machen. Da es gerade am Anfang nicht immer gleich ersichtlich ist, wo ein Fehler stecken könnte, halte ich es für sinnvoll, so früh wie möglich darauf einzugehen, wie man in einem solchen Fehlerfall am besten vorgeht. Die Fehlerquelltexte in diesem Buch enthalten diverse kleine Gemeinheiten und natürlich auch Hilfestellungen, wie man sich am besten auf die Suche begibt. Auch ein noch so erfahrener Programmierer ist nicht vor solchen Dingen gefeit. Allerdings kommt mit der Zeit die Erfahrung, solche Fehler schneller einzugrenzen.
Wie auch schon bei den Aufgabenstellungen wird es im Anschluss eine korrigierte Fassung des Quelltextes geben. Dabei wird erklärt, wie man den einzelnen Fehlern schnellstmöglich auf die Schliche kommt und wie man sie hätte vermeiden können. Diese Übungen sind fast noch wichtiger als die Aufgabenstellungen, da es sehr ärgerlich ist, einen Quelltext, den man in fünf Minuten geschrieben hat, zwei Stunden lang nach Fehlern zu durchforsten.
1.1.4 | Geduld, Motivation und gelegentliche Tiefschläge |
Ich möchte hier nicht um den heißen Brei herumreden, aber gelegentliche Tiefschläge gehören nun leider dazu. Früher oder später kommt jeder mal an den Punkt, an dem einfach nichts klappen will und das Programm nicht das macht, was es eigentlich soll. Genau an diesem Punkt gibt es zwei Wege, die angehende Programmierer einschlagen können: Die einen geben frustriert auf und werfen den Compiler samt PC und Monitor aus dem Fenster.
Danach wird mächtig über die Programmiersprache geschimpft: Sie ist zu schwer, zu kompliziert, man muss ja studiert haben, um das zu verstehen, und so weiter.
Die anderen jedoch werfen nicht gleich die Flinte ins Korn und bleiben stattdessen hartnäckig am Ball. Natürlich ist das nicht immer einfach, jedoch gibt es auch hier Tricks, wie man sich ganz schnell wieder motiviert. Manchmal ist es ganz nützlich, den Compiler auszuschalten und sich mit anderen Dingen zu beschäftigen, sei es nun an den See zu gehen oder ein paar coole Spiele mit bombastischen Effekten zu spielen. Gerade wenn man sich auf den Homepages von Hobbyentwicklern umschaut und sich deren Resultate ansieht, ist man schnell wieder motiviert und denkt sich: „Hey, die haben das doch auch hinbekommen, warum sollte mir das nicht auch gelingen?“
Man sollte sich auch vor Augen halten, dass die heute professionellen Entwickler auch nichts in den Schoß gelegt bekommen haben. Alle haben sie mit einem winzig kleinen Programm angefangen, das ein simples „Hallo Welt“ auf dem Bildschirm ausgibt. Damit hat es sogar etwas ganz Besonderes auf sich: Irgendwie ist es zur Gewohnheit geworden, dass viele Bücher über diverse Programmiersprachen mit einem Beispiel beginnen, das den Text „Hallo Welt“ auf dem Bildschirm ausgibt. Das geht nun sogar so weit, dass man mit Microsoft Visual C++-Arbeitsumgebungen automatisch ein solches Beispielprogramm erzeugen kann.
Wenn man also an einem solchen Tiefpunkt angelangt ist, sollte man definitiv nicht von „Scheitern“ reden. Es scheitert nur der, der aufgibt. Es gibt im Internet eine ganze Fülle von Diskussionsforen und Chats, in denen sich Programmierer austauschen und gegenseitig helfen können. Scheue Dich nicht davor, dort Fragen zu stellen. Schneller als Du denkst, wirst Du nicht nur Fragen stellen, sondern sie auch beantworten. Außerdem werden hier Tipps gegeben, wie man am schnellsten in die sogenannte „Szene“ einsteigen kann und was es zu beachten gibt. Es ist also keine schlechte Idee, Kapitel 13 schon etwas früher aufzuschlagen.
Mir ist es nun schon einige Male passiert, dass mich jemand darum gebeten hat, mal seinen Quelltext durchzuschauen und nachzusehen, wo der Fehler liegt. Oft war es so, dass ich den Fehler nach recht kurzer Zeit gefunden habe. Wenn man dann gefragt wird, wie man so schnell das Problem eingegrenzt hat, gibt es eigentlich nur eine einzige Antwort: Ich habe diesen Fehler oft genug selbst gemacht! Zwar habe ich zu diesem Zeitpunkt auch mit dem Gedanken gespielt, der CPU jedes Beinchen einzeln auszureißen, Kaffee in die Tastatur zu kippen oder die Aerodynamik meines Monitors im freien Fall zu testen. Da so etwas aber auf die Dauer recht teuer wird, ist es sinnvoller, sich mit dem Problem zu befassen, um es letzten Endes auch zu lösen.
Das alles hört sich schlimmer an, als es ist, aber ich finde es wichtig, auch auf diese Dinge hinzuweisen. Lass Dich auf keinen Fall dadurch entmutigen, sondern behalte das eben Gesagte einfach im Hinterkopf ‒ es kann und wird sich als nützlich erweisen.
1.1.5 | Das Begleitmaterial zum Buch |
Unter http://downloads.hanser.de findest Du sämtliche Quelltexte aus dem Buch. Wie Du diese Beispiele mit Deiner Entwicklungsumgebung laden und verwenden kannst, erkläre ich Dir ab Abschnitt 1.4.3.
Alle Quelltexte wurden unter Windows 10 mit Microsoft Visual Studio 2015 Community Edition getestet und kompiliert. Auf dem Mac wurden Mac OS X 10.10.15 (Yosemite) und Xcode 6.4 verwendet. Die Beispiele 10.1 und 10.3 aus Kapitel 10 sind unter Mac OS X mit Xcode nicht lauffähig, da sie Windows-spezifische Funktionen verwenden. Diese speziellen Beispiele sind somit nur als Visual Studio 2015-Projekte, nicht jedoch als Xcode-Projekte vorhanden.
Die jeweils aktuellste Version von Visual Studio 2015 Community Edition findest Du unter http://www.microsoft.com/visualstudio/deu/downloads. Wie bereits erwähnt ist diese Version kostenlos. Nach Ablauf des Testzeitraums ist jedoch eine (ebenfalls kostenlose) Registrierung nötig.
Wenn Du unter Mac OS X arbeitest, dann kannst Du Dir Xcode kostenlos im App Store...