Language: English
Pages: 440
Table of Contents......Page 10
Preface......Page 22
1 Game Design......Page 28
The Game That Started It All (For Me)......Page 30
A Game That Fits with the iPhone......Page 31
What’s in a Name?......Page 32
The Game’s Objective......Page 33
Lives......Page 34
Objects......Page 35
Doors......Page 36
Entities......Page 37
Summary......Page 38
2 The Three Ts: Terminology, Technology, and Tools......Page 40
Sprite......Page 41
Sprite Sheet......Page 43
Animation......Page 45
Bitmap Fonts......Page 46
Tile Maps......Page 47
Particle System......Page 48
Collision Detection......Page 49
Artificial Intelligence (AI)......Page 50
Game Loop......Page 51
Objective-C......Page 53
OpenGL ES......Page 54
OpenAL......Page 57
Tools......Page 58
The iPhone SDK......Page 59
Summary......Page 65
Creating the Project in Xcode......Page 66
Running the Project......Page 69
Application Delegate......Page 70
Examining the Header File......Page 71
Examining the Implementation File......Page 73
EAGLView.h......Page 76
EAGLView.m......Page 77
Examining ES1Renderer.h......Page 85
Examining ES1Renderer.m......Page 86
Creating the Framebuffer and Renderbuffer......Page 87
Defining the Color Values......Page 93
Positioning......Page 94
How OpenGL Works......Page 95
Applying Transformations on the Model......Page 96
Rendering to the Screen......Page 97
Summary......Page 99
Timing Is Everything......Page 100
Collision Detection......Page 101
Frame-Based......Page 102
Time-Based, Fixed Interval......Page 104
Getting Started......Page 105
Inside the EAGLView.m File......Page 106
ES1Renderer Class......Page 109
Configuring the View Port......Page 112
Game Scenes and the Game Controller......Page 113
The GameController Class......Page 114
Inside GameController.m......Page 116
AbstractScene Class......Page 119
GameScene Class......Page 120
Exercises......Page 122
Introduction to Rendering......Page 124
Rendering a Quad......Page 125
Texture Coordinates......Page 128
Interleaved Vertex Arrays......Page 131
Structures......Page 133
Image Rendering Classes......Page 134
Texture2D Class......Page 135
TextureManager Class......Page 143
ImageRenderManager Class......Page 146
Initialization......Page 153
Retrieving a Sub-Image......Page 156
Rendering an Image......Page 157
Summary......Page 161
Exercise......Page 162
Introduction to Sprite Sheets......Page 164
Simple Sprite Sheet......Page 165
Complex Sprite Sheets......Page 166
Using Zwoptex......Page 168
The SpriteSheet Class......Page 169
Initialization......Page 170
Retrieving Sprites......Page 173
Initialization......Page 174
Parsing the Control File......Page 175
Retrieving a Sprite......Page 176
Summary......Page 177
Exercise......Page 178
Animation Chapter Project......Page 180
Frames......Page 181
Bounce Frame......Page 182
Initialization......Page 183
Adding Frames......Page 184
Animation Updates......Page 185
Animation Rendering......Page 187
Finishing Things Off......Page 188
Exercise......Page 190
Bitmap Font Project......Page 192
Introduction to Bitmap Fonts......Page 193
Creating the Bitmap Font Sprite Sheet......Page 194
Header File......Page 197
Initializer......Page 198
Parsing the Control File......Page 199
Rendering Text......Page 203
Rendering Justified Text......Page 205
Text Width and Height......Page 207
Summary......Page 208
Exercise......Page 209
Getting Started with the Tile Map Project......Page 210
Introduction to Tile Maps......Page 211
Tile Map Editor......Page 213
Layers......Page 215
Creating a Tile Map......Page 216
Create a New Tile Set......Page 217
Creating Object Layers......Page 218
Placing Objects......Page 219
Tileset Element......Page 220
Layer Element......Page 221
Object Group Element......Page 222
Layer Class......Page 223
TileSet Class......Page 229
TiledMap Class......Page 231
Initialization......Page 232
Parsing a Map File......Page 234
Creating the Layer Images......Page 243
Rendering a Layer......Page 245
Summary......Page 247
Exercise......Page 248
10 The Particle Emitter......Page 250
Particle Emitter Project......Page 251
Introduction to Particle Systems......Page 252
Particle System Parameters......Page 253
A Particle Is Born......Page 254
A Particle Lives......Page 255
A Particle Is Reborn......Page 256
Particle Emitter Configuration......Page 257
TBXMLParticleAdditions Class......Page 258
ParticleEmitter Class......Page 260
Have a Play......Page 274
Summary......Page 275
Sound Project......Page 276
Audio Sessions......Page 277
Playing Sound Effects......Page 279
Creating Sound Effects......Page 281
Sound Manager Classes......Page 283
SoundManager Class......Page 284
Sound Effect Management......Page 300
Loading Sound Effects......Page 301
Playing Sound Effects......Page 303
Stopping Sound Effects......Page 306
Handling Sound Interruptions......Page 308
Summary......Page 311
User Input Project......Page 312
Touch Events......Page 314
Processing Touch Events......Page 316
The touchesBegan Phase......Page 317
The touchesMoved Phase......Page 319
Processing Taps......Page 321
Accelerometer Events......Page 323
Summary......Page 325
Game Interface Project......Page 326
OpenGL ES Interface......Page 327
Rendering the Interface......Page 328
Handling Touches......Page 331
OpenGL ES Orientation......Page 335
Creating the Interface......Page 339
Wiring Up the Interface......Page 342
UIKit Orientation......Page 345
Showing and Hiding a UIKit Interface......Page 347
Summary......Page 350
Game Objects and Entities Project......Page 352
Game Objects......Page 353
AbstractObject Class......Page 354
EnergyObject Class......Page 356
Game Entities......Page 365
AbstractEntity Class......Page 366
Artificial Intelligence......Page 368
Player Entity Class......Page 370
Saving a Game Object or Entity......Page 379
Summary......Page 382
Introduction to Collision Detection......Page 384
Collision Pruning......Page 385
Frame-Based Versus Time-Based......Page 386
Axis-Aligned Bounding Boxes......Page 387
Detecting Collisions......Page 388
Collision Map......Page 389
Entity-to-Map Collision Detection......Page 392
Entity-to-Entity Collision Detection......Page 394
Summary......Page 395
The “Camera”......Page 396
Saving Game State......Page 398
Loading Game State......Page 400
Saving Game Settings......Page 402
Loading Game Settings......Page 403
Saving High Scores......Page 404
Adding a Score......Page 406
Saving High Scores......Page 407
Loading High Scores......Page 408
Performance and Tuning......Page 409
Using Instruments......Page 410
Leaks Instrument......Page 411
Using the OpenGL ES Instrument......Page 414
Compiling for Thumb......Page 416
Beta Testing......Page 417
Multiple Device Types......Page 418
Summary......Page 419
A......Page 422
C......Page 423
E......Page 424
G......Page 425
I......Page 426
J......Page 427
L......Page 428
O......Page 433
P......Page 434
R......Page 435
S......Page 436
T......Page 437
U......Page 439
Y-Z......Page 440