1. Trang chủ
  2. » Công Nghệ Thông Tin

XNA 3.0 Game Programming Recipes: A Problem-Solution Approach potx

663 503 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề XNA 3.0 Game Programming Recipes: A Problem-Solution Approach
Tác giả Riemer Grootjans
Người hướng dẫn Ewan Buckingham
Trường học Springer-Verlag New York, Inc.
Chuyên ngành Game Programming
Thể loại Sách hướng dẫn
Năm xuất bản 2009
Thành phố United States of America
Định dạng
Số trang 663
Dung lượng 2,95 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Game1 ConstructorThe C]ia- method IS CALLED ONCE AT THE VERY MOMENT YOUR PROJECT IS RUN 4HIS MEANS NONE OFTHE INTERNAL CLOCKWORK HAS BEEN INITIALIZED THE MOMENT THIS METHOD THE CONSTRUCT

Trang 2

XNA 3.0 Game

Programming Recipes

A Problem-Solution Approach

Riemer Grootjans

Trang 3

All rights reserved No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher.

ISBN-13 (pbk): 978-1-4302-1855-5

ISBN-13 (electronic): 978-1-4302-1856-2

Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1

Trademarked names may appear in this book Rather than use a trademark symbol with every occurrence

of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark

Lead Editor: Ewan Buckingham

Development Editor: Joohn Choe

Technical Reviewer: Fabio Claudio Ferracchiati

Editorial Board: Clay Andres, Steve Anglin, Mark Beckner, Ewan Buckingham, Tony Campbell,

Gary Cornell, Jonathan Gennick, Michelle Lowman, Matthew Moodie, Jeffrey Pepper,

Frank Pohlmann, Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom Welsh

Project Manager: Richard Dal Porto

Copy Editors: Heather Lang, Kim Wimpsett

Associate Production Director: Kari Brooks-Copony

Production Editor: Elizabeth Berry

Compositor: Linda Weidemann, Wolf Creek Publishing Services

Proofreader: April Eddy

Indexer:Broccoli Information Management

Artist: April Milne

Cover Designer: Kurt Krames

