A game engine can be defined as a set of tools that provide the functionality you need to develop and deploy video games. There is no single industry-accepted definition for game engines. That is largely due to the varied nature of them and their uses. Typically, game engines have at least the following set of features:
- 2D and/or 3D graphic design tools
- Animation
- Asset management—the ability to create and import game assets
- Audio support
- Cross-platform deployment—games can be made for multiple platforms (such as desktop, mobile, and console)
- Graphical user interfaces
- Networking—support for multiplayer games
- Physics
- Scripting support in one or more languages
The basic concept of game engines is that they provide a powerful set of tools to handle much of the grunt work of game development, allowing developers to focus on game aesthetics and gameplay. In the early days of video games, each game was coded from scratch without a game engine's libraries or capabilities. Instead of reinventing the wheel for each game, game engines started to emerge, making it easier for game studios to churn out games.
Game engines are not general-purpose software suites that can create any game imaginable. They are highly specialized and, although very flexible, are intended for a specific range of game genres. For example, the Ego Game Technology Engine by Codemasters is used primarily for creating racing games; Pyrogenesis, by Wildfire Games, is used for creating real-time-strategy (RTS) games; the Silent Storm Engine, by Nival Interactive, is used predominately for turn-base tactics games; and ONScripter, by Naomi Takahashi, is used for creating visual novels and first-person adventure games.