A game engine refers to software development environments designed specifically for the generation of video games. It contains the core library of functions used in a game, however it exists independently of a specific game's content. Assets that make the game unique, such theme and characters, form the content. The game engine is used to control how assets interact to bring the game to life. This is accomplished by means of a set of reusable components that may serve as an engine for games of diverse genres and styles.
The role of a game engine is to do all the behind the scenes heavy lifting that makes any video game playable. Central components include a graphics rendering engine, a physics engine and collision detection. The rendering engine generates a two or three-dimensional image from a scene file, which defines elements such as viewpoint, lighting and texture. Physics engines approximate real world motion in a way familiar to the player, but also meaningful in the context of the game. Collision detection involves how the game detects, displays and reacts to the intersection of two or more rendered objects.
Other resources, such as a networking capability, artificial intelligence and sound creation are often components of a game engine as well. Typically, components are available to the developer through a visual integrated development environment (IDE) that simplifies game building. Scene files can be prototyped and tested with the rendering engine without leaving the IDE, for example. Such an approach also encourages component reuse, which makes the creation process more simple and efficient.
Most early game engines were proprietary designs, developed for use in making a single game. The flexibility afforded by selecting favored components and constructing a specialized interface was prized. Such an approach gave developers a great deal of control over the look and feel of games but greatly lengthened the development cycle. Cost constraints typically prohibit the use of a proprietary game engine in most projects.
Complete, ready to use game development suites are available that provide all the functionality of proprietary designs. Many are commercial products, but an open source game engine of comparable quality is not difficult to find. These are open to code tweaking to accommodate favorite programming styles or tools. A game maker may not have the flexibility of a proprietary engine, but the time and money saved in development usually far outweigh the loss of stylistic freedom.