Spiele entwickeln für iPad, iPhone und iPod...
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 iPhonePhänomen . . . . . . . . . . . . . . . 21.3 Die iPhoneFamily – 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 XcodeVorlagen einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4 Hello World mit Konsolenausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5 Hello World mit Text auf einer ViewInstanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.6 Keine Angst vor ObjectiveC – ein 15MinutenSchnellkurs . . . . . . . . . . . . . . . . 202.7 Der Lebenszyklus einer App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.8 Breite Unterstützung: Universale Apps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.9 Unterstützung von RetinaDisplays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3 Spiele entwickeln – von 0 auf 180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.1 Wie funktionieren Spiele? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.2 Das 2DKoordinatensystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 iPhonePhänomen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Die iPhoneFamily – 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 XcodeVorlagen einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.4 Hello World mit Konsolenausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5 Hello World mit Text auf einer ViewInstanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.6 Keine Angst vor ObjectiveC – ein
15MinutenSchnellkurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.7 Der Lebenszyklus einer App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.8 Breite Unterstützung: Universale Apps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.9 Unterstützung von RetinaDisplays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Spiele entwickeln – von 0 auf 180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.1 Wie funktionieren Spiele?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.2 Das 2DKoordinatensystem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 UserInput. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933.10 Und jetzt alle(s) zusammen: GameManager und SpriteVerwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1023.11 Zappp, Brzzz, Booom, Pennng! Hintergrundmusik und SoundEffekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 TestApp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1464.3 MultiplayerSpiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 OpenGLKoordinatensystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1675.6 Einfache Zeichenoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1705.7 Exkurs: MathePlotter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1765.8 Und Bilder? Wie wär‘s mal mit Texturen! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1775.9 Ab in die Matrix: die Transformations funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1905.10 Animationen mit TexturClipping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1935.11 Unendliche Weiten: Scrolling und ParallaxScrolling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1965.12 Lassen wir’s krachen: ein OpenGL ESShooter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045.13 Unterstützung von RetinaDisplays unter OpenGL ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231Die dritte Dimension: 3D-Spiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.1 Wie sind 3DSpiele aufgebaut? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.2 Das Grundgerüst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376.3 Das 3DKoordinatensystem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396.4 Einfache Formen zeichnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2406.5 Texturierung von Flächen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2426.6 Texturierung von 3DKörpern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2456.7 Es werde Licht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496.8 3DModelle erzeugen, laden und einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2526.9 Weitere 3DModelle mit Textur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616.10 EgoPerspektive: Kamera erstellen und einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2656.11 Spaceflight: ein 3DSpiel 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 Box2DSpiel: Free The Birds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312Das GLKit Framework – OpenGL ES leicht gemacht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3258.1 Ein erstes Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3278.2 GLKitView und GameLoop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3318.3 GLKit und 3D – Kameraeinsatz nach GLUVorbild. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336Volle Kontrolle: Game Sounds mit OpenAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3399.1 Kapselung der OpenALAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3409.2 Wie entsteht Klang?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3419.3 Eine polyphone SoundEngine 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 MarketingPläne?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
VIII Inhalt
3.8 Kollisionskontrolle, bitte! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843.9 UserInput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933.10 Und jetzt alle(s) zusammen: GameManager und SpriteVerwaltung . . . . . . . . . 1023.11 Zappp, Brzzz, Booom, Pennng! Hintergrundmusik und SoundEffekte . . . . . . . 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 TestApp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1464.3 MultiplayerSpiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 OpenGLKoordinatensystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1675.6 Einfache Zeichenoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1705.7 Exkurs: MathePlotter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1765.8 Und Bilder? Wie wär‘s mal mit Texturen! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1775.9 Ab in die Matrix: die Transformations funktionen . . . . . . . . . . . . . . . . . . . . . . . . 1905.10 Animationen mit TexturClipping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1935.11 Unendliche Weiten: Scrolling und ParallaxScrolling . . . . . . . . . . . . . . . . . . . . . . 1965.12 Lassen wir‘s krachen: ein OpenGL ESShooter . . . . . . . . . . . . . . . . . . . . . . . . . . . 2045.13 Unterstützung von RetinaDisplays unter OpenGL ES . . . . . . . . . . . . . . . . . . . . . 231
6 Die dritte Dimension: 3D-Spiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.1 Wie sind 3DSpiele aufgebaut? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356.2 Das Grundgerüst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376.3 Das 3DKoordinatensystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396.4 Einfache Formen zeichnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2406.5 Texturierung von Flächen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2426.6 Texturierung von 3DKörpern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2456.7 Es werde Licht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496.8 3DModelle erzeugen, laden und einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2526.9 Weitere 3DModelle mit Textur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616.10 EgoPerspektive: Kamera erstellen und einsetzen . . . . . . . . . . . . . . . . . . . . . . . . 2656.11 Spaceflight: ein 3DSpiel 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 Box2DSpiel: Free The Birds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
8 Das GLKit Framework – OpenGL ES leicht gemacht . . . . . . . . . . . . . . 3258.1 Ein erstes Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3278.2 GLKitView und GameLoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3318.3 GLKit und 3D – Kameraeinsatz nach GLUVorbild . . . . . . . . . . . . . . . . . . . . . . . . 336
9 Volle Kontrolle: Game Sounds mit OpenAL . . . . . . . . . . . . . . . . . . . . . 3399.1 Kapselung der OpenALAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3409.2 Wie entsteht Klang? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3419.3 Eine polyphone SoundEngine 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 MarketingPläne? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357