The tasks that need to be done for most real-time single player games can be divided into three general classes [9]: 1) Data acquisition, which is responsible for getting user commands from the various input devices like a keyboard, mouse or joystick, to name a few; 2) Data processing, also referred as the update stage, which is responsible for tasks that update the game state, such as character animation, physics simulation, artificial intelligence, game logic, and network data acquisition; 3) Data presentation, which is responsible for presenting the results to the user based on the input. In games, this usually corresponds to rendering graphics and playing audio.