Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
1 Einführung
15
1.1 Aufbau des Buches
17
1.2 Android-Spiele von damals bis heute
19
1.2.1 Angry Birds
19
1.2.2 Bejeweled
20
1.2.3 Air Control
21
1.2.4 Speedx 3D
22
2 Android Studio
25
2.1 Android Studio installieren
26
2.2 Ein Android-Projekt anlegen
28
2.3 Besichtigungstour
30
2.4 Arbeitserleichterungen
32
2.5 Layouts editieren
36
2.6 Lokale History
39
2.7 Zusammenfassung
40
3 GUI-Spielerei
41
3.1 Layouts für verschiedene Geräte
45
3.1.1 Das Layout basteln
45
3.1.2 Das Tablet-Layout
49
3.1.3 Portrait-Modus erzwingen
50
3.2 Die MainActivity
50
3.2.1 onCreate() und Content-View
50
3.2.2 Den Bildschirm aktualisieren
52
3.3 Fragments
53
3.3.1 Einfache Fragments
54
3.3.2 Fragments anzeigen
55
3.4 Button-Klicks verarbeiten
57
3.4.1 OnClickListener verdrahten
57
3.5 Einfache Game-Grafiken mit Inkscape
58
3.5.1 Füllung und Kontur
59
3.5.2 Export als PNG
60
3.5.3 Ein Launcher-Icon
61
3.6 Custom Views
62
3.6.1 Multiple ImageViews auswerfen
62
3.6.2 Ein eigener View
63
3.6.3 Bitmaps zeichnen
65
3.6.4 WimmelViews erzeugen
67
3.6.5 Es kann nur einen Frosch geben
68
3.6.6 Den Frosch küssen
70
3.7 Timing mit Handlern
72
3.7.1 Countdown im Takt
72
3.7.2 Aufräumarbeiten
74
3.8 Schriftarten
75
3.8.1 Truetype-Schriften verwenden
76
3.8.2 Ein Glow-Effekt
77
3.9 XML-Drawables
78
3.9.1 Ein XML-Shape
79
3.9.2 XML-Drawables verwenden
80
3.9.3 Multi-Shape-Drawables
81
3.10 Eigene Toasts
83
3.10.1 Eigene Toasts zusammenbauen
84
3.11 Dialoge
86
3.11.1 Ein Fragezeichen-Button
86
3.11.2 Einen Dialog erzeugen
87
3.12 Den Highscore speichern
89
3.12.1 Den Highscore verwalten
90
3.12.2 Die SharedPreferences
91
3.13 Zusammenfassung
92
4 Animierte GUI-Spiele
93
4.1 Bildbearbeitung mit GIMP
93
4.1.1 GIMP im Überblick
93
4.1.2 Eine Blase aufpusten
94
4.2 Vordefinierte Animationen
97
4.2.1 Game-Layouts erzeugen
97
4.2.2 Fragments anzeigen
99
4.2.3 Einfache View-Animationen
99
4.2.4 Eigene Animationen definieren
100
4.3 Eine BaseGameActivity
104
4.3.1 Schriftarten verwalten
104
4.4 Views bewegen
105
4.4.1 Seifenblasen-Physik
105
4.4.2 Seifenblasen bewegen
107
4.4.3 Bitmaps skalieren
109
4.5 Arbeit im Hintergrund
109
4.5.1 Der ScheduledExecutorService
110
4.5.2 Bewegung im Hintergrund
111
4.6 Seifenblasen fangen
112
4.6.1 Platzende Seifenblasen
113
4.6.2 Ein Callback für platzende Blasen
113
4.7 Zusammenfassung
115
5 Handys haben keinen Joystick
117
5.1 Smart Gaming mit Lagesensor
117
5.1.1 Projekt »SilverBall«
117
5.1.2 Die MainActivity vorbereiten
119
5.1.3 Eine Stahlkugel zeichnen
120
5.2 Dem View die Kugel geben
121
5.2.1 Die GameView-Klasse
121
5.2.2 Das Spiel starten
124
5.2.3 Kugel und Loch positionieren
125
5.3 Einfache Physik-Engine
126
5.3.1 Ein bisschen Physik genügt
126
5.3.2 Die Kugel der Schwerkraft aussetzen
127
5.3.3 Die GameEngine
128
5.3.4 Die Kugel bewegen
129
5.3.5 Der Handler-Umweg
131
5.4 Ruf mich an, Beschleunigungssensor
132
5.4.1 Der SensorManager
132
5.4.2 Ein Abo beim Beschleunigungssensor
133
5.4.3 Sensor und Engine verbinden
134
5.5 Game-Levels
135
5.5.1 Level-Definition in XML
135
5.5.2 Level-Models
136
5.5.3 Unmarshalling mit Simple XML
138
5.6 Minigolf ohne Schläger
139
5.6.1 Die Szene erweitern
139
5.6.2 Ein Level starten
141
5.6.3 Der Countdown
143
5.7 Kollision mit Hindernissen
143
5.7.1 Hindernisse in GameView
144
5.7.2 Hindernis-Physik
145
5.7.3 Kollisionen feststellen
145
5.8 Schnell, schneller, SurfaceView
147
5.8.1 Frameraten anzeigen
147
5.8.2 IGameView extrahieren
148
5.8.3 SurfaceView übernimmt das Kommando
149
5.8.4 Der Surface-Renderer
151
5.9 Zusammenfassung
153
6 Sound und Musik
155
6.1 Hintergrundmusik
156
6.1.1 Musik mit LMMS
157
6.1.2 Ein Instrument bedienen
158
6.1.3 Eine Melodie in Moll
159
6.2 Soundeffekte erzeugen
161
6.2.1 Effekte mit Audacity
161
6.3 Android-Audiofunktionen
162
6.3.1 Androids MediaPlayer
162
6.3.2 Effekte abspielen
163
6.3.3 Die Lautstärke regeln
165
6.4 Sprechende Blobs?
166
6.4.1 Bunte Blobs
166
6.4.2 Punkte verwalten
166
6.4.3 Sprachausgabe hinzufügen
169
6.5 Zusammenfassung
171
7 Location-based Gaming
173
7.1 Wo bin ich und woher weiß das Handy das?
174
7.1.1 Der LocationManager
174
7.1.2 Location-Updates abonnieren
175
7.2 Eine Karte anzeigen
175
7.2.1 OpenStreetMaps einbinden
176
7.2.2 Den MapView anzeigen
176
7.2.3 Die eigene Position anzeigen
177
7.3 Inventar mit SQLite
179
7.3.1 Datenstrukturen festlegen
179
7.3.2 Die SQLite-Datenbank verwalten
180
7.4 Zeichenobjekte hinzufügen
185
7.4.1 Ein Icon-Overlay
185
7.4.2 Stationen bauen
186
7.4.3 Ein Dialog für den Namen
188
7.5 Briefe erzeugen
189
7.5.1 Klickbare Overlay-Items
189
7.5.2 Die nächste Station finden
189
7.5.3 Einen Brief erzeugen
190
7.5.4 Alle Briefe finden
192
7.5.5 Einen Brief löschen
193
7.6 Briefe zustellen
193
7.6.1 Liste der Briefe anzeigen
193
7.6.2 Ein ListView und sein Adapter
195
7.6.3 Briefdetails eintragen
197
7.6.4 Einen Brief zustellen
198
7.7 Zusammenfassung
199
8 Schnelle 2D-Spiele
201
8.1 Views verschieben ist zu langsam
201
8.2 Schnelle 2D-Grafik mit libgdx
202
8.2.1 Was ist OpenGL ES?
202
8.2.2 libgdx verwenden
203
8.2.3 Die libgdx-Activity
205
8.3 Sprites
206
8.3.1 Game-Texturen erstellen
206
8.3.2 Pixelfonts erzeugen
211
8.4 Die UI implementieren
212
8.4.1 Die Game-Klasse
212
8.4.2 Eine Bühne für Buttons
213
8.4.3 Bühne frei für die Tabelle
214
8.4.4 Styles für Tabelleninhalte
214
8.5 Der GameScreen
217
8.5.1 Eine Flaschen-Klasse
217
8.5.2 Elemente der Spielwelt
218
8.5.3 Den GameScreen implementieren
219
8.5.4 Bierflaschen zeichnen
220
8.5.5 Bewegungen implementieren
221
8.6 Partikelsysteme
225
8.6.1 Ein Partikelsystem entsteht
225
8.6.2 Bläschen im GameScreen
227
8.7 Flaschenfang auf dem Desktop
228
8.7.1 Eine Java-Bibliothek
228
8.7.2 Die Gradle-Datei manipulieren
229
8.7.3 Die Main-Klasse für die Desktop-Version
230
8.8 Flaschenfang als Browser-Game
231
8.8.1 Ein GWT-Modul
231
8.8.2 Die Main-Klasse der GWT-Version
232
8.8.3 Die Gradle-Datei erweitern
234
8.9 Zusammenfassung
238
9 3D-Spiele
241
9.1 libgdx 3D
242
9.1.1 Hinein ins Labyrinth
242
9.1.2 Das Projekt aufbauen
243
9.1.3 Die MainActivity
243
9.2 Die Klasse TheGame
245
9.2.1 Der StartScreen
246
9.2.2 Zum GameScreen wechseln
249
9.3 3D-Koordinaten
250
9.3.1 Die Physik des Gleiters
251
9.4 Das Bühnenbildner-Modul
253
9.4.1 Die SceneEngine entwickeln
254
9.4.2 Model-Beschreibungen in XML
256
9.4.3 Blaupausen laden
257
9.4.4 Ein ModelManager
258
9.5 Eine Szene aufbauen
259
9.5.1 Szenenbeschreibung in XML
260
9.5.2 Modelle in der Szene platzieren
260
9.5.3 Modelle aufräumen
261
9.5.4 Kollisionen prüfen
262
9.5.5 Die Szene rendern
263
9.6 Arena mit Hindernissen
264
9.6.1 Das Labyrinth aufbauen
264
9.6.2 Labyrinth-Levels in XML definieren
265
9.7 Den GameScreen implementieren
269
9.7.1 Kamera und Environment
270
9.7.2 Ein Level laden
271
9.7.3 Mechanik in 3D
273
9.7.4 Die Steuerung implementieren
274
9.7.5 Kollisionen ermitteln
276
9.7.6 Sound-Pitch justieren
279
9.7.7 Die Szene rendern
280
9.8 Zusammenfassung
281
10 Social Gaming
283
10.1 Google Play Game Services
283
10.1.1 Die Developer Console
284
10.1.2 Das Spieldienste-Quartett
286
10.2 Mit den Spieldiensten verbinden
286
10.2.1 Das Build-Skript erweitern
287
10.2.2 Die BaseGameServicesActivity
287
10.2.3 Soziale Buttons
289
10.2.4 Erfolge und Bestenliste anzeigen
290
10.2.5 Bei den Spieldiensten anmelden
290
10.3 Erfolge feiern
291
10.3.1 Erfolge definieren
291
10.3.2 Erfolge freischalten
292
10.3.3 Die Datenbank erweitern
294
10.4 In Führung gehen
297
10.4.1 Bestenlisten definieren
297
10.4.2 In die Bestenliste eintragen
298
10.5 Spielstand in der Cloud
299
10.5.1 Cloud Save integrieren
300
10.5.2 Spielstand laden
301
10.5.3 Einen Spielstand in der Cloud speichern
302
10.5.4 Cloud Save verdrahten
302
10.6 Facebook integrieren
303
10.6.1 Facebook-SDK integrieren
304
10.6.2 Eine Facebook-App definieren
304
10.6.3 Die App mit Facebook verbinden
305
10.6.4 Auf Facebook teilen
308
10.6.5 Zusätzliche Erlaubnis einholen
310
10.7 Zusammenfassung
312
11 Monetarisieren
315
11.1 Google In-App Billing
316
11.1.1 Sinnvolle In-App-Artikel
316
11.1.2 Bonus-Levels
317
11.1.3 Lavapfützen
318
11.1.4 Kosmetik
319
11.1.5 Ein LevelPackManager
320
11.1.6 Kugelschmelze
326
11.1.7 In-App-Artikel definieren
328
11.1.8 Kaufvorgang starten
330
11.1.9 Einkauf registrieren
333
11.1.10 Schutz vor Hackern
334
11.2 Andere Bezahlmethoden
336
11.2.1 Amazon App Store
336
11.2.2 Gradle-Flavors
337
11.2.3 PayPal, Paysafecard und Co.
341
11.2.4 Gesponsertes Payment
342
11.3 Zusammenfassung
344
Anhang
345
A.1 Download-Paket
345
A.2 API-Übersicht Google Play Game Services
345
A.3 API-Übersicht libgdx
354
Index
377