| About the Author | p. xiii |
| About the Technical Reviewer | p. xv |
| Acknowledgments | p. xvii |
| Introduction | p. xix |
| Getting Started | p. 1 |
| Downloading and Installing the Software | p. 1 |
| Installing Visual Studio 2008 | p. 2 |
| Installing XNA Game Studio 3.0 | p. 6 |
| Your First "Game" | p. 9 |
| Summary | p. 12 |
| Introduction to XNA Game Studio 3.0 | p. 13 |
| The Project Structure of an XNA Game | p. 13 |
| Important Methods in an XNA Game | p. 15 |
| Initialize Method | p. 17 |
| LoadContent Method | p. 17 |
| UnloadContent Method | p. 18 |
| Update Method | p. 18 |
| Draw Method | p. 20 |
| XNA Game Flow | p. 21 |
| Putting It All Together | p. 22 |
| Check Your Knowledge | p. 26 |
| Summary | p. 26 |
| Game Content | p. 27 |
| What Is Content? | p. 27 |
| Types of Content | p. 28 |
| Images | p. 28 |
| Audio | p. 35 |
| Fonts | p. 37 |
| Effects | p. 38 |
| XML Data | p. 38 |
| The XNA Content Pipeline | p. 38 |
| What the Content Pipeline Provides | p. 39 |
| Content Pipeline Architecture | p. 39 |
| Content Stages | p. 41 |
| Loading Content at Runtime | p. 41 |
| Custom Importers and Processors | p. 42 |
| The Content Type Class | p. 43 |
| The Intermediate Content and Reader Classes | p. 46 |
| The Writer Class | p. 48 |
| The Content Processor Class | p. 49 |
| Check Your Knowledge | p. 55 |
| Summary | p. 55 |
| Developing for the Zune | p. 57 |
| Deploying to the Zune | p. 57 |
| Updating Your Zune's Firmware | p. 58 |
| Registering Your Zune with Visual Studio | p. 59 |
| Debugging, Running, and Rebooting | p. 66 |
| Running with Debugging | p. 67 |
| Running Without Debugging | p. 67 |
| Creating Windows Versions of Zune Games | p. 68 |
| Zune Specifications and Optimization | p. 71 |
| Reviewing the Core Zune Specifications | p. 71 |
| Writing Performant Code for the Zune | p. 71 |
| Handling Input on the Zune | p. 73 |
| Accessing the Zune Pad | p. 73 |
| Accessing the Directional Click Buttons | p. 77 |
| Accessing Other Buttons | p. 77 |
| Using an Input Handler Class for Zune and Windows Games | p. 78 |
| Playing Music in Zune Games | p. 93 |
| Using Media Player Component Classes | p. 93 |
| Using the Guide | p. 95 |
| Putting It Together | p. 96 |
| Your First Real Zune Game: OutBreak | p. 103 |
| Designing OutBreak | p. 103 |
| Creating OutBreak | p. 107 |
| Check Your Knowledge | p. 127 |
| Summary | p. 127 |
| XNA Fundamental Game Programming Concepts | p. 129 |
| Math in Two Dimensions | p. 130 |
| The Cartesian Coordinate System | p. 130 |
| Points and Vectors | p. 132 |
| Trigonometric Functions | p. 137 |
| Using Math in Your Games | p. 138 |
| Positioning Screen Objects and Dividing by Two | p. 138 |
| Locating Sides of Objects | p. 142 |
| Creating Bounding Boxes | p. 143 |
| Detecting Collisions with Bounding Boxes | p. 144 |
| Emulating Physics | p. 144 |
| Using Other Time-Dependent Functions | p. 148 |
| Collision Detection Revisited | p. 152 |
| Simple Collision Detection | p. 153 |
| Per-Pixel Collision Detection | p. 153 |
| Simple Game State Management | p. 159 |
| Using Components | p. 162 |
| Bringing It All Together with Monkey Feeder | p. 169 |
| Configuring the Solution, Projects, Folders, and Assets | p. 171 |
| Creating the Components | p. 172 |
| Putting the Components Together | p. 189 |
| Setting Game Properties to Appear More Professional | p. 197 |
| Build, Run, Copious Celebration | p. 197 |
| Suggested Extensions | p. 199 |
| Cleaning Up for Deployment | p. 199 |
| Making Changes in AssemblyInfo.cs | p. 199 |
| Changing the Thumbnail | p. 200 |
| Check Your Knowledge | p. 200 |
| Summary | p. 201 |
| Advanced Techniques | p. 203 |
| Device Status | p. 203 |
| Checking the Battery Status | p. 203 |
| Determining Battery Life | p. 205 |
| Determining If the Zune Is Plugged In | p. 205 |
| Determining When the Power Status Changes | p. 206 |
| Advanced Sprite Batch Techniques | p. 213 |
| How Sprite Batches Work | p. 213 |
| Blend Modes | p. 213 |
| Sprite Batches and Game Performance | p. 217 |
| Games in Landscape Mode | p. 223 |
| Challenges with Landscape Mode | p. 223 |
| Possible Solutions for Landscape Mode | p. 224 |
| Best Practices and Considerations for Mode Support | p. 225 |
| Using Render Targets for Landscape Mode | p. 225 |
| Componentizing Landscape Mode | p. 231 |
| Game State Management with Screens | p. 231 |
| Screen Management Samples | p. 231 |
| Building a Screen Management System | p. 232 |
| Storage on the Zune | p. 234 |
| Advanced Touch Sensitivity on the Zune | p. 239 |
| Graphic Sound Visualizers | p. 243 |
| Check Your Knowledge | p. 249 |
| Summary | p. 250 |
| Final Exercise: Multiplayer Crazy Eights | p. 251 |
| Wireless Networking with the Zune | p. 251 |
| Elements of a Multiplayer Game | p. 252 |
| How Data is Transmitted in Wireless Zune Games | p. 252 |
| The Network API and Tags | p. 252 |
| Robot Tag: A Two-Player Game | p. 253 |
| Game Solution Structure | p. 254 |
| Network Session Management | p. 255 |
| The Robot Object | p. 257 |
| Game Screens | p. 259 |
| Robot Tag Review | p. 268 |
| Multiplayer Crazy Eights for the Zune | p. 268 |
| Rules of Crazy Eights | p. 268 |
| Game Requirements | p. 269 |
| Network State Design | p. 270 |
| Architectural Options (High Level) | p. 273 |
| Screen Design | p. 273 |
| Building the Card Library | p. 277 |
| Building the Screen Manager Library | p. 289 |
| Building Crazy Eights | p. 313 |
| Summary | p. 373 |
| Recommended Resources | p. 375 |
| Blogs | p. 375 |
| Microsoft Resources | p. 376 |
| Creators Club Samples | p. 376 |
| Zune Development Quick Reference Guide | p. 377 |
| Animation | p. 377 |
| Input Handling | p. 377 |
| Gesture Support | p. 378 |
| Forcing Screen Dimensions on Windows | p. 379 |
| Playing Music | p. 379 |
| Collision Detection | p. 379 |
| Changing Game Properties | p. 380 |
| Changing the Thumbnail | p. 381 |
| Checking Battery Status | p. 381 |
| Drawing in Landscape Mode | p. 382 |
| Using Storage | p. 382 |
| Creating Visualizers | p. 383 |
| Check Your Knowledge Answers | p. 385 |
| p. 385 |
| p. 386 |
| p. 386 |
| p. 387 |
| p. 387 |
| Index | p. 389 |
| Table of Contents provided by Ingram. All Rights Reserved. |