Friday, November 18, 2011

Game Engine

A game engine is a framework that used to make up a video game. It consists of different systems:

Input

Rendering
  • Resource management
  • Scene management - statement management, LOD, game updates, optimizing assets, geometry culling, etc.
  • Game update - AI characters update, physics and collision detection, etc.
  • Optimizing assets - compressing textures, reducing texture resolution, index geometry, dynamic branching for early-out execution, etc
  • Geometry culling - occlusion culling, view frustum culling, geometry partitioning, etc
Sound
  • Sound effects, ambient sounds, musics tracks, speech
  • AI - situation-based audio

Scripting
  • AI - animation paths, situational animations, etc
  • Level editor
  • Material editor

Physics
  • Geometry collisions - point, rigid, soft masses
  • Friction / drag / lift / buoyancy support for various objects
Cinematic System
  • Real-time cut-scenes - move objects and the camera along predefined paths to tell part of a story
  • key-frame animation, skeleton animation, etc.

Networking
  • Multiplayer gaming
  • Downloading game fixes, additional contents, or entire game, etc.
  • Statistics tracking

Core
  • Various data structures - geometry partitioning (octrees, quad trees, BSP trees, portals, scene graphs, etc), arrays, link lists, stacks, queues, hash tables, trees (binary, k-dimensionals, etc), graphs, etc.
  • Common game math such as vectors, matrices, quaternions, bounding volumes, rays, and planes.
  • Timers
  • Memory management
  • Resource management - keep track of shared resource, e.g. sound, textures, etc
  • Journaling services
  • File logging
  • Application profilers
  • Depreciation facilities
  • Compression / decompression algorithms
  • Encryption / decryption algorithms