A game engine is the core software component of a video game. It typically handles graphical rendering and other necessary technology, but might also handle additional tasks such as game AI and collision detection between game objects, among other things. The most common element that a game engine provides is graphics rendering facilities (2D or 3D). Another common attribute of game engines is platform abstraction, so the game can run in various platforms (game consoles, Microsoft Windows) with little, if any, changes in the game source code.