Tricks of the Windows Game Programming Gurus. SAMS

André Lamothe

 - Fundamentals of 2D and 3D Game Programming -

SAMS
201 West 103rd Street,

Indianapolis, Indiana 46290

e-books shop
Tricks of the Windows Game Programming Gurus

About the Author
André LaMothe (a.k.a. Lord Necron) has been programming for over 22 years and
holds degrees in mathematics, computer science, and electrical engineering. He has
written numerous articles on the subjects of graphics, game programming, and artificial
intelligence. He is the author of Tricks of the Game Programming Gurus, Sams
Teach Yourself Game Programming in 21 Days, The Game Programming Starter Kit,
The Black Art of 3D Game Programming, and Windows Game Programming for
Dummies, all bestsellers. In addition, he coauthored Ciarcia’s Circuit Cellar I and II.
Mr. LaMothe has also taught at the University of Santa Cruz Extension Multimedia Department.

Last, but not least, André is the founder and CEO of Xtreme Games LLC, a think tank
and the world’s largest virtual game company, composed of over 250+ independent
developer studios.
He can be reached at ceo@xgames3d.com


Acknowledgments
I always hate writing acknowledgements because there are simply too many people
involved in a book to mention everybody and give them proper thanks. However, here
goes once again, in no particular order.

I would first like to thank my parents for having me late in life, causing me to have so
many genetic mutations that I don’t need to sleep and I can work continuously without
a break. Thanks, Mom and Dad!

Next, I want to thank all the people at Macmillan Computer Publishing (MCP) for letting
me have my way with the book. Making corporate America do anything different
is surely a strain, and I am Mr. Nonconformist, but that’s what it takes if you want to
break new ground. Particularly, I want to thank the acquisitions editor, Angela
Kozlowski, for listening to my artistic/marketing concepts and making them happen;
Carol Bowers, the project editor, for making sure that my policy of “less editing is
more” was taken seriously; Dan Scherf, the media and permissions manager, for making
sure that all the programs made it to the CD; and Erik Dafforn, the development
editor, for making sure that the hundreds of figures 
and thousand-plus pages of manuscript didn’t get mangled.

And of course, thanks to all the other editors and formatters that worked on the book,
including Steven Haines, Sean Medlock, Carol Ackerman, Kezia Endsley, and Howard
Jones. It seemed like all of you were playing musical chairs during editing, but you all
did a fantastic job. Steve and Sean especially caught me making stupid mistakes!
Next I want to thank the DirectX group at Microsoft, especially Kevin Bachus, for
helping with the acquisition of the latest DirectX SDK stuff, along with making sure
that I was sent to all the major DirectX parties. Very important to send me to parties; that’s a good thing.

The next group I want to thank are all the companies that had something to do with
this book in one way or another, whether it was a piece of software or whatever. The
major players are Caligari Corporation for the use of TrueSpace, JASC for the use of
Paint Shop Pro, and Sonic Foundry for the use of Sound Forge. I would also like to
thank Matrox and Diamond Multimedia for demo 3D accelerators, Creative Labs for
sound cards, Intel Corporation for VTune, Kinetics for 3D Studio Max, and Microsoft
and Borland for their compiler products.

I’d like to thank all of my friends that I made contact with during this hellish production.
To all the guys at Gold’s Gym: Armand, Andrew, Paul, and Dave. To Mike
Perone, for always getting me that hard-to-find piece of software at a moment’s
notice. Oh yes, to my friend Mark Bell—or as I like to think of him, Mr. Happy—you
still owe me $180 from that ski trip eight years ago! (And I can’t stand always being
right anymore; please try harder, Mark. I can’t keep taking your money.)
Next I want to thank all the contributing editors who allowed me to put their articles
on the CD. If it weren’t for you guys, these poor readers would have nothing more
then my eccentric prose to read. A special thanks goes to Matthew Ellis, the author of
the Direct3D book on the CD, and to Richard Benson (Keebler) for doing the foreword to the book.

And finally, I have to thank the one person who was with me every day and always
supported me—my girlfriend Jennifer. I think I have finally met my match.

