chapter 3.4 programming fundamentals. 2 data structures arrays – elements are adjacent in memory...
Post on 22-Dec-2015
215 views
TRANSCRIPT
![Page 1: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/1.jpg)
Chapter 3.4Programming Fundamentals
![Page 2: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/2.jpg)
2
Data Structures
Arrays– Elements are adjacent in memory (great cache
consistency)– They never grow or get reallocated– In C++ there's no check for going out of bounds– Inserting and deleting elements in the middle is
expensive
![Page 3: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/3.jpg)
3
Data Structures
Linked lists– Very cheap to add/remove elements.– Available in the STL (std::list)– Every element is allocated separately
Lots of little allocations
– Not placed contiguously in memory
![Page 4: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/4.jpg)
4
Data Structures
Dictionaries– Maps a set of keys to some data.– std::map, std::hash, etc– Very fast access to data– Perfect for mapping IDs to pointers, or resource
handles to objects
![Page 5: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/5.jpg)
5
Data Structures
Stacks– First in, last out– std::stack adaptor in STL
Queues– First in, first out– std::deque
![Page 6: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/6.jpg)
6
Data Structures
Bit packing– Fold all necessary data into a smaller number of
bits– Very useful for storing boolean flags
(pack 32 in a double word)
– Possible to apply to numerical values if we can give up range or accuracy
– Very low level trick Only use when absolutely necessary
![Page 7: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/7.jpg)
7
Object Oriented Design
Concepts– Class
Abstract specification of a data type
– Instance A region of memory with associated semantics to store all
the data members of a class
– Object Another name for an instance of a class
![Page 8: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/8.jpg)
8
Object Oriented Design
Inheritance– Models “is-a” relationship– Extends behavior of existing classes by making
minor changes
![Page 9: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/9.jpg)
9
Object Oriented Design
Inheritance– UML diagram representing inheritance
E ne m y B o s s Supe rD upe rB o s s
![Page 10: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/10.jpg)
10
Object Oriented Design
Polymorphism– The ability to refer to an object through a reference
(or pointer) of the type of a parent class– Key concept of object oriented design
![Page 11: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/11.jpg)
11
Object Oriented Design
Multiple Inheritance– Allows a class to have more than one base class– Derived class adopts characteristics of all parent
classes– Huge potential for problems (clashes, casting, etc)– Multiple inheritance of abstract interfaces is much
less error prone
![Page 12: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/12.jpg)
12
Component Systems
Limitations of inheritance– Tight coupling– Unclear flow of control– Not flexible enough– Static hierarchy
![Page 13: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/13.jpg)
13
Component Systems
Component system organization– Use aggregation (composition) instead of
inheritance– A game entity can “own” multiple components that
determine its behavior– Each component can execute whenever the entity
is updated– Messages can be passed between components and
to other entities
![Page 14: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/14.jpg)
14
Component Systems
Component system organization
G am e E nti ty
N am e = s w o r d
R e nde rC o m p C o ll is io nC o m p D am age C o m p P ic kupC o m p W ie ldC o m p
![Page 15: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/15.jpg)
15
Component Systems
Data-Driven Composition– The structure of the game entities can be specified
in data– Components are created and loaded at runtime– Very easy to change (which is very important in
game development)
![Page 16: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/16.jpg)
16
Component Systems
Analysis– Very hard to debug– Performance can be a bottleneck– Keeping code and data synchronized can be a
challenge– Extremely flexible
Great for experimentation and varied gameplay
– Not very useful if problem/game is very well known ahead of time
![Page 17: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/17.jpg)
17
Design Patterns
Singleton– Implements a single instance of a class with global
point of creation and access– Don't overuse it!!!
Single to ns ta tic S in g le to n & G etI n s tan c e ( ) ;/ / R eg u lar m em b er f u n c tio n s . . .
s ta t ic S in g le to n u n iq u eI n s tan c e ;
![Page 18: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/18.jpg)
18
Design Patterns
Object Factory– Creates objects by name– Pluggable factory allows for new object types to be
registered at runtime– Extremely useful in game development for creating
new objects, loading games, or instantiating new content after game ships
![Page 19: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/19.jpg)
19
Design Patterns
Object factory
O bje c tFac to ryP r o d u c t * C r ea teO b jec t( P r o d u c tT y p e ty p e) ;
C re ate P ro duc t
P ro duc t
![Page 20: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/20.jpg)
20
Design Patterns
Observer– Allows objects to be notified of specific events with
minimal coupling to the source of the event– Two parts
subject and observer
![Page 21: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/21.jpg)
21
Design Patterns
ObserverSubje c t
Attac h ( O b s er v er * ) ;D etac h ( O b s er v er * ) ;N o tif y ( ) ;
O bs e rve rUp d ate( ) ;
C o nc re te O bs e rve rUp d ate( ) ;
C o nc re te Subje c t
![Page 22: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/22.jpg)
22
Design Patterns
Composite– Allow a group of objects to be treated as a single
object– Very useful for GUI elements, hierarchical objects,
inventory systems, etc
![Page 23: Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated](https://reader035.vdocument.in/reader035/viewer/2022062421/56649d7d5503460f94a5fc6a/html5/thumbnails/23.jpg)
23
Design Patterns
Composite
C o m po s i teO p er a tio n ( ) ;
lis t< C o m p o n en t* > c h ild r en
Spe c if ic C o m po ne ntO p er a tio n ( ) ;
C o m po ne ntO p er a tio n ( ) ;