首页 > > > Beginning.DotNET.Game.Programming.in.VB.NET.pdf

Beginning.DotNET.Game.Programming.in.VB.NET.pdf

Beginning.DotNET.Game.Programmi…

上传者: 贴心秘书 2012-02-09 评分1 评论0 下载31 收藏10 阅读量569 暂无简介 简介 举报

简介:本文档为《Beginning.DotNET.Game.Programming.in.VB.NETpdf》,可适用于专题技术领域,主题内容包含BeginningNETGameProgramminginVBNETDAVIDWELLER,ALEXANDRESANTOSLOBÃO,ANDELLE符等。

Beginning .NET Game Programming in VB.NET DAVID WELLER, ALEXANDRE SANTOS LOBÃO, AND ELLEN HATTON 4010fm.qxd 8/20/04 2:33 PM Page i Beginning .NET Game Programming in VB.NET Copyright 2004 by David Weller, Alexandre Santos Lobão, and Ellen Hatton 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 (pbk): 1-59059-401-1 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. Technical Reviewer: Andrew Jenks Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Tony Davis, Jason Gilmore, Chris Mills, Dominic Shakeshaft, Jim Sumser Assistant Publisher: Grace Wong Project Manager: Sofia Marchant Copy Editor: Ami Knox Production Manager: Kari Brooks Proofreader: Linda Seifert Compositor: Dina Quan Indexer: Rebecca Plunkett Cover Designer: Kurt Krames Manufacturing Manager: Tom Debolski Distributed to the book trade in the United States by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, New York 10013 and outside the United States by Springer-Verlag GmbH & Co. KG, Tiergartenstr. 17, 69112 Heidelberg, Germany. In the United States: phone 1-800-SPRINGER, email orders@springer-ny.com, or visit http://www.springer-ny.com. Outside the United States: fax +49 6221 345229, email orders@springer.de, or visit http://www.springer.de. For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, email info@apress.com, or visit http://www.apress.com. 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 http://www.apress.com in the Downloads section. 4010fm.qxd 8/20/04 2:33 PM Page ii Para Ana: Mi esperanza, mi corazón, mi tesoro, mi amiga, mi amor. 4010fm.qxd 8/20/04 2:33 PM Page iii 4010fm.qxd 8/20/04 2:33 PM Page iv Contents at a Glance Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xi About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xv Credits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvi Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvii Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xix Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxi Chapter 1 .Nettrix: GDI+ and Collision Detection . . . . . . .1 Chapter 2 .Netterpillars: Artificial Intelligence and Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65 Chapter 3 Managed DirectX First Steps: Direct3D Basics and DirectX vs. GDI+ . . . . . . . . . . . . . . . . .141 Chapter 4 Space Donuts: Sprites Revisited . . . . . . . . . . . .207 Chapter 5 Spacewar! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245 Chapter 6 Spacewar3D: Meshes and Buffers and Textures, Oh My! . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271 Chapter 7 Adding Visual Effects to Spacewar3D . . . . . . . .327 Epilogue Taking Your Next Steps . . . . . . . . . . . . . . . . . . . . . .343 Bonus Chapter Porting .Nettrix to Pocket PC . . . . . . . . . . . . . .351 Appendix A Suggested Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . .371 Appendix B Motivations in Games . . . . . . . . . . . . . . . . . . . . . . . . .375 Appendix C How Do I Make Games? . . . . . . . . . . . . . . . . . . . . . . . . .381 Appendix D Guidelines for Developing Successful Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .391 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .399 v 4010fm.qxd 8/20/04 2:33 PM Page v 4010fm.qxd 8/20/04 2:33 PM Page vi Contents Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xi About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xiii About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xv Credits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvi Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvii Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xix Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxi Chapter 1 .Nettrix: GDI+ and Collision Detection . . . . 1 Basic GDI+ Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 Performing Graphic Operations with a Graphics Object . . . . . . . . . .4 Creating Gradients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 Collision Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 Optimizing the Number of Calculations . . . . . . . . . . . . . . . . . . . . . . . . . .18 Extending the Algorithms to Add a Third Dimension . . . . . . . . . . . .22 The Game Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 The Game Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 The Coding Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 Final Version: Coding the GameField Class and the Game Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .51 Adding the Final Touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 Book Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64 Chapter 2 .Netterpillars: Artificial Intelligence and Sprites . . . . . . . . . . . . . . . . . . . . . 65 Object-Oriented Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66 Artificial Intelligence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69 Sprites and Performance Boosting Tricks . . . . . . . . . . . . . . . . . . . . . . . .76 The Game Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84 The Game Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 The Coding Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99 Adding the Final Touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139 vii 4010fm.qxd 8/20/04 2:33 PM Page vii Chapter 3 Managed DirectX First Steps: Direct3D Basics and DirectX vs. GDI+ . . . . . . . . . . . . . . . . 141 DirectX Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142 3-D Coordinate Systems and Projections . . . . . . . . . . . . . . . . . . . . . . . .153 Drawing Primitives and Texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160 The Application Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 The Application Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169 The Coding Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170 Adding the Final Touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203 More About DirectX and GDI+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 Chapter 4 Space Donuts: Sprites Revisited . . . . . . . . . . . 207 Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .208 Space Donuts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .243 Chapter 5 Spacewar! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 About Spacewar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246 Methodology: Challenges of Working with Someone Else’s Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248 Using the Application Wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .248 Direct Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .261 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269 Chapter 6 Spacewar3D: Meshes and Buffers and Textures, Oh My! . . . . . . . . . . . . . . . . . . . . . . . . . . 271 DirectX Basics: The Application Wizard Revisited . . . . . . . . . . . . .272 Spacewar3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .284 The Game Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .285 The Game Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .285 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .326 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .326 Contents viii 4010fm.qxd 8/20/04 2:33 PM Page viii Chapter 7 Adding Visual Effects to Spacewar3D . . . . . 327 Point Sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .327 Step 10: Adding Thrust Effects to Spacewar3D . . . . . . . . . . . . . . . . .329 Step 11: Adding Explosion Effects to Spacewar3D . . . . . . . . . . . . . .337 Step 12: Adding a Shockwave Effect to Spacewar3D . . . . . . . . . . . .339 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .341 Epilogue Taking Your Next Steps . . . . . . . . . . . . . . . . . . . . . . . . 343 Moving On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343 Habits to Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344 Things We Neglected to Tell You . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .348 Happy Trails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .350 Bonus Chapter Porting .Nettrix to Pocket PC . . . . . . . . 351 Programming for Mobile Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .352 The Game Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .356 The Game Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .357 The Coding Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .358 Adding the Final Touches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .368 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .369 Appendix A Suggested Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Appendix B Motivations in Games . . . . . . . . . . . . . . . . . . . . . . . . . 375 Appendix C How Do I Make Games? . . . . . . . . . . . . . . . . . . . . . . . . 381 Appendix D Guidelines for Developing Successful Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Contents ix 4010fm.qxd 8/20/04 2:33 PM Page ix 4010fm.qxd 8/20/04 2:33 PM Page x Foreword BACK A FEW YEARS AGO I HAD AN IDEA. What if I could make the power of the DirectX API available to the developers who were going to be using the new set of languages and common language runtime that Microsoft was developing? The idea was intriguing, and opening up a larger portion of the world to DirectX was a goal I was only happy to endorse. Besides, what developer doesn’t want to write games? It seems that at least once a week I am answering questions directly regard- ing the performance of managed code, and Managed DirectX in particular. One of the more common questions I hear is some paraphrase of “Is it as fast as unmanaged code?” Obviously in a general sense it isn’t. Regardless of the quality of the Managed DirectX API, the fact remains that it still has to run through the same DirectX API that the unmanaged code does. There is naturally going to be a slight overhead for this, but does it have a large negative impact on the majority of applications? Of course it doesn’t. No one is suggesting that one of the top-of-the-line polygon pushing games coming out today (say, Half Life 2 or Doom 3) should be written in Managed DirectX, but that doesn’t mean that there isn’t a whole slew of games that could be. I’ll get more to that in just a few moments. The reality is that many of the developers out there today simply don’t know how to write well-performing managed code. This isn’t through any shortcoming of these developers, but rather the newness of the API, combined with not enough documentation on performance, and how to get the best out of the CLR. For the most part, we’re all new developers in this area, and things will only get better as people come to understand the process. It’s not at all dissimilar to the change from assembler to C code for games. It all comes down to a simple question: Do the benefits outweigh the negatives? Are you willing to sacrifice a small bit of performance for the easier development of managed code? The quicker time to market? The greater security? The easier debugging? Are you even sure that you would see a difference in performance? Like I mentioned earlier, there are certain games today that aren’t good fits for having the main engine written in managed code, but there are plenty of titles that are. The top ten selling PC games just a few months ago included two versions of the Sims, Zoo Tycoon (+ expansion), Backyard Basketball 2004, and Uru: Ages Beyond Myst, any of which could have been written in managed code. Anyone who has taken the time to write some code in one of the managed languages normally realizes the benefits the platform offers pretty quickly. Using xi 4010fm.qxd 8/20/04 2:33 PM Page xi this book, you should be able to pick up the beginning concepts of game devel- opment pretty easily. It takes you through the simple sprite-based games, all the way through a basic 3-D game implementation. It’s an exciting time to be a developer. Tom Miller Lead Developer for the Managed DirectX Library, Microsoft Corporation Foreword xii 4010fm.qxd 8/20/04 2:33 PM Page xii About the Authors Somewhere around 1974, David Weller discovered a coin-operated Pong game in a pizza parlor in Sacramento, California, and was instantly hooked on com- puter games. A few years later, he was introduced to the world of programming by his godfather, who let him use his Radio Shack TRS-80 computer to learn about programming in BASIC. David’s first program was a simple dice game that graphically displayed the die face (he still has the first version he originally wrote on paper). He quickly outgrew BASIC though, and soon discovered the amazing speed you could get by writing video games in assembly language. He spent the remainder of his high school years getting bad grades, but writing cool software, none of which made him any money. He spent the next 10 years in the military, learning details about computer systems and software development. Shortly after he left the military, David was offered a job to help build the Space Station Training Facility at NASA. From that point on, he merrily spent time working on visual simulation and virtual reality applications. He made the odd shift into multitier IT application development during the Internet boom, ultimately land- ing inside of Microsoft as a technical evangelist, where he spends time playing with all sorts of new technology and merrily saying under his breath, “I can’t believe people pay me to have this much fun!” Alexandre Santos Lobão got his first computer in 1981, when he was 12, and immediately started to create simple games in BASIC. Since then, computers have evolved massively, and so has he. Graduating with a bachelor’s degree in computer science in 1991, Alexandre, together with six friends, founded that same year a company that came to be known as a synonym for high-quality services in Brasilia, Brazil: Hepta Informática. Besides his excellent work in many software development areas, from financial to telecommunication, he never forgot his first passion, and has always worked as a nonprofessional game programmer. From 1997 to 1999 he also worked at Virtually Real (http://www.vrealware.com), a virtual Australian amateur game programming company founded by Craig Jardine. At the end of 2000, Alexandre started searching for new horizons and, leaving the com

编辑推荐

  • 名称/格式
  • 评分
  • 下载次数
  • 资料大小
  • 上传时间

用户评论

0/200
    暂无评论
上传我的资料

相关资料

资料评价:

/ 440
所需积分:0 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!