Search and Find
Service
Contents at a Glance
5
Contents
6
About the Author
10
About the Technical Reviewer
11
Acknowledgments
12
Introduction
13
If You’re New to XNA and Starting Your First 2D Game
14
If You’re Going from 2D to 3D
14
Start Using the Content Pipeline
14
Enhance the Final Image with HLSL Shaders
15
Prerequisites
15
Downloading the Code
16
Contacting the Author
16
Getting Started with XNA 3.0
17
1- 1. Install XNA Game Studio 3.0
17
1- 2. Start Your First XNA 3.0 Project
18
1- 3. Deploy Your XNA 3.0 Game on Xbox 360
21
1- 4. Deploy Your XNA 3.0 Game on the Zune
24
1- 5. Deploy Your XNA 3.0 Game on Another PC
26
1- 6. Customize Game Loop Timing
28
1- 7. Make Your Code Plug- and- Play Using GameComponents
30
1- 8. Allow Your GameComponents to Communicate with Each Other by Implementing GameServices
34
1- 9. Save and Load Data to or from a File
39
Setting Up Different Camera Modes in Your 3D World
45
2- 1. Set Up the Camera: Position, Target, and View Frustum
46
2- 2. Specify the Target of Your Camera
53
2- 3. Create a First- Person Shooter Camera: A Quake- Style Camera
60
2- 4. Create a Freelancer- Style Camera: Full 3D Rotation Using Quaternions
66
2- 5. Check Whether an Object Is in Sight of the Camera
73
2- 6. Detect Camera Collision Against Models, Walls, or Terrains
79
2- 7. Create a Camera Fly- by Action
82
2- 8. Remove the Solid Background Color: Skybox
92
2- 9. Draw Only the Parts of the Scene That Are in Sight of the Camera: Octree
104
2- 10. Use a Quadtree to Hide Parts of a Grid That Are Not in Sight
127
2- 11. Create a Real- Time Camera- Dependant Optimally Adapting Mesh ( ROAM) Terrain
137
2- 12. Set Up a Post- Processing Framework
159
2- 13. Create a Blur/ Glow Post- Processing Effect
171
2- 14. Write a Custom Content Importer
182
Working with 2D Images/ Textures in XNA 3.0
189
3- 1. Display 2D Images: Load and Render Images Using the SpriteBatch Class
190
3- 2. Rotate, Scale, and Mirror an Image
196
3- 3. Render Transparent Images Using Layers
199
3- 4. Consider Performance When Using the SpriteBatch Class
203
3- 5. Display Text
206
3- 6. Create a 2D Menu Interface
208
3- 7. Create a Texture, Define the Color of Each Pixel, Save a Texture to a File
222
3- 8. Render the Scene into a Texture
225
3- 9. Extend the Image Content Processor
229
3- 10. Extend the Image Content Processor: Grayscale Conversion and Processor Parameters
242
3- 11. Make Your Scene More Impressive with Billboarding: Render 2D Images in a 3D World So They Always Face the Camera
247
3- 12. Create a 3D Explosion Effect/ Simple Particle System
269
3- 13. Create a Mirror: Projective Texturing
282
Working with Models
296
4- 1. Load and Render a Model Using the BasicEffect Class
297
4- 2. Set Different World Matrices for Different Objects, Combining World Matrices
301
4- 3. Find the Rotation Angle Corresponding to a Direction
308
4- 4. Use Acceleration to Control Velocity
310
4- 5. Construct the Global BoundingSphere Around a Model
314
4- 6. Scale the Model to a Predefined Size
317
4- 7. Render a Model Using Custom Effects and Custom Textures ( Easy Approach)
319
4- 8. Visualize the Bone Structure of a Model
324
4- 9. Make the Bones Move Individually: Model Animation
331
4- 10. Use BoundingSpheres for Basic Model Collision Detection
336
4- 11. Use Ray- Traced Collision Detection for Small/ Fast Objects
342
4- 12. Extend the Model Content Processor to Load Custom Effects ( Clean Approach)
346
4- 13. Gain Direct Access to Vertex Position Data by Extending the Model Processor
354
4- 14. Gain Direct Access to Vertex Position Data of Each ModelMesh by Extending the Model Processor
359
4- 15. Gain Direct Access to Vertex Position Data by Defining a Custom TypeWriter and TypeReader
364
4- 16. Store Multiple Objects in the Tag Property by Defining a Custom TypeWriter and TypeReader
375
4- 17. Correctly Tilt a Model According to the Terrain Underneath
381
4- 18. Detect Ray- Model Collisions Using Per- Triangle Checks
393
4- 19. Detect Whether the Pointer Is Over a Model
403
Getting the Most Out of Vertices
408
5- 1. Render Triangles, Lines, and Points in a 3D World
409
5- 2. Apply a Texture to Your Triangles
420
5- 3. Remove Redundant Vertices Using Indices
428
5- 4. Store Your Vertices and Indices in the Memory of Your Graphics Card Using a VertexBuffer and an IndexBuffer
432
5- 5. Store Your Frequently Updated Vertices in a DynamicVertexBuffer
438
5- 6. Enable Backface Culling: What It Is and What It Can Do for You
440
5- 7. Automatically Calculate the Normals for All Vertices in a VertexBuffer
444
5- 8. Create a Terrain Based on a VertexBuffer and an IndexBuffer
451
5- 9. Calculate the Exact Height of a Terrain Between Vertices Using Bilinear Interpolation
461
5- 10. Calculate the Collision Point Between the Pointer and the Terrain: Surface Picking
467
5- 11. Load Data from an XML File
475
5- 12. Create Your Own Vertex Format
481
5- 13. Work with Bump Mapping: Fixed Normal
491
5- 14. Add Per- Pixel Detail by Bump Mapping in Tangent Space
496
5- 15. Add an Ocean to Your 3D World
508
5- 16. Apply Catmull- Rom Interpolation in 3D to Generate Additional Vertices
522
5- 17. Create the Vertices for a Racing Track
526
Adding Light to Your Scene in XNA 3.0
536
6- 1. Define Normals and Use the BasicEffect
537
6- 2. Share Normals Between Vertices
543
6- 3. Add Higher Detail to Your Lighting: Per- Pixel Lighting
548
6- 4. Add Specular Highlights to Reflective Surfaces
551
6- 5. Add HLSL Vertex Shading
553
6- 6. Define a Point Light Using HLSL
560
6- 7. Add HLSL Per- Pixel Lighting
562
6- 8. Define a Spotlight Using HLSL
566
6- 9. Add HLSL Specular Highlights
568
6- 10. Add Multiple Lights to Your Scene Using Deferred Shading
573
6- 11. Add Shadowing Capability to Your Deferred Shading Engine
589
Adding Sounds to Your XNA 3.0 Project
598
7- 1. Play and Control Simple . wav Sound Files
598
7- 2. Play MP3 or WMA Sound Files
600
7- 3. Play Simple . wav Sound Files Through XAct
601
7- 4. Loop Sounds
605
7- 5. Play Sounds from a 3D Location Relative to the Camera: 3D Sound
609
Networking in XNA 3.0
613
8- 1. Sign In for Networking Services
613
8- 2. Create a Network Session
616
8- 3. Join a Network Session
622
8- 4. Send/ Receive Data Over the Network
628
8- 5. Search for Networking Sessions Asynchronously
636
8- 6. Add Rich Presence Information
640
8- 7. Move from the Lobby to the Actual Game
641
Index
645
All prices incl. VAT