Module - 1 - 3
Module - 1 - 3
Chapter 1
Introduction
• Hardware
▫ This is the system that the game is to run on
• Device Drivers
▫ Shield the OS and upper layers from low level
device communications details
• Operating System
▫ Handles the execution and interruption of
multiple programs on a single machine
▫ Very thin on a console
3rd Party SDKs
• Data Structure and Algorithms
▫ STL – C++ standard template library data structures, strings, stream-
based I/O
▫ Boost – powerful data structures and algorithms
● Boost libraries are intended to be widely useful, and usable across a broad
spectrum of applications. For example, they are helpful for handling large
numbers having range beyond the long long, long double data type (2 64) in
C++.
• Graphics
▫ OpenGL and DirectX
• Collisions and Physics
▫ Havok, PhysX, ODE, Bullet
• Character Animation
• Artificial Intelligence – Kynapse
Platform independence layer
• Allows the engine to be developed
without the concern of the
underlying platform
• Provides wrappers to common target
specific operations
• Include things like primitive types,
network, file systems, etc.
Core systems
• Assertions – error checking code
• Memory Management
• Math library – vector and matrix
math, numeric integrators
• Custom data structures
Resource manager
• Provides a unified interface for accessing assets
• The level of complexity is dictated by need
▫ Often the game programmers must do resource
loading directly
▫ Engines like UT do unpackaging and complex
manipulation of assets in the engine
Rendering engine
• Low-level
• Scene graph management
• Visual effects
• Front end
Rendering
• Modeling is the mathematical
specification of shape and appearance
properties in a way that can be stored on
the computer
• Rendering is creation of shaded images
from 3d computer models
• Animation is a technique to create an
illusion of motion through a sequence of
images. Handling time is a key issue in
animation
Graphics Objects
• Gameobjects- Anything to which components are attached
▫ Aggregation of other game objects
• A renderer is what makes an object appear on the screen. Use this class
to access the renderer of any object, mesh or Particle
System. Renderers can be disabled to make objects invisible (see enabled)
Low-level Renderer
• Focuses on rendering primitives as quickly and richly as
possible
▫ Does not consider visibility
• Graphics Device Interface
▫ Access and enumerate the graphics devices
▫ Initialize the GD
▫ Setup buffering
• Others
▫ Representation of the geometric primitives
▫ Abstraction of the camera interface
▫ Material system
▫ Dynamic lighting system
▫ Text and fonts
Scene graph
• Limits the number of primitives submitted
for rendering
• Uses frustum culling – remove things
outside of the visible screen
• Spatial subdivision
▫ BSP, quadtree, octree, kd-tree
Visual effects
• Particle systems
• Decal systems
• Light mapping
• Dynamic shadows
• Full screen post effects
Front end
• HUD
• Menus
• GUI for character manipulation
• Full-motion video for cut scenes
Profiling/Debugging
• Code timing
• Display stats on the screen
• Dumping performance stats
• Determining memory usage
• Dumping memory usage
• Record and playback game events
• Print statement output control
Collisions and Physics
• Usually rigid body dynamics
• Physics engine creation is its own unique
undertaking
• Many companies use available libraries
▫ Havok
▫ PhysX
▫ ODE
▫ Bullet
Animation