ebook img

3D Game Programming All In One PDF

849 Pages·2003·17.08 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview 3D Game Programming All In One

Team LRN This page intentionally left blank Team LRN 3D Game Programming All in One Kenneth C. Finney Team LRN SVP, Course Professional, Trade, Reference Group: Andy Shafran Publisher: Stacy L. Hiquet Senior Marketing Manager: Sarah O’Donnell Marketing Manager: Heather Hurley Manager of Editorial Services: Heather Talbot Acquisitions Editor: Mitzi Koontz Associate Marketing Manager: Kristin Eisenzopf Series Editor: André LaMothe Developmental Editors: Dave Astle and Kevin Hawkins Project Editor: Jenny Davidson Technical Reviewers: Michael Dawson and Les Pardew Retail Market Coordinator: Sarah Dubois Copy Editor: Laura Gabler Interior Layout Tech: Jill Flores Cover Designer: Steve Deschene CD-ROM Producer: Brandon Penticuff Indexer: Sharon Shock Proofreaders: Sandi Wilson and Sara Gullion © 2004 by Premier Press, a division of Course Technology. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopy- ing, recording, or by any information storage or retrieval system with- out written permission from Course PTR, except for the inclusion of brief quotations in a review. The Premier Press logo and related trade dress are trademarks of Premier Press and may not be used without written permission. UltraEdit is a registered trademark of IDM Computer Solutions, Inc., Paint Shop Pro 8 is a trademark of Jasc Corporation, Inc. Audacity and QuArK 6.3 use are subject to the GNU General Public License. Chain Reaction and Reaction Engine SDK are trademarks of Monster Studios. UVMapper 0.25—copyright ©1998-2002 Stephen L Cox, All rights reserved. ThinkTanks is a trademark of BraveTree Productions, LLC. Orbz is a trademark of Mind Vision Software. Marble Blast Gold is a trademark of GarageGames. MilkShape 3D is a trademark of chUmbaLum sOft. All other trademarks are the property of their respective owners. Important: Course PTR cannot provide software support. Please contact the appropriate software manufacturer’s technical support line or Web site for assistance. Course PTR and the author have attempted throughout this book to distinguish proprietary trademarks from descriptive terms by following the capitalization style used by the manufacturer. Information contained in this book has been obtained by Course PTR from sources believed to be reliable. However, because of the possibility of human or mechanical error by our sources, Course PTR, or others, the Publisher does not guarantee the accuracy, adequacy, or completeness of any information and is not responsible for any errors or omissions or the results obtained from use of such information. Readers should be partic- ularly aware of the fact that the Internet is an ever-changing entity. Some facts may have changed since this book went to press. Educational facilities, companies, and organizations interested in multi- ple copies or licensing of this book should contact the publisher for quantity discount information. Training manuals, CD-ROMs, and por- tions of this book are also available individually or can be tailored for specific needs. ISBN: 1-59200-136-X Library of Congress Catalog Card Number: 2004090733 Printed in the United States of America 04 05 06 07 08 BH 10 9 8 7 6 5 4 3 2 1 Course PTR, a division of Course Technology 25 Thomson Place Boston, MA 02210 http://www.courseptr.com Team LRN This book is dedicated to my wife, Tubetti, and my two sons, Rockid and Lincus, whose sacrifices and encouragement made it possible. -CERDIP Team LRN I would like to thank Dave Wilkes for his encouragement to do this book, and the other guys at Wilkes Associates for just putting up with me, especially during the early days of its creation. I also want to thank my editors, Mitzi Koontz, Laura Gabler, Mike Dawson, Les Pardew, Kevin Hawkins, and Dave Astle, and especially the ever-patient Jenny Davidson (she laughs at my jokes!). A big thank you to André LaMothe for pushing the idea, and mak- ing it happen. Many thanks and a tip o’ the hat go to those Four Guys in a Garage: Jeff Tunnell, Rick Overman, Mark Frohnmayer, and Tim Gift. These are the perpetrators of Torque, and the founders of GarageGames. An amazing crew. Thanks to Desmond Fletcher for his assis- tance (knowing and unknowing) with subjects as diverse as particles, terrain, and clouds. Many thanks go to Melv May, Harold Brown, Anthony Rosenbaum, Phil Carlisle, Dave Wyand, Matthew Fairfax, Pat Wilson, Ryan Parker, Simon Windmill, Kevin Ryan, Joe Mar- uschak, Joel Baxter, Justin Mette and the 21-6 gang, and Frank Bignone, for their many contributions to the Torque engine and its game development community. Hearty thanks to Nick Palmer for allowing me to use his music, which appears on the CD. I also want to thank every player who came to Tubettiworld in those halcyon DF2 days and made it his or her virtual home. They made it a great place to play and socialize online. I would like to list them all, but obviously I can’t. To the late John “Tufat” Tucker, the gentleman—I salute you, !S. Then there are, in no particular order: AceTW, his evil twin Malfunction, Strata, Spector, Roadkill, Midnight, Oz Mal, Deadbolt, Insomniac, Checkfire, Norway, Animal, Qdad, MickyD, Buster, Major Chip Hazard, Pirate, Kotch, C2, FF6, IRS Agent, and Kdawg—I mustn’t neglect to mention Dr. Evil and the great work he vi Acknowledgments Team LRN Acknowledgments vii and his gang are doing with the TXP stuff. Last, but certainly not least, Jim, The Nailer, the epitome of the Online Game Player, and an all around great guy. I hope that everything works out, Jim. Along the way, there have been many others in various places that deserve some mention: KILLER and his gang, who do what cornered rats do best—fight back. Many other game developers can learn a thing or two about hard work from those guys. Onchas, Cowboy, Badger, and the rest of the “Allies”—keep up the good work. Same with you “Axis” play- ers (except that your days are numbered!). Also a hearty !S to the Playnet forum denizens who opened a second front as soon as the war started (Teh?). I’m sure I’ve forgotten to acknowledge someone, and I’ll probably get e-mails to that effect, but that’s the risk one embraces. Regards, CERDIP Team LRN viii KENNETH C. FINNEY is the Principal Software Engineer at Wilkes Associates, Inc. in the Greater Toronto Area. He began programming in 1974 and was a recipient of the presti- gious Conference Board of Canada ITX (Innovation in Technology Excellence) Award in 1997 for his work on InScan—a high-speed document scanning system. He was a consul- tant to the Department of National Defence in Canada in Armoured Fighting Vehicle sys- tems design, and is an orange-qualified Nuclear Engineer designing NDE systems and techniques for Candu reactor stations. He is an associate professor at Seneca College at York University in Toronto, helping technical writers learn how to survive in a software development environment. Ken is the creator of the popular Tubettiland ‘Online Cam- paign’ Mod and the ‘QuicknDirty’ game management tools for Novalogic’s Delta Force 2 game series. He is currently working on the new and unique Tubettiworld action/adven- ture game (www.tubettiworld.com) using the Torque Game Engine. About the Author Team LRN ANDRÉ LAMOTHE, CEO, Xtreme Games LLC, has been involved in the computing indus- try for more than 25 years. He wrote his first game for the TRS-80 and has been hooked ever since! His experience includes 2D/3D graphics, AI research at NASA, compiler design, robotics, virtual reality, and telecommunications. His books are top sellers in the game programming genre, and his experience is echoed in the Course Technology PTR Game Development series. About the Series Editor Team LRN Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxvi Chapter 1 Introduction to 3D Game Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Chapter 2 Introduction to Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Chapter 3 3D Programming Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89 Chapter 4 Game Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 Chapter 5 Game Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 Chapter 6 Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205 Chapter 7 Common Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235 Chapter 8 Introduction to Textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .275 Chapter 9 Skins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .309 Chapter 10 Creating GUI Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335 Chapter 11 Structural Material Textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .351 x Contents at a Glance Team LRN Chapter 12 Terrains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .365 Chapter 13 Introduction to Modeling with MilkShape . . . . . . . . . . . . . . . . . . . . . . . . . . .381 Chapter 14 Making a Character Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .415 Chapter 15 Making a Vehicle Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465 Chapter 16 Making Weapons and Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .479 Chapter 17 Making Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .499 Chapter 18 Making the Game World Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .513 Chapter 19 Creating and Programming Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .539 Chapter 20 Game Sound and Music . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .559 Chapter 21 Creating the Game Mission . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .583 Chapter 22 The Game Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .609 Chapter 23 The Game Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .631 Chapter 24 The End Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .659 Appendix A The Torque Game Engine Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .667 Appendix B Game Development Resources on the Internet . . . . . . . . . . . . . . . . . . . . . . . .741 Appendix C Game Development Tool Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .749 Appendix D QuArK Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .755 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .773 Contents at a Glance xi Team LRN Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxvi Chapter 1 Introduction to 3D Game Development . . . . . . . . . . . . . . . .1 The Computer Game Industry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 3D Game Genres and Styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 Game Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Game Developer Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Publishing Your Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 Elements of a 3D Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 Game Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19 Textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20 Music . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 Support Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 The Torque Game Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 Using Torque in This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28 Moving Right Along . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 xii Contents Team LRN Chapter 2 Introduction to Programming . . . . . . . . . . . . . . . . . . . . . . .31 UltraEdit-32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Program Setup and Configuration . . . . . . . . . . . . . . . . . . . . . . . .32 Setting Up Projects and Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32 Search and Replace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 Find in Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 Bookmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42 Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43 UltraEdit Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44 Controlling Computers with Programs . . . . . . . . . . . . . . . . . . . . . . .45 Programming Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48 How to Create and Run the Example Programs . . . . . . . . . . . . . .48 Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66 Conditional Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71 Branching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74 Debugging and Problem Solving . . . . . . . . . . . . . . . . . . . . . . . . . .82 Best Practices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 Moving Right Along . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87 Chapter 3 3D Programming Concepts . . . . . . . . . . . . . . . . . . . . . . . . .89 3D Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89 Coordinate Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 3D Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92 3D Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94 Displaying 3D Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98 Scene Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103 3D Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104 3D Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104 Programmed Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105 Programmed Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 Contents xiii Team LRN Programmed Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113 Programmed Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115 3D Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 Moving Right Along . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122 Chapter 4 Game Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 Torque Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125 DataBlocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128 Game Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129 Server versus Client Design Issues . . . . . . . . . . . . . . . . . . . . . . . . . .132 Common Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133 Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133 Root Main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134 Control Main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141 Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144 Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149 Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151 Running Emaga4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153 Moving Right Along . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155 Chapter 5 Game Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 The Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158 Control Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158 control/main.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159 Client Control Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 control/client/client.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 control/client/interfaces/menuscreen.gui . . . . . . . . . . . . . . . . . . .162 control/client/interfaces/playerinterface.gui . . . . . . . . . . . . . . . .165 control/client/interfaces/splashscreen.gui . . . . . . . . . . . . . . . . . . .169 control/client/misc/screens.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . .169 control/client/misc/presetkeys.cs . . . . . . . . . . . . . . . . . . . . . . . . . .171 Server Control Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 control/server/server.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 control/server/players/player.cs . . . . . . . . . . . . . . . . . . . . . . . . . . .180 Contents xiv Team LRN

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.