Thanks to everyone!


Introduction

“Dead or alive, you’re coming with me.”
—Robocop
A long time ago, in a galaxy far, far, away, I wrote a book about game programming
called Tricks of the Game Programming Gurus. For me, it was an opportunity to create
something that I had always wanted—a book that taught the reader how to make
games. Anyway, it’s been a few years and I’m a little older and wiser, and I have definitely
learned a lot of tricks <BG>. This book is going to continue where the old book
left off. I’m going to cover every major topic in game programming that I can fit
within the binding of this bad boy!

However, as usual, I’m not going to assume that you are already a master programmer
or that you even know how to make games. This book is for beginners as well as
advanced game programmers. Nonetheless, the tempo is going to be fierce, so don’t blink!

Today is probably the coolest time in history to be in the game business. I mean, we
now have the technology to create games that do look real! Imagine what will come
next? But all this technology isn’t easy to understand or trivial—it takes hard work.
These days the bar has definitely been raised on the skill set needed to make games.
But if you’re reading this, you are probably one of those people who like a challenge,
right? Well, you came to right place, because when you’re done with this book you
will be able to create a full 3D, texture-mapped, professionally lit video game for the
PC. Moreover, you will understand the underlying principles of artificial intelligence,
physics modeling, game algorithms, 2D/3D graphics, and be able to use 3D hardware
today and in the future.

What You’re Going to Learn
In this book you’re going to learn about 100 teraquads of information! I’m going to
fill your neural net so full of information that you might have synaptic leakage!
Seriously, though, this volume covers all the elements necessary to create a Windows
9X/NT-based game for the PC:
• Win32 programming
• DirectX Foundation
• 2D graphics and algorithms
• Game programming techniques and data structures
• Multithreaded programming
• Artificial intelligence
• Physics modeling
• Using 3D acceleration hardware (on the CD)
And more…
This book is primarily about game programming. There are two cyber-books on the
CD that cover Direct3D Immediate mode and General 3D.

What You Need to Know
This book assumes that you can program. You are going to be fairly lost if you can’t
write C code. However, the book uses some C++—enough to make a C coder just a
little uneasy. But I will warn you if I’m doing anything weird. Also, there’s a decent
C++ primer in Appendix D, so check it out if you need a crash course. Basically, C++
is only needed here and there for examples when using DirectX.

Nevertheless, I’ve decided that I’m going to use C++ a little more on this book
because there are so many things in game programming that are object-oriented, and
it’s sacrilege to force them to be C-like structures. Bottom line—if you can program
in C, you should be fine. If you program in C/C++, you shouldn’t trip out at all.
Everyone knows that a computer program is nothing more than logic and math. Well,
3D video games put the emphasis on the math part! 3D graphics is all math. Luckily
for us, it’s cool math! (Yes, math can be cool.) About the only thing you need to know
is basic algebra and geometry. The vector and matrix stuff I will teach you along the
way. Heck, if you can add, subtract, multiply, and divide, you will be able to understand
90 percent of what’s going even though you may not be able to rederive it. As
long as you can use the code, that’s all the matters. 
(Well, that and if 7 of 9 is on Voyager tonight.)
That’s really all you need to know. Of course, you’d better call all your friends and
tell them that they won’t see you for about two years, because you’re going to be a
little busy. But just think of all the movies you’ll get to rent when you’re done with your training!

