| |
| |
About the Lead Author | |
| |
| |
About the Technical Consultant | |
| |
| |
Acknowledgments | |
| |
| |
Introduction | |
| |
| |
| |
Designing a Simple, Frenzic-Style Puzzle Game | |
| |
| |
| |
Creating Frenzic | |
| |
| |
Introducing Formic | |
| |
| |
Exploring the Formic Code | |
| |
| |
Setting Up the Project | |
| |
| |
Coding the Game Object | |
| |
| |
Coding the View Controller | |
| |
| |
Coding the Background View | |
| |
| |
Adding iPhone-Specific Functionality | |
| |
| |
Summary | |
| |
| |
| |
Mike Ash's Deep Dive Into Peer-to-Peer Networking | |
| |
| |
| |
Planning a Simple Collaborative Game | |
| |
| |
Building the GUI | |
| |
| |
Networking the Game | |
| |
| |
Defining the Networking Goals | |
| |
| |
Designing the Network Code | |
| |
| |
Understanding Endianness | |
| |
| |
Coding the Networking | |
| |
| |
Integrating Networking and the GUI | |
| |
| |
Summary | |
| |
| |
| |
Doing Several Things at Once: Performance Enhancements with Threading | |
| |
| |
| |
Beginning to Write Threading Applications | |
| |
| |
Knowing When to Thread | |
| |
| |
Understanding Threading Basics | |
| |
| |
Avoiding Threading Pitfalls | |
| |
| |
Writing the Thread the Needle Application | |
| |
| |
Building Our Application | |
| |
| |
Creating a Thread | |
| |
| |
Implementing a Critical Section | |
| |
| |
Stopping Multiple Threads at Once | |
| |
| |
Summary | |
| |
| |
| |
All Fingers and Thumbs: Multitouch Interface Design and Implementation | |
| |
| |
| |
Looking at the iPhone's Capabilities | |
| |
| |
Designing for Multitouch | |
| |
| |
Exploring the Multitouch API | |
| |
| |
Handling Events | |
| |
| |
Recognizing Gestures | |
| |
| |
Implementing Multitouch Controls | |
| |
| |
Handling Touches | |
| |
| |
Deciding What Movement Means | |
| |
| |
Applying the Movement | |
| |
| |
Applying Weight and Inertia | |
| |
| |
Tying Up Loose Ends | |
| |
| |
Summary | |
| |
| |
| |
Physics, Sprites, and Animation with the cocos2d-iPhone Framework | |
| |
| |
| |
Getting Started with Game Programming | |
| |
| |
Introducing OpenGL ES | |
| |
| |
Introducing cocos2d and Chipmunk | |
| |
| |
Developing Arcade Hockey | |
| |
| |
Tracking the User's Finger | |
| |
| |
Detecting Collisions | |
| |
| |
Simulating 3D Lighting in 2D Space | |
| |
| |
Creating a Simple Application | |
| |
| |
Setting Up the Xcode Project | |
| |
| |
Setting the Scene | |
| |
| |
Creating the Game Layer | |
| |
| |
Summary | |
| |
| |
| |
Serious Streaming Audio the Pandora Radio Way | |
| |
| |
| |
Choosing to Develop for the iPhone | |
| |
| |
Introducing Pandora Radio's Technology | |
| |
| |
Grasping the Basics of Audio Development | |
| |
| |
Managing Complexity | |
| |
| |
Outlining Our Sample Application | |
| |
| |
Streaming Audio | |
| |
| |
Keeping Your Code Format Agnostic | |
| |
| |
Using Envelopes and Encoding | |
| |
| |
Designing Our Sample Application | |
| |
| |
Implementing the Player | |
| |
| |
AudioSession | |
| |
| |
AudioRequest | |
| |
| |
AudioFile Stream | |
| |
| |
AudioQueue | |
| |
| |
AudioPlayer | |
| |
| |
Ending with a New Journey | |
| |
| |
Falling Behind in a Slow Network | |
| |
| |
Dropped Connections | |
| |
| |
Minimizing Gaps Between Songs | |
| |
| |
Resuming a Song | |
| |
| |
Improving Application Responsiveness | |
| |
| |
Finding Help Resources | |
| |
| |
Testing: Saving the Best for Last | |
| |
| |
Summary | |
| |
| |
| |
Going the Routesy Way with Core Location, XML, and SQLite | |
| |
| |
| |
Starting from Scratch | |
| |
| |
Assessing the Application Requirements | |
| |
| |
Creating the Routesy User Interface and Classes | |
| |
| |
Bringing Real-Time Predictions to Routesy | |
| |
| |
Adding Location-Based Information to Routesy | |
| |
| |
Putting the Finishing Touches on Routesy BART | |
| |
| |
Summary | |
| |
| |
Index | |