Manufacturing Director: Tom Debolski

Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013 Phone 1-800-SPRINGER, fax 201-348-4505, e-mail kn`ano)ju<olnejcan)o^i*_ki,

The information in this book is distributed on an “as is” basis, without warranty Although every caution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly

pre-or indirectly by the infpre-ormation contained in this wpre-ork

The source code for this book is available to readers at dppl6++sss*]lnaoo*_ki You may need to answer questions pertaining to this book in order to successfully download the code

Trang 4

To my parents and brothers, for giving me each and every opportunity.

To my friends and coworkers, for their support and laughs.

Trang 5

Contents at a Glance

About the Author xxiii

About the Technical Reviewer xxv

Acknowledgments xxvii

Introduction xxix

CHAPTER 1 Getting Started with XNA 3.0 1

CHAPTER 2 Setting Up Different Camera Modes in Your 3D World 29

CHAPTER 3 Working with 2D Images/Textures in XNA 3.0 173

CHAPTER 4 Working with Models 281

CHAPTER 5 Getting the Most Out of Vertices 393

CHAPTER 6 Adding Light to Your Scene in XNA 3.0 521

CHAPTER 7 Adding Sounds to Your XNA 3.0 Project 583

CHAPTER 8 Networking in XNA 3.0 599

INDEX 631

Trang 6

About the Author xxiii

About the Technical Reviewer xxv

Acknowledgments xxvii

Introduction xxix

CHAPTER 1 Getting Started with XNA 3.0 1

1-1 Install XNA Game Studio 3.0 1

1-2 Start Your First XNA 3.0 Project 2

1-3 Deploy Your XNA 3.0 Game on Xbox 360 5

1-4 Deploy Your XNA 3.0 Game on the Zune 8

1-5 Deploy Your XNA 3.0 Game on Another PC 10

1-6 Customize Game Loop Timing 12

1-7 Make Your Code Plug-and-Play Using GameComponents 14

1-8 Allow Your GameComponents to Communicate with Each Other by Implementing GameServices 18

1-9 Save and Load Data to or from a File 23

CHAPTER 2 Setting Up Different Camera Modes in Your 3D World 29

2-1 Set Up the Camera: Position, Target, and View Frustum 30

2-2 Specify the Target of Your Camera 37

2-3 Create a First-Person Shooter Camera: A Quake-Style Camera 44

2-4 Create a Freelancer-Style Camera: Full 3D Rotation Using Quaternions 50

2-5 Check Whether an Object Is in Sight of the Camera 57

2-6 Detect Camera Collision Against Models, Walls, or Terrains 63

2-7 Create a Camera Fly-by Action 66

2-8 Remove the Solid Background Color: Skybox 76

2-9 Draw Only the Parts of the Scene That Are in Sight of the Camera: Octree 88

2-10 Use a Quadtree to Hide Parts of a Grid That Are Not in Sight 111

2-11 Create a Real-Time Camera-Dependant Optimally Adapting Mesh (ROAM) Terrain 121

Trang 7

2-12 Set Up a Post-Processing Framework 143

2-13 Create a Blur/Glow Post-Processing Effect 155

2-14 Write a Custom Content Importer 166

CHAPTER 3 Working with 2D Images/Textures in XNA 3.0 173

3-1 Display 2D Images: Load and Render Images Using the SpriteBatch Class 174

3-2 Rotate, Scale, and Mirror an Image 180

3-3 Render Transparent Images Using Layers 183

3-4 Consider Performance When Using the SpriteBatch Class 187

3-5 Display Text 190

3-6 Create a 2D Menu Interface 192

3-7 Create a Texture, Define the Color of Each Pixel, Save a Texture to a File 206

3-8 Render the Scene into a Texture 209

3-9 Extend the Image Content Processor 213

3-10 Extend the Image Content Processor: Grayscale Conversion and Processor Parameters 226

3-11 Make Your Scene More Impressive with Billboarding: Render 2D Images in a 3D World So They Always Face the Camera 231

3-12 Create a 3D Explosion Effect/Simple Particle System 253

3-13 Create a Mirror: Projective Texturing 266

CHAPTER 4 Working with Models 281

4-1 Load and Render a Model Using the BasicEffect Class 282

4-2 Set Different World Matrices for Different Objects, Combining World Matrices 286

4-3 Find the Rotation Angle Corresponding to a Direction 293

4-4 Use Acceleration to Control Velocity 295

4-5 Construct the Global BoundingSphere Around a Model 299

4-6 Scale the Model to a Predefined Size 302

4-7 Render a Model Using Custom Effects and Custom Textures (Easy Approach) 304

4-8 Visualize the Bone Structure of a Model 309

4-9 Make the Bones Move Individually: Model Animation 316

4-10 Use BoundingSpheres for Basic Model Collision Detection 321

4-11 Use Ray-Traced Collision Detection for Small/Fast Objects 327

The Problem 327

Trang 8

4-12 Extend the Model Content Processor to Load Custom Effects

(Clean Approach) 331

4-13 Gain Direct Access to Vertex Position Data by Extending the Model Processor 339

4-14 Gain Direct Access to Vertex Position Data of Each ModelMesh by Extending the Model Processor 344

4-15 Gain Direct Access to Vertex Position Data by Defining a Custom TypeWriter and TypeReader 349

4-16 Store Multiple Objects in the Tag Property by Defining a Custom TypeWriter and TypeReader 360

4-17 Correctly Tilt a Model According to the Terrain Underneath 366

4-18 Detect Ray-Model Collisions Using Per-Triangle Checks 378

4-19 Detect Whether the Pointer Is Over a Model 388

CHAPTER 5 Getting the Most Out of Vertices 393

5-1 Render Triangles, Lines, and Points in a 3D World 394

5-2 Apply a Texture to Your Triangles 405

5-3 Remove Redundant Vertices Using Indices 413

5-4 Store Your Vertices and Indices in the Memory of Your Graphics Card Using a VertexBuffer and an IndexBuffer 417

5-5 Store Your Frequently Updated Vertices in a DynamicVertexBuffer 423

5-6 Enable Backface Culling: What It Is and What It Can Do for You 425

5-7 Automatically Calculate the Normals for All Vertices in a VertexBuffer 429

5-8 Create a Terrain Based on a VertexBuffer and an IndexBuffer 436

5-9 Calculate the Exact Height of a Terrain Between Vertices Using Bilinear Interpolation 446

5-10 Calculate the Collision Point Between the Pointer and the Terrain: Surface Picking 452

5-11 Load Data from an XML File 460

5-12 Create Your Own Vertex Format 466

5-13 Work with Bump Mapping: Fixed Normal 476

5-14 Add Per-Pixel Detail by Bump Mapping in Tangent Space 481

5-15 Add an Ocean to Your 3D World 493

5-16 Apply Catmull-Rom Interpolation in 3D to Generate Additional Vertices 507

5-17 Create the Vertices for a Racing Track 511

The Problem 511

Trang 9

CHAPTER 6 Adding Light to Your Scene in XNA 3.0 521

6-1 Define Normals and Use the BasicEffect 522

6-2 Share Normals Between Vertices 528

6-3 Add Higher Detail to Your Lighting: Per-Pixel Lighting 533

6-4 Add Specular Highlights to Reflective Surfaces 536

6-5 Add HLSL Vertex Shading 538

6-6 Define a Point Light Using HLSL 545

6-7 Add HLSL Per-Pixel Lighting 547

6-8 Define a Spotlight Using HLSL 551

6-9 Add HLSL Specular Highlights 553

6-10 Add Multiple Lights to Your Scene Using Deferred Shading 558

6-11 Add Shadowing Capability to Your Deferred Shading Engine 574

CHAPTER 7 Adding Sounds to Your XNA 3.0 Project 583

7-1 Play and Control Simple wav Sound Files 583

7-2 Play MP3 or WMA Sound Files 585

7-3 Play Simple wav Sound Files Through XAct 586

7-4 Loop Sounds 590

7-5 Play Sounds from a 3D Location Relative to the Camera: 3D Sound 594

CHAPTER 8 Networking in XNA 3.0 599

8-1 Sign In for Networking Services 599

8-2 Create a Network Session 602

8-3 Join a Network Session 608

8-4 Send/Receive Data Over the Network 614

8-5 Search for Networking Sessions Asynchronously 622

8-6 Add Rich Presence Information 626

8-7 Move from the Lobby to the Actual Game 627

INDEX 631

Trang 10

NRIEMER GROOTJANS received a degree in electronic engineering with a specialization in informatics at the Vrije Universiteit Brussel in Brussels, Belgium He is currently working toward a Ph.D degree as a member of

a research team The goal of the team is to develop a real-time, 3D, depth-sensing camera, and he is responsible for (among other things) the analysis and visualization of the 3D data For a few years, Riemer has been maintaining a website with tutorials for DirectX Since the launch

of XNA in December 2006, he has ported all his content to XNA and is helping more than 1,500 people on their paths to XNA success every day

In July 2007 and July 2008, he received the Microsoft MVP Award for his contributions to the

XNA community

Trang 11

About the Technical Reviewer

A prolific writer on cutting-edge technologies, FABIO CLAUDIO FERRACCHIATI has contributed to

over a dozen books on NET, C#, Visual Basic, and ASP.NET He is a NET MCSD and lives in

Milan, Italy

Trang 12

I would like to express my appreciation and thankfulness to the skillful group of professionals

at Apress who helped me complete this book

Thanks to Regis Le Roy for the 3D models he provided me to play around with and test

the code on Furthermore, I would like to thank Danc from dppl6++hkopc]n`aj*_ki for the 2D