How This Book Is Organized
Tricks of the Windows Game Programming Gurus is divided into four parts, covering
14 chapters and six appendixes.
Part I: Windows Programming Foundations
Chapter 1 Journey into the Abyss
Chapter 2 The Windows Programming Model
Chapter 3 Advanced Windows Programming
Chapter 4 Windows GDI, Controls, and Last-Minute Gift Ideas
Part II: DirectX and 2D Fundamentals
Chapter 5 DirectX Fundamentals and the Dreaded COM
Chapter 6 First Contact: DirectDraw
Chapter 7 Advanced DirectDraw and Bitmapped Graphics
Chapter 8 Vector Rasterization and 2D Transformations
Chapter 9 Uplinking with DirectInput and Force Feedback
Chapter 10 Sounding Off with DirectSound and DirectMusic
Part III: Hardcore Game Programming
Chapter 11 Algorithms, Data Structures, Memory Management, and Multithreading
Chapter 12 Making Silicon Think with Artificial Intelligence
Chapter 13 Playing God: Basic Physics Modeling
Chapter 14 Putting It All Together: You Got Game!
Part IV: Appendixes
Appendix A What’s on the CD
Appendix B Installing DirectX and Using the C/C++ Compiler
Appendix C Math and Trigonometry Review
Appendix D C++ Primer
Appendix E Game Programming Resources
Appendix F ASCII Tables


Screenshot

e-books shop

Purchase Now !
Just with Paypal



Product details
 Price
 File Size
 16,491 KB
 Pages
 1029 p
 File Type
 PDF format
 ISBN
 0-672-31361-8
 Copyright
 1999 by Sams               

Contents at a Glance
Introduction
Part I Windows Programming Foundations
1 Journey into the Abyss
2 The Windows Programming Model 
3 Advanced Windows Programming 
4 Windows GDI, Controls, and Last-Minute Gift Ideas
Part II DirectX and 2D Fundamentals
5 DirectX Fundamentals and the Dreaded COM
6 First Contact: DirectDraw
7 Advanced DirectDraw and Bitmapped Graphics
8 Vector Rasterization and 2D Transformations
9 Uplinking with DirectInput and Force Feedback
10 Sounding Off with DirectSound and DirectMusic
Part III Hardcore Game Programming
11 Algorithms, Data Structures, Memory Management, and Multithreading
12 Making Silicon Think with Artificial Intelligence
13 Playing God: Basic Physics Modeling
14 Putting It All Together: You Got Game!
Part IV Appendixes
A What’s on the CD
B Installing DirectX and Using the C/C++ Compiler
C Math and Trigonometry Review
D C++ Primer
E Game Programming Resources
F ASCII Tables
Index


