Spiele entwickeln für iPad, iPhone und iPod...

4
Inhaltsverzeichnis Thomas Lucka Spiele entwickeln für iPad, iPhone und iPod touch ISBN: 978-3-446-43085-3 Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-43085-3 sowie im Buchhandel. © Carl Hanser Verlag, München

Transcript of Spiele entwickeln für iPad, iPhone und iPod...

Inhaltsverzeichnis

Thomas Lucka

Spiele entwickeln für iPad, iPhone und iPod touch

ISBN: 978-3-446-43085-3

Weitere Informationen oder Bestellungen unter

http://www.hanser.de/978-3-446-43085-3

sowie im Buchhandel.

© Carl Hanser Verlag, München

Inhalt  VII

Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XI

Vorwort zur zweiten Auflage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIII

1 Einleitung – Let there be .  .  . games! . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1 Warum überhaupt Spiele für das iPhone programmieren? . . . . . . . . . . . . . . . . . 11.2 Willkommen in der Welt von Apple – das iPhone­Phänomen . . . . . . . . . . . . . . . 21.3 Die iPhone­Family – Spezifikationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4 Aller Anfang ist leicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Grundlagen – Wie funktioniert das alles denn bloß? . . . . . . . . . . . . . . 92.1 Die Quelle der Macht – das iOS Dev Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2 Xcode und das iOS SDK herunterladen und installieren . . . . . . . . . . . . . . . . . . . 102.3 Xcode­Vorlagen einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4 Hello World mit Konsolenausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5 Hello World mit Text auf einer View­Instanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.6 Keine Angst vor Objective­C – ein 15­Minuten­Schnellkurs . . . . . . . . . . . . . . . . 202.7 Der Lebenszyklus einer App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.8 Breite Unterstützung: Universale Apps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.9 Unterstützung von Retina­Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3 Spiele entwickeln – von 0 auf 180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.1 Wie funktionieren Spiele? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.2 Das 2D­Koordinatensystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.3 Ein Beispielprojekt aufsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.4 Zeichenkurs – einfache Formen rendern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.5 Bilder einbinden, laden und anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.6 Game Loop und Frames – die Bilder zum Laufen bringen . . . . . . . . . . . . . . . . . . 683.7 Clipping und Animationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

Inhalt■■ Inhalt

Inhalt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VIIVorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIVorwort zur zweiten Auflage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIIIEinleitung – Let there be .  .  . games! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1  Warum überhaupt Spiele für das iPhone programmieren? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2  Willkommen in der Welt von Apple – das iPhone­Phänomen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Die iPhone­Family – Spezifikationen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4 Aller Anfang ist leicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Grundlagen – Wie funktioniert das alles denn bloß? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.1  Die Quelle der Macht – das iOS Dev Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2  Xcode und das iOS SDK herunterladen und installieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3 Xcode­Vorlagen einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4 Hello World mit Konsolenausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5 Hello World mit Text auf einer View­Instanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.6  Keine Angst vor Objective­C – ein

15­Minuten­Schnellkurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.7 Der Lebenszyklus einer App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.8 Breite Unterstützung: Universale Apps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.9 Unterstützung von Retina­Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Spiele entwickeln – von 0 auf 180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.1 Wie funktionieren Spiele?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.2 Das 2D­Koordinatensystem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.3 Ein Beispielprojekt aufsetzen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.4 Zeichenkurs – einfache Formen rendern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.5 Bilder einbinden, laden und anzeigen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613.6  Game Loop und Frames – die Bilder zum Laufen bringen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683.7 Clipping und Animationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733.8 Kollisionskontrolle, bitte! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.9 User­Input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933.10  Und jetzt alle(s) zusammen: GameManager und Sprite­Verwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023.11  Zappp, Brzzz, Booom, Pennng! Hintergrundmusik und Sound­Effekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1233.12 Datenspeicherung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136Verbindung gesucht: Multiplayer-Spiele mit Game Kit und Game Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1414.1 iTunes Connect einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1434.2 Der Weg zur Game Center Test­App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1464.3 Multiplayer­Spiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155OpenGL ES – der Turbo-Gang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1575.1 Warum OpenGL ES?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1575.2  Was ist OpenGL ES, und wie ist es aufgebaut? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1585.3 OpenGL ES – grundlegende Fragen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1605.4  Ein Template erstellen – OpenGL ES richtig einbinden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1615.5 Das OpenGL­Koordinatensystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1675.6 Einfache Zeichenoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1705.7 Exkurs: Mathe­Plotter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1765.8 Und Bilder? Wie wär‘s mal mit Texturen! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1775.9  Ab in die Matrix: die Transformations funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1905.10 Animationen mit Textur­Clipping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1935.11  Unendliche Weiten: Scrolling und Parallax­Scrolling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1965.12  Lassen wir’s krachen: ein OpenGL ES­Shooter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045.13  Unterstützung von Retina­Displays unter OpenGL ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231Die dritte Dimension: 3D-Spiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.1 Wie sind 3D­Spiele aufgebaut? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.2 Das Grundgerüst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376.3 Das 3D­Koordinatensystem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396.4 Einfache Formen zeichnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2406.5 Texturierung von Flächen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2426.6 Texturierung von 3D­Körpern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2456.7 Es werde Licht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496.8 3D­Modelle erzeugen, laden und einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2526.9 Weitere 3D­Modelle mit Textur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616.10  Ego­Perspektive: Kamera erstellen und einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2656.11 Spaceflight: ein 3D­Spiel entsteht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Auf den Spuren von Angry Birds – Die Physik-Engine Box2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2977.1 Wie bindet man Box2D ein? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2997.2 Alles fällt nach unten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3027.3 Sprites unter Box2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3077.4 Ein Box2D­Spiel: Free The Birds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312Das GLKit Framework – OpenGL ES leicht gemacht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3258.1 Ein erstes Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3278.2 GLKitView und Game­Loop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3318.3  GLKit und 3D – Kameraeinsatz nach GLU­Vorbild. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336Volle Kontrolle: Game Sounds mit OpenAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3399.1 Kapselung der OpenAL­API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3409.2 Wie entsteht Klang?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3419.3 Eine polyphone Sound­Engine erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343Waiting round to be a millionaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35110.1 Das Tor zur Welt – iTunes Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35110.2  Testen, Testen, Testen: Aber wie kommt das Spiel auf mein Gerät?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35110.3 Release und Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35210.4 Marketing­Pläne?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