artwork used in my book and code There are some real gems to be found on your site!

And last but definitely not least, I thank Xan Tium from dppl6++t)o_aja*_ki for providing

me with the necessary hardware on which to test my code

Trang 13

Introduction

When Microsoft released XNA in December 2006, it immediately became clear that this

new technology would have a major impact on the possibilities for game developers XNA was

designed from the ground up with ease of use in mind, while not sacrificing performance or

capabilities to achieve this goal As a bonus, any game you create in XNA for the PC also runs

on the Xbox 360 console! With the coming of XNA 3.0, you can even run your 2D game on the

Zune handheld device

In the span of two years, a large user community has grown around XNA You can find

code examples on a vast number of sites, ask your questions in one of the lively forums, or

even meet local people who share the same passion in one of the XNA user groups Whether

you want to get up to speed with XNA quickly or you have tried some of the tutorial sites and

are looking for the next step, this book is for you With almost 100 recipes dealing with various

challenges you may encounter during your journey with XNA, this book covers each corner of

the XNA Framework

The first recipes of the chapters in this book explain some stand-alone concepts and

have been kept as clear as possible As an example, a recipe explaining how to load a 3D

Ik`ah from a file and render it to the screen will not render any trees in the background to

make the final result look nicer, because this would clutter the code and make it more

com-plex than it should be

On the other hand, each chapter ends with some recipes that combine all you’ve learned

thus far into something new and powerful As such, you can step through the recipes, building

up your experience in XNA as you move to the next recipe

This book explains the functionality of the XNA 3.0 Framework If any updates are made to the XNA Framework in the future, I will update the code for this book and make it available for

download from my website at sss*neaiano*jap+ If you have any questions regarding the text

or code examples found in this book, I kindly invite you to post them on the forum on my site

so you can get an answer as soon as possible

The XNA Framework is roughly divisible into three parts The main part contains your

XNA project and its code Next in line is the content pipeline, a flexible component allowing

you to preprocess any art assets you want to load into your XNA project Last, but definitely

not least, are the High-Level Shading Language (HLSL) effects, which are used mainly to

improve the visual quality of the final image you render to the screen

Each chapter starts with some recipes that cover the XNA functionality related to the

chapter However, this book can also be used as a detailed guide to the content pipeline and to HLSL effects Whether you’re brand new to XNA or looking to take the step from 2D to 3D, this

book will help you on your way

Trang 14

If You’re New to XNA and Starting Your

First 2D Game

If you’re completely new to XNA, you might be interested in going through the following pes to get you up and running as fast as possible:

reci-If You’re Going from 2D to 3D

The step from 2D to 3D often seems much steeper than it actually is If you go through the lowing recipes in the listed order, you’ll learn all about what’s needed to define your own 3D worlds:

fol-Start Using the Content Pipeline

If you’re interested in getting into the XNA content pipeline, I advise you to read the following recipes in this order:

Parameters

Trang 15

Model Processor

TypeReader

TypeReader

Enhance the Final Image with HLSL Shaders

This book also contains a lot of HLSL samples You can follow these recipes in this order:

World So They Always Face the Camera

Prerequisites

The software you need to develop your own games in XNA 3.0 is completely free As I’ll explain

in recipe 1-1, you’ll need both the Visual C# 2008 Express Edition and XNA 3.0 Game Studio,

which you can download for free from Microsoft’s website

The only cost incurred will be if you want to upload your finished game to your Xbox 360

console, when an annual subscription is payable to Microsoft If you’re just targeting the PC

development environment, you won’t have to pay anything

Trang 16

Downloading the Code

The accompanying code for this book can be downloaded for free from this book’s page on the Apress website (sss*]lnaoo*_ki+reas+^kkg+-0/,.-411t) and sss*neaiano*jap

Contacting the Author

You can ask any question and share all comments on my forum at sss*neaiano*jap+Bknqi, which I visit as frequently as I can

Trang 17

Getting Started with XNA 3.0

The first part of this chapter will get you up and running with XNA 3.0 by guiding you through the installation process and helping you get your code running on a PC and on the Xbox 360

console The second part of this chapter contains some more advanced topics for those

inter-ested in the inner workings of the XNA Framework

Specifically, the recipes in this chapter cover the following:

s !LLOWING USERS TO SAVE AND LOAD THEIR games using XNA’s storage capabilities

1-1 Install XNA Game Studio 3.0

The Problem

You want to start coding your own games

The Solution

Before you can start coding your own games, you should install your development

environ-ment XNA 'AME 3TUDIO  ALLOWS YOU TO CREATE YOUR WHOLE GAME PROJECT USING A SINGLE

environment Best of all, it’s completely free to install

&IRST YOU NEED A VERSION OF 6ISUAL 3TUDIO  THAT ALLOWS YOU TO DEVELOP # PROGRAMS

4HIS IS REQUIRED BECAUSE 8.! USES #

/N TOP OF 6ISUAL 3TUDIO  YOU WILL INSTALL 8.! 'AME 3TUDIO 

1

Trang 18

How It Works

Installing Visual Studio 2008

8.! 'AME 3TUDIO  REQUIRES 6ISUAL 3TUDIO  TO BE INSTALLED ON YOUR 0# )F THIS IS NOT YETTHE CASE YOU CAN DOWNLOAD THE 6ISUAL #  %XPRESS %DITION FOR FREE

To do this, go to sss*ie_nkokbp*_ki+atlnaoờksjhk]`+ AND FIND THE 6ISUAL # 

