| Preface | p. xiii |
| Getting Started | p. 1 |
| System Requirements | p. 1 |
| Additional Resources | p. 2 |
| Installation | p. 2 |
| Creating Your First XNA Application | p. 4 |
| What You Just Did | p. 5 |
| Summary | p. 6 |
| Test Your Knowledge: Quiz | p. 7 |
| Fun with Sprites | p. 8 |
| A Look Behind the Scenes | p. 8 |
| Game Development Versus Polling | p. 11 |
| Modifying Your Game | p. 14 |
| Adding a Sprite to Your Project | p. 15 |
| Loading and Drawing Your Sprite | p. 18 |
| Transparency and Other Options | p. 21 |
| Layer Depth | p. 25 |
| Let's Move | p. 28 |
| Animation | p. 30 |
| Adjusting the Framerate | p. 35 |
| Adjusting the Animation Speed | p. 36 |
| What You Just Did | p. 38 |
| Summary | p. 38 |
| Test Your Knowledge: Quiz | p. 39 |
| Test Your Knowledge: Exercise | p. 39 |
| User Input and Collision Detection | p. 40 |
| More Sprites | p. 40 |
| Keyboard Input | p. 43 |
| Mouse Input | p. 45 |
| Gamepad Input | p. 47 |
| Keeping the Sprite in the Game Window | p. 50 |
| Collision Detection | p. 50 |
| What You Just Did | p. 55 |
| Summary | p. 56 |
| Test Your Knowledge: Quiz | p. 56 |
| Test Your Knowledge: Exercise | p. 57 |
| Applying Some Object-Oriented Design | p. 58 |
| Designing Your Classes | p. 58 |
| Creating a Sprite Class | p. 59 |
| Creating a User-Controlled Sprite Class | p. 63 |
| Creating an Automated Sprite | p. 65 |
| Game Components | p. 67 |
| Coding the SpriteManager | p. 69 |
| Cleaning Up | p. 71 |
| Making Them Move | p. 74 |
| What You Just Did | p. 74 |
| Summary | p. 74 |
| Test Your Knowledge: Quiz | p. 75 |
| Test Your Knowledge: Exercise | p. 75 |
| Sound Effects and Audio | p. 76 |
| Using XACT | p. 77 |
| Implementing XACT Audio Files in Code | p. 83 |
| Using the Simplified API for Sound and Audio | p. 85 |
| Adding More Sound to Your Game | p. 86 |
| What You Just Did | p. 91 |
| Summary | p. 91 |
| Test Your Knowledge: Quiz | p. 91 |
| Test Your Knowledge: Exercise | p. 91 |
| Basic Artificial Intelligence | p. 92 |
| The Turing Test | p. 93 |
| Creating Sprites at Random Intervals | p. 93 |
| Randomly Spawning Sprites | p. 95 |
| Irrelevant Objects | p. 99 |
| Creating a Chasing Sprite | p. 101 |
| Creating an Evading Sprite | p. 107 |
| What You Just Did | p. 112 |
| Summary | p. 113 |
| Test Your Knowledge: Quiz | p. 113 |
| Test Your Knowledge: Exercise | p. 113 |
| Putting It All Together | p. 114 |
| Drawing 2D Text | p. 115 |
| Randomly Generating Different Sprite Types | p. 121 |
| Adding Some Variety to Your Sprites | p. 123 |
| Adding a Background Image | p. 128 |
| Game Scoring | p. 130 |
| Game States | p. 137 |
| Enabling/Disabling GameComponents | p. 141 |
| Game-Over Logic and the Game-Over Screen | p. 143 |
| Fine-Tuning Gameplay | p. 150 |
| Creating Power-Ups | p. 154 |
| What You Just Did | p. 159 |
| Summary | p. 159 |
| Test Your Knowledge: Quiz | p. 160 |
| Test Your Knowledge: Exercise | p. 160 |
| Deploying to the Microsoft Zune | p. 161 |
| Setting Up Your Zune Device Connection | p. 161 |
| Creating a Zune Project | p. 163 |
| Input on the Zune | p. 165 |
| Audio on the Zune | p. 167 |
| Resolution and Gameplay Issues | p. 169 |
| Converting the Collision Game from Windows to Zune | p. 170 |
| Conditional Compilation Symbols | p. 171 |
| Converting the Collision Game Audio | p. 173 |
| Converting the Collision Game's Player Input Code | p. 175 |
| Converting the Collision Game's Screen Size | p. 178 |
| Zune Performance | p. 179 |
| What You Just Did | p. 180 |
| Summary | p. 181 |
| Test Your Knowledge: Quiz | p. 181 |
| 3D Game Development | p. 182 |
| Coordinate Systems | p. 182 |
| Cameras | p. 184 |
| Creating a 3D Camera | p. 186 |
| Drawing Primitives | p. 189 |
| Matrix Multiplication | p. 194 |
| Movement and Rotation | p. 194 |
| Backface Culling | p. 197 |
| More on Rotations | p. 198 |
| Even More Rotations | p. 200 |
| Primitive Types | p. 202 |
| Applying Textures | p. 204 |
| What You Just Did | p. 209 |
| Summary | p. 209 |
| Test Your Knowledge: Quiz | p. 210 |
| Test Your Knowledge: Exercise | p. 211 |
| 3D Models | p. 212 |
| Using 3D Models | p. 212 |
| Setting Up the Project | p. 213 |
| Adding a Model to Your Project | p. 216 |
| Drawing a Model Using a BasicModel Class | p. 217 |
| Adding a Model Manager | p. 221 |
| Rotating Your Model | p. 224 |
| What You Just Did | p. 226 |
| Summary | p. 226 |
| Test Your Knowledge: Quiz | p. 226 |
| Test Your Knowledge: Exercise | p. 227 |
| Creating a First-Person Camera | p. 228 |
| Components of a Moving 3D Camera | p. 228 |
| Moving in a First-Person Camera | p. 232 |
| Rotations in a First-Person Camera | p. 235 |
| Coding the Camera for the 3D Game | p. 240 |
| What You Just Did | p. 244 |
| Summary | p. 244 |
| Test Your Knowledge: Quiz | p. 245 |
| Test Your Knowledge: Exercise | p. 245 |
| 3D Collision Detection and Shooting | p. 246 |
| Creating a Moving Enemy | p. 246 |
| Adding Some Game Logic | p. 248 |
| Firing Shots | p. 257 |
| 3D Collision Detection and Bounding Spheres | p. 261 |
| Adding a Crosshair | p. 265 |
| Adding Sound | p. 266 |
| What You Just Did | p. 273 |
| Summary | p. 273 |
| Test Your Knowledge: Quiz | p. 274 |
| Test Your Knowledge: Exercise | p. 274 |
| HLSL Basics | p. 275 |
| HLSL Syntax | p. 277 |
| Dissecting a Sample HLSL Effect File | p. 278 |
| Applying an HLSL Effect in C# | p. 287 |
| Applying HLSL Using Textures | p. 295 |
| HLSL Effects: Creating a Negative | p. 303 |
| HLSL Effects: Blur | p. 304 |
| HLSL Effects: Grayscale | p. 304 |
| What You Just Did | p. 306 |
| Summary | p. 307 |
| Test Your Knowledge: Quiz | p. 307 |
| Test Your Knowledge: Exercise | p. 307 |
| Particle Systems | p. 308 |
| Creating a Custom Vertex | p. 308 |
| Creating a Particle Engine | p. 312 |
| Adding a Particle Effect File | p. 320 |
| Adding Your Particle Engine to Your Game | p. 322 |
| Adding a Starfield | p. 325 |
| What You Just Did | p. 330 |
| Summary | p. 331 |
| Test Your Knowledge: Quiz | p. 331 |
| Wrapping Up Your 3D Game | p. 332 |
| Adding a Splash Screen Game Component | p. 332 |
| Keeping Score | p. 342 |
| Adding a Power-Up | p. 347 |
| What You Just Did | p. 352 |
| Test Your Knowledge: Exercise | p. 353 |
| Deploying to the Xbox 360 | p. 354 |
| Adding an Xbox 360 Device | p. 354 |
| Converting a Project to Run on the Xbox 360 | p. 358 |
| Supporting Gamepad Input | p. 361 |
| Deploying to the Xbox 360 | p. 367 |
| Xbox 360 Display Settings | p. 369 |
| The Title Safe Region | p. 370 |
| What You Just Did | p. 372 |
| Summary | p. 372 |
| Test Your Knowledge: Quiz | p. 373 |
| Multiplayer Games | p. 374 |
| Split-Screen Functionality | p. 374 |
| Network Game Development | p. 384 |
| Network Configurations | p. 385 |
| Writing an XNA Network Game | p. 387 |
| Modifying the Sprite Class | p. 388 |
| Modifying the UserControlledSprite Class | p. 388 |
| Coding Your Game1 Class | p. 391 |
| Adding Update Code | p. 394 |
| Adding Draw Code | p. 410 |
| Adding Biohazard Bombs of Insanity! | p. 415 |
| What You Just Did | p. 422 |
| Summary | p. 423 |
| Test Your Knowledge: Quiz | p. 424 |
| Answers to Quizzes and Exercises | p. 425 |
| Index | p. 477 |
| Table of Contents provided by Ingram. All Rights Reserved. |