# Engine

Een engine is de softwarematige basis van een computerprogramma. Het genereert de werking van het programma. Bij computerspellen wordt het meestal de 'game engine' genoemd. Het woord engine is Engels voor motor, en dit is erg toepasselijk aangezien de game engine figuurlijk de motor voor het spel is.

## Techniek

De gemiddelde game engine is onder te verdelen in een aantal modules die elk een specifieke taak hebben. Deze modules zijn in theorie onafhankelijk van elkaar en kunnen los van elkaar geschreven, gekocht of verkocht worden door een producent. Enkele voorbeelden van zulke modules:
* De rendering engine: de module die berekent wat er op het scherm moet komen. De rendering engine bepaalt de positie van de 3D-modellen en plaatst de texture erop. De lichtbronnen worden bepaald en daarmee dus ook de belichting van de omgeving. Vervolgens worden er allerlei technologische trucs uitgehaald om het geheel er zo goed mogelijk uit te laten zien. Hierbij valt te denken aan anti-aliasing, trilinear filtering, bump-mapping, etc. De rendering engine communiceert sterk met de videokaart van de computer. In het geval van Windows-systemen gebeurt dit meestal via het programma DirectX dat fungeert als vertaler tussen de engine en de videokaart. Een alternatief voor DirectX is OpenGL. OpenGL wordt het meest toegepast op het Linux-platform, maar kan ook op Windows gebruikt worden.
* De physics engine: deze module moet ervoor zorgen dat de objecten in de spelwereld zich realistisch gedragen. De physics engine berekent welke krachten een object beïnvloeden en beweegt het object overeenkomstig met deze krachten. Te denken valt bijvoorbeeld aan zwaartekracht. Wanneer een model zich in de 'lucht' van de spelwereld bevindt en er sprake is van zwaartekracht, zal de physics engine het object naar beneden verplaatsen met de in de spelwereld aanwezige valversnelling.
* De scripting engine: dit is de module die alle in scène gezette acties reguleert. Waar vroeger deze scènes werden getoond aan de speler door middel van videobeelden (cutscenes), worden nu de computergestuurde karakters en hun omgeving door de scripting engine gemanipuleerd volgens een vooraf bepaald script. Hierdoor wordt bij de speler de indruk gewekt dat hij niet alleen is in de spelwereld, maar dat hij deel uitmaakt van een groter geheel.
Een voor de hand liggend misverstand is dat er voor de kunstmatige intelligentie (AI) in het spel ook een engine is, maar dit is meestal niet het geval. Hoewel AI een belangrijk onderdeel van hedendaagse spellen is en het moeilijk is om een goede kunstmatige intelligentie te schrijven, is er geen globale spelmodule die de AI aanstuurt. De kunstmatige intelligentie is een functie van een object in het spel. Verschillende objecten kunnen verschillende vormen van AI gebruiken. Objecten die een kunstmatige intelligentie gebruiken zijn over het algemeen nog gewoon onderhevig aan de andere engines, met name de physics engine. Dat wil zeggen, wanneer een object door de AI op een afgrond afgestuurd wordt, zal het object nog altijd dankzij de physics engine de bodem van de afgrond bereiken.

## Financiën

Game engines zijn een groot goed in de game-industrie. Een goede game engine is een complex product en erg duur om te produceren. Vaak moet, om zo'n dure engine rendabel te laten zijn, de engine meermaals gebruikt worden (of onderdelen hiervan). Dit kan de producent zelf doen door meerdere games op deze engine uit te brengen, of door andere games producenten de engine onder licentie te laten gebruiken. Dit heeft ook grote voordelen voor de andere producent aangezien deze een game kan ontwikkelen op een goede engine zonder de ontwikkelingstijd en ontwikkelingskosten die met zo'n engine gepaard gaan. Hierbij dient wel rekening gehouden te worden met het feit dat hoe nieuwer een engine is, hoe duurder het is om er een licentie op te nemen. Oudere engines zijn goedkoper, maar het gebruik van een oudere engine kan resulteren in minder afzet. Het blijft dus een afweging.

## Voorbeelden

* Urho3D is een lichtgewicht vrije 3D en 2D game engine geschreven in C++.
* De Quake engine. Deze engine van id Software was zijn tijd ver vooruit en de verschillende incarnaties van deze engine hebben de basis gevormd voor een groot aantal games. Naast Quake is deze engine gebruikt voor bijvoorbeeld Hexen II van Raven Software en, in sterk aangepaste vorm, voor Half-Life van Valve Software. De engines van id Software worden altijd geschreven door één persoon, te weten John Carmack.
* De Unreal Engine van Epic Games. Van deze engine, waarvan ook al meerdere versies bestaan, is een sterke concurrent van de Quake engine met als sterke punt dat de engine beter in staat is om met grote ruimtes om te gaan.
* De Source engine van Valve Software. Na het succes van Half-Life, gebaseerd op de Quake engine, heeft Valve de tijd genomen om met een eigen engine te komen. Na 6 jaar werk kwam Valve met de Source engine. De physics engine van de Source engine is door Havok ontwikkeld en onder licentie verstrekt aan Valve. Op deze engine zijn inmiddels een aantal games gebouwd, waaronder Half-Life 2, Half-Life 2: Episode One en Counter-Strike: Source.
* De CryENGINE 3 van Crytek. Deze engine is zijn tijd weer een stuk vooruit, met als showcase Crysis. Er zijn ook andere spellen voor gemaakt, zoals Entropia Universe en dergelijke, aangezien deze engine meer geschikt is om mooie gebieden te maken, dan om actie weer te geven, omdat hij te zwaar is voor zijn tijd.
* De Frostbite engine. Deze engine is ontwikkeld door de Zweedse ontwikkelstudio DICE voor de shooterserie Battlefield. De engine is gebouwd op vijf speerpunten: audio, video, schaal, rendering en destructie. Voorbeelden van games zijn Battlefield 1943, Battlefield: Bad Company en Battlefield: Bad Company 2. In oktober 2011 verscheen Battlefield 3, dat draait op Frostbite 2, de verbeterde versie van de engine.
* Unity3D van Unity Technologies. De standaard SDK voor de Nintendo Wii U, die tevens veel gebruikt wordt voor de ontwikkeling van mobile-games.
* Creation Engine van Bethesda Game Studios