VIII   Inhalt

3.8 Kollisionskontrolle, bitte! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.9 User­Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933.10 Und jetzt alle(s) zusammen: GameManager und Sprite­Verwaltung . . . . . . . . . 1023.11 Zappp, Brzzz, Booom, Pennng! Hintergrundmusik und Sound­Effekte . . . . . . . 1233.12 Datenspeicherung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

4 . Verbindung gesucht: Multiplayer-Spiele mit Game Kit und Game Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

4.1 iTunes Connect einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1434.2 Der Weg zur Game Center Test­App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1464.3 Multiplayer­Spiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

5 OpenGL ES – der Turbo-Gang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1575.1 Warum OpenGL ES? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1575.2 Was ist OpenGL ES, und wie ist es aufgebaut? . . . . . . . . . . . . . . . . . . . . . . . . . . . 1585.3 OpenGL ES – grundlegende Fragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1605.4 Ein Template erstellen – OpenGL ES richtig einbinden . . . . . . . . . . . . . . . . . . . . 1615.5 Das OpenGL­Koordinatensystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1675.6 Einfache Zeichenoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1705.7 Exkurs: Mathe­Plotter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1765.8 Und Bilder? Wie wär‘s mal mit Texturen! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1775.9 Ab in die Matrix: die Transformations funktionen . . . . . . . . . . . . . . . . . . . . . . . . 1905.10 Animationen mit Textur­Clipping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1935.11 Unendliche Weiten: Scrolling und Parallax­Scrolling . . . . . . . . . . . . . . . . . . . . . . 1965.12 Lassen wir‘s krachen: ein OpenGL ES­Shooter . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045.13 Unterstützung von Retina­Displays unter OpenGL ES . . . . . . . . . . . . . . . . . . . . . 231

6 Die dritte Dimension: 3D-Spiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.1 Wie sind 3D­Spiele aufgebaut? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.2 Das Grundgerüst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376.3 Das 3D­Koordinatensystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396.4 Einfache Formen zeichnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2406.5 Texturierung von Flächen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2426.6 Texturierung von 3D­Körpern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2456.7 Es werde Licht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496.8 3D­Modelle erzeugen, laden und einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2526.9 Weitere 3D­Modelle mit Textur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616.10 Ego­Perspektive: Kamera erstellen und einsetzen . . . . . . . . . . . . . . . . . . . . . . . . 2656.11 Spaceflight: ein 3D­Spiel entsteht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

InhaltInhalt  IX

7 Auf den Spuren von Angry Birds – Die Physik-Engine Box2D . . . . . . . 2977.1 Wie bindet man Box2D ein? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2997.2 Alles fällt nach unten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3027.3 Sprites unter Box2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3077.4 Ein Box2D­Spiel: Free The Birds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

8 Das GLKit Framework – OpenGL ES leicht gemacht . . . . . . . . . . . . . . 3258.1 Ein erstes Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3278.2 GLKitView und Game­Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3318.3 GLKit und 3D – Kameraeinsatz nach GLU­Vorbild . . . . . . . . . . . . . . . . . . . . . . . . 336

9 Volle Kontrolle: Game Sounds mit OpenAL . . . . . . . . . . . . . . . . . . . . . 3399.1 Kapselung der OpenAL­API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3409.2 Wie entsteht Klang? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3419.3 Eine polyphone Sound­Engine erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

10 Waiting round to be a millionaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35110.1 Das Tor zur Welt – iTunes Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35110.2 Testen, Testen, Testen: Aber wie kommt das Spiel auf mein Gerät? . . . . . . . . . . 35110.3 Release und Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35210.4 Marketing­Pläne? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353

Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357