%XPRESS %DITION BOX MAKE SURE YOU SELECT THE # EDITION INDICATED BY THE GREEN COLOR  3ELECTthe language of your choice, and hit the Download button This will download a very small file, which you should run afterward

During setup, use the default selections and hit Next until the program starts ing and installing

download-N Note You can find updated links to these packages on the Download section of my site (sss*neaiano*jap)

Installing XNA Game Studio 3.0

'O TO dppl6++_na]pkno*tj]*_ki+aj)QỜksjhk]`o AND CLICK THE $OWNLOAD 8.! 'AME 3TUDIO3.0 link at the bottom-right corner of the top box On the page that opens, click the Download BUTTON JUST ABOVE THE 1UICK $ETAILS SECTION TO DOWNLOAD 8.! 'AME 3TUDIO 

Once you’ve downloaded and run the file, the installer will check whether you have INSTALLED 6ISUAL # %XPRESS %DITION  )F YOU HAVE FOLLOWED THE INSTRUCTIONS IN THE PREVIOUSsection, you shouldn’t be getting any error messages

During setup, you will be presented with the Firewall Setup page -AKE SURE YOU SELECT THEFIRST OPTION AND ALLOW BOTH SUBOPTIONS )F YOU DONT YOU WILL RUN INTO TROUBLE WHEN CONNECT-ing to your Xbox 360 or when testing multiplayer games between multiple PCs Keep in mind that when you experience trouble when connecting your game over other PCs or consoles, the problem might be caused by incorrect or third-party firewall settings

&INALLY HIT THE )NSTALL BUTTON TO INSTALL 8.! 'AME 3TUDIO 

1-2 Start Your First XNA 3.0 Project

The Problem

9OU WANT TO START CODING A NEW 8.!  GAME )N AĐITION THE DEFAULT STARTUP CODE ALREADYcontains a few methods, so you want to know what these are for and how they help make your life easier

The Solution

/PENING A NEW PROJECT IS THE SAME IN MOST 7INDOWS PROGRAMS )N 8.! 'AME 3TUDIO  ... LIKE ANY OTHER CONTENT OBJECT BY

CREAT-ing a suitable variable and linkCREAT-ing this file to that variable

Add this variable to the top of your main C]ia class:

Abba_p iuAbba_p7... -EMBERSHIPS AND YOU CAN BUY A LICENSE FOR FOUR MONTHS OR FOR ONE YEARAlternatively, you can also enter a code that you can find on a Creators Club voucher card.Installing XNA Game Studio...

9OU WANT TO START CODING A NEW 8.!  GAME )N A? ?ITION THE DEFAULT STARTUP CODE ALREADYcontains a few methods, so you want to know what these are for and how they help make your life easier

Ngày đăng: 05/03/2014, 22:21

TỪ KHÓA LIÊN QUAN