Table of Contents
Introduction 1
PART I Windows Programming Foundations 7
1 Journey into the Abyss 9
A Little History........................................................................................9
Designing Games ..................................................................................13
Types of Games ....................................................................................13
Brainstorming ........................................................................................14
The Design Document and Storyboards................................................15
Making the Game Fun ..........................................................................16
The Components of a Game ..................................................................16
Section 1: Initialization ....................................................................17
Section 2: Enter Game Loop ............................................................17
Section 3: Retrieve Player Input ......................................................17
Section 4: Perform AI and Game Logic ..........................................17
Section 5: Render Next Frame ........................................................18
Section 6: Synchronize Display ......................................................18
Section 7: Loop ................................................................................18
Section 8: Shutdown ........................................................................18
General Game Programming Guidelines ..............................................21
Using Tools ............................................................................................26
C/C++ Compilers ............................................................................26
2D Art Software................................................................................26
Sound Processing Software ..............................................................26
3D Modelers ....................................................................................26
Music and MIDI Sequencing Programs ..........................................27
Setting Up to Get Down—Using the Compiler ....................................27
An Example: FreakOut ..........................................................................29
Summary................................................................................................46
2 The Windows Programming Model 47
The Genesis of Windows ......................................................................48
Early Windows Versions ..................................................................48
Windows 3.x ....................................................................................48
Windows 95 ......................................................................................49
Windows 98 ......................................................................................50
Windows NT ....................................................................................50
Basic Windows Architecture: Win9X/NT ........................................50
Multitasking and Multithreading ..........................................................51
Getting Info on the Threads ............................................................52
The Event Model ..............................................................................53
Programming the Microsoft Way: Hungarian Notation ........................55
Variable Naming ..............................................................................56
Function Naming..............................................................................56
Type and Constant Naming ..............................................................57
Class Naming....................................................................................57
Parameter Naming ............................................................................58
The World’s Simplest Windows Program..............................................58
It All Begins with WinMain() ..........................................................59
Dissecting the Program ....................................................................60
Choosing a Message Box ................................................................63
Real-World Windows Applications (Without Puck)..............................66
The Windows Class ..............................................................................66
Registering the Windows Class ............................................................74
Creating the Window ............................................................................75
The Event Handler ................................................................................77
The Main Event Loop............................................................................84
Making a Real-Time Event Loop ..........................................................89
Opening More Windows........................................................................90
Summary................................................................................................93
3 Advanced Windows Programming 95
Using Resources ....................................................................................96
Putting Your Resources Together ....................................................98
Using Icon Resources ......................................................................99
Using Cursor Resources ................................................................102
Creating String Table Resources ....................................................106
Using Sound .WAV Resources ........................................................108
Last, But Not Least—Using the Compiler to Create .RC Files ....114
Working with Menus ..........................................................................116
Creating a Menu ............................................................................116
Loading a Menu..............................................................................119
Responding to Menu Event Messages ..........................................122
Introduction to GDI ............................................................................128
The WM_PAINT Message Once Again ..............................................128
Video Display Basics and Color ....................................................133
RGB and Palletized Modes ............................................................135
Basic Text Printing ........................................................................137
Handling Important Events..................................................................143
Window Manipulation ....................................................................143
Banging on the Keyboard ..............................................................150
Squeezing the Mouse......................................................................158
Sending Messages Yourself ................................................................161
Summary..............................................................................................163
4 Windows GDI, Controls, and Last-Minute Gift Ideas 165
Advanced GDI Graphics......................................................................166
Under the Hood with the Graphics Device Context ......................166
Color, Pens, and Brushes................................................................167
Working with Pens ........................................................................168
Painting with Brushes ....................................................................172
Points, Lines, Polygons, and Circles ..................................................173
Straight to the Point........................................................................173
Getting a Line on Things................................................................175
Getting Rectangular........................................................................177
Round and Round She Goes—Circles ..........................................180
Polygon, Polygon, Wherefore Art Thou, Polygon? ......................181
More on Text and Fonts ......................................................................182
Timing Is Everything ..........................................................................184
The WM_TIMER Message ..................................................................184
Low-Level Timing ..........................................................................187
Playing with Controls ..........................................................................190
Buttons............................................................................................191
Sending Messages to Child Controls ............................................195
Getting Information ............................................................................197
The T3D Game Console ......................................................................205
Summary..............................................................................................210
PART II DirectX and 2D Fundamentals 211
5 DirectX Fundamentals and the Dreaded COM 213
DirectX Primer ....................................................................................214
The HEL and HAL ........................................................................216
The DirectX Foundation Classes in Depth ....................................216
COM: Is It the Work of Microsoft… or Demons? ..............................218
What Exactly Is a COM Object?....................................................219
More on Interface IDs and GUIDs ................................................223
Building a Quasi-COM Object ......................................................224
A Quick Recap of COM ................................................................226
A Working COM Program ............................................................226
Working with DirectX COM Objects..................................................231
COM and Function Pointers ..........................................................232
Creating and Using DirectX Interfaces ..........................................236
Querying for Interfaces ..................................................................237
The Future of COM ............................................................................238
Summary..............................................................................................239
6 First Contact: DirectDraw 241
The Interfaces of DirectDraw..............................................................242
Interface Characteristics ................................................................242
Using the Interfaces Together ........................................................244
Creating a DirectDraw Object ............................................................245
Error Handling with DirectDraw....................................................246
Getting an Interface Lift ................................................................247
Cooperating with Windows ................................................................250
Getting into the Mode of Things ........................................................255
The Subtleties of Color........................................................................259
Building a Display Surface..................................................................263
Creating a Primary Surface ............................................................264
Attaching the Palette ......................................................................272
Plotting Pixels ................................................................................272
Cleaning Up....................................................................................284
Summary..............................................................................................285
7 Advanced DirectDraw and Bitmapped Graphics 287
Working with High-Color Modes........................................................288
16-Bit High-Color Mode ................................................................289
Getting the Pixel Format ................................................................290
24/32-Bit High-Color Mode ..........................................................299
Double Buffering ................................................................................301
Surface Dynamics ................................................................................307
Page Flipping ......................................................................................311
Using the Blitter ..................................................................................317
Using the Blitter for Memory Filling ............................................320
Copying Bitmaps from Surface to Surface ....................................328
Clipper Fundamentals ..........................................................................332
Clipping Pixels to a Viewport ........................................................332
Clipping Bitmaps the Hard Way ....................................................334
Making a DirectDraw Clip with IDirectDrawClipper..................339
Working with Bitmaps ........................................................................345
Loading .BMP files ..........................................................................345
Working with Bitmaps....................................................................352
Loading an 8-Bit Bitmap................................................................353
Loading a 16-Bit Bitmap................................................................354
Loading a 24-Bit Bitmap................................................................355
Last Word on Bitmaps ....................................................................356
Offscreen Surfaces ..............................................................................356
Creating Offscreen Surfaces ..........................................................356
Blitting Offscreen Surfaces ............................................................358
Setting Up the Blitter......................................................................359
Color Keys......................................................................................360
Source Color Keying ......................................................................361
Destination Color Keying ..............................................................364
Using the Blitter (Finally!) ............................................................365
Bitmap Rotation and Scaling ..............................................................366
Discrete Sampling Theory ..................................................................368
Color Effects ........................................................................................373
Color Animation in 256-Color Modes ..........................................373
Color Rotation in 256-Color Modes ..............................................379
Tricks with RGB Modes ................................................................381
Manual Color Transforms and Lookup Tables ....................................381
The New DirectX Color and Gamma Controls Interface....................382
Mixing GDI and DirectX ....................................................................383
Getting the Lowdown on DirectDraw ................................................386
The Main DirectDraw Object ........................................................386
Surfing on Surfaces ........................................................................388
Playing with Palettes ......................................................................389
Using DirectDraw in Windowed Modes..............................................390
Drawing Pixels in a Window..........................................................392
Finding the Real Client Area (51) ..................................................395
Clipping a DirectX Window ..........................................................397
Working with 8-Bit Windowed Modes ..........................................398
Summary..............................................................................................400
8 Vector Rasterization and 2D Transformations 401
Drawing Lines......................................................................................402
Bresenham’s Algorithm ..................................................................403
Speeding Up the Algorithm............................................................409
Basic 2D Clipping................................................................................411
Computing the Intersection of Two Lines Using the Point
Slope Form ...............................413
Computing the Intersection of Two Lines Using
the General Form ...........................416
Computing the Intersection of Two Lines Using
the Matrix Form ..........................................................................416
Clipping the Line............................................................................419
The Cohen-Sutherland Algorithm ..................................................420
Wireframe Polygons ............................................................................427
Polygon Data Structures ................................................................428
Drawing and Clipping Polygons ....................................................430
Transformations in the 2D Plane ........................................................432
Translation ......................................................................................433
Rotation ..........................................................................................435
Scaling ............................................................................................445
Introduction to Matrices ......................................................................446
The Identity Matrix ........................................................................448
Matrix Addition ..............................................................................449
Matrix Multiplication ....................................................................449
Transformations Using Matrices ....................................................452
Translation ..........................................................................................454
Scaling..................................................................................................455
Rotation................................................................................................455
Solid Filled Polygons ..........................................................................458
Types of Triangles and Quadrilaterals............................................459
Drawing Triangles and Quadrilaterals............................................461
Triangular Deconstruction Details ................................................464
The General Case of Rasterizing a Quadrilateral ..........................472
Triangulating Quads ......................................................................473
Collision Detection with Polygons ......................................................478
Proximity AKA Bounding Sphere/Circle ......................................478
Bounding Box ................................................................................481
Point Containment ..........................................................................484
More on Timing and Synchronization ................................................486
Scrolling and Panning..........................................................................488
Page Scrolling Engines ..................................................................488
Homogeneous Tile Engines............................................................489
Sparse Bitmap Tile Engines ..........................................................494
Fake 3D Isometric Engines..................................................................496
Method 1: Cell-Based, Totally 2D ................496
Method 2: Full-Screen-Based, with 2D or 3D
Collision Networks ...............................498
Method 3: Using Full 3D Math, with a Fixed Camera View ........500
The T3DLIB1 Library ........................................................................500
The Engine Architecture ................................................................500
Basic Definitions ............................................................................501
Working Macros ............................................................................502
Data Types and Structures ..............................................................503
Global Domination ........................................................................506
The DirectDraw Interface ..............................................................507
2D Polygon Functions ....................................................................511
2D Graphic Primitives ....................................................................513
Math and Error Functions ..............................................................517
Bitmap Functions............................................................................519
Palette Functions ............................................................................522
Utility Functions ............................................................................525
The BOB (Blitter Object) Engine........................................................527
Summary..............................................................................................535
9 Uplinking with DirectInput and Force Feedback 537
The Input Loop Revisited ....................................................................538
DirectInput Overture............................................................................539
The Components of DirectInput ....................................................541
The General Steps for Setting Up DirectInput ..............................542
Data Acquisition Modes ................................................................544
Creating the Main DirectInput Object............................................544
The 101-Key Control Pad ..............................................................546
Problem During Reading: Reacquisition........................................554
Trapping the Mouse........................................................................556
Working the Joystick ......................................................................561
Massaging Your Input ....................................................................576
Going Deeper with Force Feedback ....................................................579
The Physics of Force Feedback......................................................580
Setting Up Force Feedback ............................................................580
A Force Feedback Demo................................................................581
Writing a Generalized Input System: T3DLIB2.CPP ............................582
The T3D Library at a Glance ........................................................588
Summary..............................................................................................588
10 Sounding Off with DirectSound and DirectMusic 589
Sound Programming on the PC ..........................................................589
And Then There Was Sound…............................................................590
Digital versus MIDI—Sounds Great, Less Filling ..............................594
Digital Sound—Let the Bits Begin ................................................594
Synthesized Sound and MIDI ........................................................596
It’s MIDI Time! ..............................................................................597
Sound Hardware ..................................................................................598
Wave Table Synthesis ....................................................................598
Wave Guide Synthesis ....................................................................598
Digital Recording: Tools and Techniques............................................599
Recording Sounds ..........................................................................600
Processing Your Sounds ................................................................600
DirectSound on the Mic ......................................................................601
Starting Up DirectSound......................................................................602
Understanding the Cooperation Level............................................604
Setting the Cooperation Level ........................................................605
Primary and Secondary Sound Buffers ..............................................606
Working with Secondary Buffers ..................................................606
Creating Secondary Sound Buffers ................................................607
Writing Data to Secondary Buffers ................................................610
Rendering Sounds................................................................................612
Playing a Sound..............................................................................612
Stopping a Sound............................................................................612
Controlling the Volume ..................................................................612
Freaking with the Frequency..........................................................613
Panning in 3D ................................................................................614
Making DirectSound Talk Back ..........................................................614
Reading Sounds from Disk..................................................................616
The .WAV Format ............................................................................616
Reading .WAV Files ........................................................................617
DirectMusic: The Great Experiment ..................................................622
DirectMusic Architecture ....................................................................622
Starting Up DirectMusic......................................................................624
Initializing COM ............................................................................624
Creating the Performance ..............................................................625
Adding a Port to the Performance..................................................626
Loading a MIDI Segment ....................................................................626
Creating the Loader ........................................................................627
Loading the MIDI File ..................................................................627
Manipulating MIDI Segments ............................................................630
Playing a MIDI Segment................................................................630
Stopping a MIDI Segment..............................................................631
Checking the Status of a MIDI Segment ......................................631
Releasing a MIDI Segment ............................................................631
Shutting Down DirectMusic ..........................................................631
A Little DirectMusic Example ......................................................632
The T3DLIB3 Sound and Music Library ..............................................632
The Header ....................................................................................633
The Types ......................................................................................633
Global Domination ........................................................................634
The DirectSound API Wrapper ......................................................635
The DirectMusic API Rapper—Get It?..........................................640
Summary..............................................................................................643
PART III Hard Core Game Programming 645
11 Algorithms, Data Structures, Memory Management,
and Multithreading 647
Data Structures ....................................................................................648
Static Structures and Arrays ..........................................................648
Linked Lists ....................................................................................649
Algorithmic Analysis ..........................................................................657
Recursion ............................................................................................659
Trees ....................................................................................................662
Building BSTs ................................................................................666
Searching BSTs ..............................................................................668
Optimization Theory............................................................................671
Using Your Head ............................................................................671
Mathematical Tricks ......................................................................672
Fixed-Point Math............................................................................673
Unrolling the Loop ........................................................................677
Look-Up Tables ..............................................................................678
Assembly Language ......................................................................679
Making Demos ....................................................................................680
Prerecorded Demos ........................................................................680
AI-Controlled Demos ....................................................................682
Strategies for Saving the Game ..........................................................682
Implementing Multiple Players ..........................................................683
Taking Turns ..................................................................................683
Split-Screen Setups ........................................................................684
Multithreaded Programming Techniques ............................................685
Multithreaded Programming Terminology ....................................686
Why Use Threads in a Game?........................................................687
Conjuring a Thread from the Plasma Pool ....................................689
Sending Messages from Thread to Thread ....................................697
Waiting for the Right Moment ......................................................702
Multithreading and DirectX ..........................................................709
Advanced Multithreading ..............................................................711
Summary..............................................................................................711
12 Making Silicon Think with Artificial Intelligence 713
Artificial Intelligence Primer ..............................................................714
Deterministic AI Algorithms................................................................715
Random Motion..............................................................................716
Tracking Algorithms ......................................................................717
Anti-Tracking: Evasion Algorithms ..............................................722
Patterns and Basic Control Scripting ..................................................722
Basic Patterns ................................................................................723
Patterns with Conditional Logic Processing ..................................727
Modeling Behavioral State Systems....................................................729
Elementary State Machines ............................................................730
Adding More Robust Behaviors with Personality..........................734
Modeling Memory and Learning with Software ................................736
Planning and Decision Trees ..............................................................740
Coding Plans ..................................................................................742
Implementing a Real Planner ........................................................745
Pathfinding ..........................................................................................747
Trial and Error ................................................................................748
Contour Tracing..............................................................................749
Collision Avoidance Tracks............................................................749
Waypoint Pathfinding ....................................................................750
A Racing Example..........................................................................753
Robust Pathfinding ........................................................................754
Advanced AI Scripting ........................................................................759
Designing the Scripting Language ................................................759
Using the C/C++ Compiler ............................................................762
Artificial Neural Networks ..................................................................767
Genetic Algorithms ..............................................................................770
Fuzzy Logic ........................................................................................772
Normal Set Theory ........................................................................773
Fuzzy Set Theory............................................................................774
Fuzzy Linguistic Variables and Rules ............................................776
Fuzzy Manifolds and Membership ................................................779
Fuzzy Associative Matrices............................................................783
Processing the FAM with the Fuzzified Inputs ..............................787
Warm and Fuzzy ............................................................................794
Building Real AI for Games ................................................................794
Summary..............................................................................................795
13 Playing God: Basic Physics Modeling 797
Fundamental Laws of Physics ............................................................798
Mass (m) ........................................................................................799
Time (t) ..........................................................................................799
Position (s)......................................................................................800
Velocity (v) ....................................................................................802
Acceleration (a) ..............................................................................804
Force (F) ........................................................................................807
Forces in Higher Dimensions ........................................................808
Momentum (P)................................................................................809
The Physics of Linear Momentum: Conservation and Transfer ........810
Modeling Gravity Effects ....................................................................813
Modeling a Gravity Well ................................................................815
Modeling Projectile Trajectories ....................................................818
The Evil Head of Friction....................................................................821
Basic Friction Concepts..................................................................821
Friction on an Inclined Plane (Advanced) ....................................823
Basic Ad Hoc Collision Response ......................................................828
Simple x,y Bounce Physics ............................................................828
Computing the Collision Response with Planes of
Any Orientation ..........................................................................830
An Example of Vector Reflection ..................................................834
Intersection of Line Segments........................................................835
Real 2D Object-to-Object Collision Response (Advanced)................841
Resolving the n-t Coordinate System ..................................................846
Simple Kinematics ..............................................................................853
Solving the Forward Kinematic Problem ......................................854
Solving the Inverse Kinematic Problem ........................................858
Particle Systems ..................................................................................859
What Every Particle Needs ............................................................859
Designing a Particle Engine ..........................................................860
The Particle Engine Software ........................................................861
Generating the Initial Conditions ..................................................866
Putting the Particle System Together ............................................869
Playing God: Constructing Physics Models for Games ......................870
Data Structures for Physics Modeling............................................870
Frame-Based Versus Time-Based Modeling ..................................871
Summary..............................................................................................873
14 Putting It All Together: You Got Game! 875
The Initial Design of Outpost ..............................................................876
The Story ........................................................................................876
Designing the Gameplay ................................................................877
The Tools Used to Write the Game ....................................................877
The Game Universe: Scrolling in Space..............................................878
The Player’s Ship: “The Wraith” ........................................................880
The Asteroid Field ..............................................................................882
The Enemies ........................................................................................884
The Outposts ..................................................................................885
The Predator Mines ........................................................................886
The Gunships..................................................................................888
The Power-Ups ....................................................................................891
The HUDS ..........................................................................................892
The Particle System ............................................................................896
Playing the Game ................................................................................896
Compiling Outpost ..............................................................................897
Compilation Files ..........................................................................897
Runtime Files..................................................................................898
Epilogue ..............................................................................................898
PART IV Appendixes 901
A What’s on the CD 903
B Installing DirectX and Using the C/C++ Compiler 907
Using the C/C++ Compiler..................................................................908
C Math and Trigonometry Review 911
Trigonometry ......................................................................................911
Vectors..................................................................................................915
Vector Length ................................................................................916
Normalization ................................................................................917
Scalar Multiplication ......................................................................917
Vector Addition ..............................................................................918
Vector Subtraction ..........................................................................919
The Inner Product, or the “Dot” Product ......................................919
The Cross Product ..........................................................................921
The Zero Vector ..............................................................................923
Position Vectors ..............................................................................923
Vectors as Linear Combinations ....................................................924
D C++ Primer 925
What Is C++? ......................................................................................925
The Minimum You Need to Know About C++ ..................................928
New Types, Keywords, and Conventions ............................................929
Comments ......................................................................................929
Constants ........................................................................................929
Referential Variables ......................................................................929
Creating Variables On-the-Fly........................................................930
Memory Management..........................................................................931
Stream I/O............................................................................................932
Classes..................................................................................................934
The New Struct in Town ................................................................934
Just a Simple Class ........................................................................935
Public Versus Private ......................................................................936
Class Member Functions (A.K.A. Methods) ................................937
Constructors and Destructors ........................................................938
Writing a Constructor ....................................................................939
Writing a Destructor ......................................................................941
The Scope Resolution Operator ..........................................................943
Function and Operator Overloading ....................................................945
Summary..............................................................................................947
E Game Programming Resources 949
Game Programming Sites ....................................................................949
Download Points..................................................................................950
2D/3D Engines ....................................................................................950
Game Programming Books..................................................................951
Microsoft DirectX Multimedia Exposition..........................................951
Usenet Newsgroups ............................................................................951
Keeping Up with the Industry: Blues News........................................952
Game Development Magazines ..........................................................952
Game Web Site Developers ................................................................953
Xtreme Games LLC ............................................................................953
F ASCII Tables 955
Index 961

  ●▬▬▬▬▬❂❂❂▬▬▬▬▬●
●▬▬❂❂▬▬●
●▬❂▬●

═════ ═════

Previous Post Next Post