A game engine is a piece of software designed to render 2d/3d graphics, sound, animation, AI, and a physics engine [ to simulate Newtonian physics and approximate effects and conditions in a real life or fantasy world], among other features. To economise game production, they are typically used over and over when creating different games, falling into the category of middleware as they provide reusable tools purchasable for different companies, reducing the time and cost of development.
Key technologies include a rendering engine, the mathematical process of creating an image from a 3-dimensional model containing geometry, texture, lighting, shading and viewpoint. The word can be compared to how a traditional artist ‘renders’ an image. Scene graphs in games are used to describe logical and spatial relationships between objects in a scene, and can also be useful in reducing memory budget and increasing speed. Recent trends are favouring accessibility, and engines are being developed more for devices such as mobile phones and web browsers, e.g. Shockwave and Flash.
Additive or subtractive environments describe the process by which objects are created within the engine. An attitive environment exists as an empty void, in which the game world is created and sealed off without the void space leaking into it. The Quake engines, MaxFX, and Half-life are all examples of additive engines.
A subtractive environment is the opposite, as in there is an endless solid instead of a void, and objects are created by removing parts of the solid and the game world is formed from negative space. As additive enviroments are easier to manipulate, a large cube can be removed from a subtractive space and things can be built within it, emulating an additive environment but without the problem of the void leaking in. Some popular engines to use subtractive environments are the Unreal, Dark, and Serious engines.
Using middleware engines can be a big advantage to developers as mentioned previously; it prevents ‘re-inventing the wheel’ – why recreate something that already exists unnecessarily? Engines also are becoming more and more complicated, and creating an original piece of software would be extremely demanding requiring vast amounts of expertise. Also, engines that have been used in successful games are naturally attractive to developers.
However, the licensing of the third-party engine can also be costly, and may require modification to meet the developer’s specific needs. Creating an in-house engine may produce totally unique features for the games using it, with the opportunity to re-use it and sell as middleware in the future. Considering these disadvantages, a safer choice with less risks of failure would be to use pre-existing software, although it would be interesting to see more original engines being developed for specific purposes.