Games were first developed by small teams, but as the complexity and popularity of the games increased, many companies spend a lot of time and manpower developing games. These games are developed using either proprietary or standard software. The budget for developing and promoting a popular game may be millions of dollars. Different versions of the game may be developed for platforms like computers, video game consoles or different operating systems like Linux, Windows
The development time and complexity of developing a game or any interactive application is greatly reduced by used a game engine, which is the core software component of a video game. Usually the game engine includes a rendering engine for 2D or 3D graphics, artificial intelligence, collision detection, sound, scripting, animation, streaming and memory management. By reusing part of the game engine for different games, the development time is reduced significantly.
Games developed for consoles can only be modified using proprietary kits. However, there is more flexibility in modifying games for personal computers, and software modifications can be made by the end user.