Tải bản đầy đủ (.pdf) (7 trang)

a0009 xna 2 0 game programming recipe a problem solution approac morebook vn 6339 2

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (159.7 KB, 7 trang )


XNA 2.0 Game
Programming Recipes
A Problem-Solution Approach

■■■

Riemer Grootjans


XNA 2.0 Game Programming Recipes: A Problem-Solution Approach
Copyright © 2008 by Riemer Grootjans
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-59059-925-9
ISBN-10 (pbk): 1-59059-925-X
ISBN-13 (electronic): 978-1-4302-0514-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
Technical Reviewer: Fabio Claudio Ferracchiati
Editorial Board: Clay Andres, Steve Anglin, Ewan Buckingham, Tony Campbell, Gary Cornell,
Jonathan Gennick, Matthew Moodie, Joseph Ottinger, Jeffrey Pepper, Frank Pohlmann,
Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom Welsh
Project Manager: Beth Christmas
Copy Editor: Kim Wimpsett
Associate Production Director: Kari Brooks-Copony
Production Editor: Ellie Fountain


Compositor: Susan Glinert
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 , or
visit .
For information on translations, please contact Apress directly at 2855 Telegraph Avenue, Suite 600,
Berkeley, CA 94705. Phone 510-549-5930, fax 510-549-5939, e-mail , or visit http://
www.apress.com.
Apress and friends of ED books may be purchased in bulk for academic, corporate, or promotional use.
eBook versions and licenses are also available for most titles. For more information, reference our Special
Bulk Sales–eBook Licensing web page at />The information in this book is distributed on an “as is” basis, without warranty. Although every precaution
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 or indirectly
by the information contained in this work.
The source code for this book is available to readers at .


To Elisa, the most lovely woman I know. Without your love and support,
this would not have been possible.
To my parents, for giving me each and every opportunity.
To my friends and co-workers, for their support and laughs.


Contents at a Glance
About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii

Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii

■CHAPTER 1

Getting Started with XNA 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

■CHAPTER 2

Setting Up Different Camera Modes in Your 3D World . . . . . . . . . . 25

■CHAPTER 3

Working with 2D Images/Textures in XNA 2.0 . . . . . . . . . . . . . . . . 145

■CHAPTER 4

Working with Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247

■CHAPTER 5

Getting the Most Out of Vertices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355

■CHAPTER 6

Adding Light to Your Scene in XNA 2.0 . . . . . . . . . . . . . . . . . . . . . . . 499

■CHAPTER 7

Adding Sounds to Your XNA 2.0 Project . . . . . . . . . . . . . . . . . . . . . . 559


■CHAPTER 8

Networking in XNA 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571

■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599

v


■I N D E X

starting from VertexBuffer and
IndexBuffer, 395–396

worldMatrix property, 86

for structure rendered as TriangleList,
393–394

WorldViewProjection matrix, 139, 239

for structure rendered as TriangleStrip,
394–395

Wrapping mode, 372

of triangle, 392
writing custom content importer, 439


worldMatrix variable, 85

Wrap method, 373

Write method, 316, 325, 423, 425, 585
WriteBone method, 279–281

calculating collision point between
pointer and terrain, 432

WriteModelMesh method, 279–281

Intermediate class, 434

■X

view frustum, 26–27, 33
View matrix, 14, 16, 26, 29, 42, 47, 50, 357
viewAngle variable, 553
viewMatrix node, 91
viewMatrix variable, 40–41
ViewProjection matrix, 212, 242, 542
Visual Studio 2005, 2

WriteModelStructure method, 279–281

.x file, 248
XAct, 559
xAllowedRotDir variable, 212
xAmbient variable, 519

.xap file, 561
xBlurSize variable, 127–128
Xbox 360, deploying games on, 6–8

■W

connecting Xbox 360 and PCs, 7

WakeUp method, 168

Creators Club licenses, 7

walls, collision with, 60
.wav sound files, 559–563

generating projects from existing XNA 2.0
projects, 8

WaveBank method, 562

installing XNA Game Studio Connect, 7

waves, 560

overview, 6

while loop, 94, 400–401, 404, 415–417,
419–420, 447–448

pairing PCs and Xbox 360, 7


world matrices, 504
ensuring correct lighting when using,
518–519
objects in sight of camera, 54–57
setting different world matrices for
different objects, 252–258
combining multiple
transformations, 254

Xbox Live accounts, 6
Xbox Live accounts, setting up, 6
Xbox Live Marketplace, 6
xCamUp parameter, 216
xCamUp variable, 215
xConeAngle variable, 530
xConeDecay variable, 530
xConeDirection variable, 529

order of matrix multiplication, 254–258

.xgs binary file, 561

overview, 252–254

XImporter method, 184

updating, 93–95
worldMatrix node, 91


xLightDirection parameter, 523
xLightStrength value, 534

625


626

■I N D E X

xLightStrength variable, 533

saving/loading data, 19–24

xMirrorTexture variable, 238–242, 245–246

creating StorageDevice method
asynchronously, 20–22

XML file, loading data from, 439–445
creating XNA-compatible XML file from
existing object, 444–445

loading data from disks, 23–24

defining custom MapData class, 442

saving data to disks, 22

defining TypeReader capable of serializing

object of MapData class, 443
defining TypeWriter capable of serializing
object of MapData class, 442–443
overview, 439–442

overview, 20

starting new projects, 3
XNA Game Studio Connect program, 6–8
XNA Game Studio Device Center, 7
XNA project, accessing data in, 326

XmlSerializer class, 20, 23

XNA-compatible XML file, creating from
existing object, 444–445

XNA, 470, 481–482

<XNAContent> tag, 440

XNA Game Studio 2.0, 1–24

XNA-to-HLSL variables, 457–474

deploying games

XNAUtils class, 95–96

on PCs, 8–10


XNAUtils file, 266

on Xbox 360, 6–8

xnb files, 183–185, 193, 421

.fx HLSL files, 5

xPreviousShadingMapContents variable, 555

game loop timing, 10–11

xRelative value, 411

GameComponent class, 11–19

xTexStretch variable, 465

changing updating order of, 18–19

xTexture variable, 298, 553

DrawableGameComponent class, 12–13

xTime variable, 121, 224–225, 227, 476

making subscribe to interfaces, 16–17
overview, 11–12, 15–16


xWaveHeights variable, 474–475, 477,
482–483

subscribing to ICameraInterface
service, 17–18

xWaveLengths variable, 474–475, 477,
482–483

using GameComponent class, 14–15

xWaveSpeeds variable, 475

using multiple GameComponents, 18

■Z

installing, 1–3
overview, 1
predefined methods, 4–5

z-buffer (or depth buffer), 29, 32–33, 72, 230
zRelative value, 411



×