Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
CS 382 GAME DESIGN, DEVELOPMENT, AND TECHNOLOGY PART 3.3 PROGRAMMING FUNDAMENTALS • DATA STRUCTURES • BIT PACKING • OBJECTS-ORIENTED VS. COMPONENT-BASED PROGRAMMING FUNDAMENTALS SEVERAL STANDARD DATA STRUCTURES FIGURE PROMINENTLY IN GAME PROGRAMMING… VECTORS & MATRICES FACILITATE THE IMPLEMENTATION OF LINEAR ALGEBRA FORMULAS IN GRAPHICS AND ANIMATION DICTIONARIES & HASH TABLES FACILITATE THE IMPLEMENTATION OF MASSIVE LOOK-UP TABLES FOR AUDIO AND VISUAL ASSOCIATIONS STACKS & QUEUES MANAGE THE APPLICATION OF AFFINE TRANSFORMATIONS (TRANSLATIONS, ROTATIONS, SCALING) AND ENTITY INTERACTIONS (COLLISIONS, MULTIPLAYER COMMANDS, ETC.) PART 3.3 PROGRAMMING FUNDAMENTALS PAGE 88 DATA STRUCTURE: LAYERED ISOMETRIC GRID ONE COMMON GAME DATA STRUCTURE IS THE MAP, WHICH IS BASED ON AN ARRAY OF CELLS, EACH OF WHICH HAS AN ASSOCIATED TERRAIN TYPE, STRUCTURE TYPE, AND POINTERS TO MOBILE GAME UNITS (TROOPS, CREATURES, ETC.). Direction PART 3.3 PROGRAMMING FUNDAMENTALS PAGE 89 Adjacency Location North (x, y-1) Northeast (x, y-1) if y is even (x+1, y – 1) if y is odd East (x+1, y) Southeast (x, y+1) if y is even (x+1, y+1) if y is odd South (x, y+2) Southwest (x-1, y+1) if y is even (x, y+1) if y is odd West (x-1, y) Northwest (x-1, y-1) if y is even (x, y-1) if y is odd DATA STRUCTURE: PARTICLE SYSTEM TO MODEL CERTAIN NON-POLYGONAL OBJECTS (E.G., SPLASHING WATER, EXPLOSIONS, SMOKE), A SYSTEM OF HUNDREDS OR THOUSANDS OF SMALL PARTICLES MAY BE USED, WITH EACH PARTICLE HAVING ITS OWN ATTRIBUTES. FIELD PART 3.3 PROGRAMMING FUNDAMENTALS PAGE 90 TYPE Position Vector Velocity Vector Color Vector Energy Integer Size Float Transparency Float TimeToLive Integer DATA STRUCTURE: SUBDIVISION SURFACE WHEN 3D OBJECTS ARE DISTANT FROM THE VIEWER, THEIR LEVEL OF DETAIL CAN BE LOW, WHILE WHEN THEY’RE NEAR THE VIEWER, THE LEVEL OF DETAIL MUST BE HIGH. SUBDIVISION SURFACES ARE USED TO EXPAND A 3D MODEL LACKING DETAILS INTO A MORE ELABORATE MODEL. PART 3.3 PROGRAMMING FUNDAMENTALS PAGE 91 DATA STRUCTURE DESCRIPTION Vertex (x,y,z) coordinate info Triangle Three vertex objects Triangular Mesh Array of triangles Adjacency Matrix 2D table of vertex adjacencies Triangle Subdivider Drives triangular mesh subdivision DATA STRUCTURE: INTERACTIVE MUSIC SEQUENCER AN INTERACTIVE MUSIC SEQUENCER PROVIDES THE INTERACTION OF COMPUTER GAMES WITH THE IMMERSIVE QUALITIES OF MUSIC. // Note: The red fields are the // interactive features. typedef list< Sequence * > SequencePtrList_t; typedef list< Track * > TrackPtrList_t; typedef list< Voice * > VoicePtrList_t; class MusicSequencer_t { MusicSequencerState_t SequencePtrList_t SequencePtrList_t TrackPtrList_t TrackPtrList_t VoicePtrList_t VoicePtrList_t }; State; ActiveSequencePtrList; FreeSequencePtrList; ActiveTrackPtrList; FreeTrackPtrList; ActiveVoicePtrList; FreeVoicePtrList; class SequenceState_t { Tempo_t Tempo; Volume_t Volume; }; class Sequence_t { SequenceState_t SequenceState_t SequenceState_t SequenceInterpolator_t TimeUnit_t TimeUnit_t CallbackFunc_t TrackPtrList_t }; class TrackState_t { Volume_t Volume; PitchBend_t PitchBend; Pan_t Pan; Effect_t Effect; }; PART 3.3 PROGRAMMING FUNDAMENTALS PAGE 92 State; BeginState; EndState; Interpolator; TimeElapsed; TimeStep; *pCallback; TrackPtrList; class Track_t { TrackState_t TrackState_t TrackState_t TrackInterpolator_t Sequence char Instrument_t VoicePtrList_t }; State; BeginState; EndState; Interpolator; *pOwner; *pEvent; *pInstrument; VoicePtrList; class VoiceState_t { SynthVolume_t Volume; SynthPitch_t Pitch; SynthPan_t Pan; SynthEffect_t Effect; }; class Voice_t { VoiceState_t VoiceState_t VoiceState_t VoiceInterpolator_t Track_t char }; CurrentState; BeginState; EndState; Interpolator; *pOwner; nKey; DATA STRUCTURE: SPRING NODE ONE METHOD FOR IMPLEMENTING ANIMATED CLOTH IS TO PLACE INVISIBLE SPRING NODES AT VERTEX LOCATIONS WITHIN THE CLOTH. FIELD TYPE Position Vector Velocity Vector Force Vector Mass Float Neighbor List Linked list of other spring nodes Distance List Parallel list of neighbor distances Neighbor Count Integer ONE REASONABLE MODEL HAS EACH NODE CONNECTED TO… • ITS NEAREST NEIGHBORS (VERTICAL AND HORIZONTAL) BY STRONG STRETCH SPRINGS • ITS DIAGONAL NEIGHBORS BY WEAKER SHEAR SPRINGS • PART 3.3 PROGRAMMING FUNDAMENTALS PAGE 93 ALL OF ITS NEIGHBORS BY WEAK BEND SPRINGS DATA STRUCTURE: BSP TREE TO EFFICIENTLY DETERMINE THE ORDER IN WHICH POLYGONS SHOULD BE RENDERED, BINARY SPACE PARTITIONING TREES ARE USED. IN THIS DOOM-LIKE LAYOUT, THE GAME THE LAYOUT SURFACES ARE USED TO PERFORM A BINARY SPACE PARTITIONING (UP TO A CERTAIN DEPTH). DEVELOPER WANTS THE PLAYER TO SEE INTO ADJACENT ROOMS (AND SOMETIMES THROUGH THOSE ROOMS INTO ADDITIONAL ROOMS), BUT THE 80-ROOM LAYOUT MAKES DETERMINING WHAT’S VISIBLE SOMEWHAT PROBLEMATIC. IN ADDITION, THE OPTICAL CONNECTIVITY IS DETERMINED BETWEEN THE VARIOUS ROOMS AND CORRIDORS, USING DOORS AND WINDOWS TO DETERMINE VIABLE ADJACENCIES. PROGRAMMING FUNDAMENTALS PAGE 94 THIS INFORMATION IS THEN COMBINED TO QUICKLY DETERMINE OVERALL VISIBILITY BETWEEN ROOMS. NETWORK BIT PACKING FOR NETWORK COMPRESSION struct NetData { unsigned char unsigned long unsigned short int int }; GAMES NEED TO SEND GAME STATE INFORMATION SUCH AS MsgType; Time; Element; XPosition; YPosition; // // // // // 0 - 28 0 - 0xFFFFFFFF 148 - 1153 -100,000 – 100,000 -100,000 – 100,000 struct NetData : public BitPackCodec<5> { PkUint<unsigned char, 5> MsgType; PkUint<unsigned long> Time; PkUint<unsigned short, 148, 1153> Element; PkUint<int, -100000, 100000> XPosition; PkUint<int, -100000, 100000> YPosition; }; 1 4 4 4 4 byte bytes bytes bytes bytes BASIC POSITION, STRUCTURE WITHOUT BIT PACKING: 136 BITS VELOCITY, ACCELERATION, AND STATUS FLAGS, BUT // // // // // 5 bits 32 bits 10 bits 18 bits 18 bits STORAGE BYTES BASIC ARE OFTEN STRUCTURE WITH BIT PACKING: BITS PADDED WITH 83 BITS CONTAINING NO REAL INFORMATION. WHILE THE USE OF BIT PACKING GREATLY REDUCES THE BANDWIDTH REQUIREMENTS FOR NETWORK GAMING, IT COMPLICATES DEBUGGING AND SLOWS DOWN PERFORMANCE (DUE TO THE LINEAR TIME COMPLEXITY OF THE PACKING AND UNPACKING OPERATIONS). PROGRAMMING FUNDAMENTALS PAGE 95 OBJECT-ORIENTED VS. COMPONENT-BASED TRADITIONAL HOW CAN WEAPONS BE MADE ANIMATABLE? HOW CAN DOORS AND GEMS BE MADE DESTRUCTIBLE, BUT NOT ACTORS AND WEAPONS? Object OBJECT Logical Object Renderable Object ORIENTATION USES AN INHERITANCE HIERARCHY TO Particle System Physics Object Spawn Point Trigger Box DEFINE THE CHARACTERISTICS Collectable Object Animatable Object OF GAME ELEMENTS. Actor COMPONENT-BASED PROGRAMMING RELIES ON AGGREGATE BEHAVIOR, I.E., ASSIGNING EACH GAME ENTITY A SET OF BEHAVIORS AND FUNCTIONALITIES. PART 3.3 PROGRAMMING FUNDAMENTALS PAGE 96 Door Weapon THE FLEXIBILITY OF Entity: Weapon Rendering Component Animating Component COMPONENTS AND THEIR RELIANCE ON RUN-TIME MESSAGE Collecting PASSING Component COMPLICATES DEBUGGING AND PERFORMANCE. Animating Component Destroying Component Entity: Door Rendering Component Gem Healthpack