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 letterlijk de motor voor het spel is.
[bewerk] De 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 truuks 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 via het programma DirectX dat fungeert als vertaler tussen de engine en de videokaart.
- 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 een afgrond afgestuurd wordt, zal het object nog altijd dankzij de physics engine de bodem van de afgrond bereiken.
[bewerk] De Financiën
Game engines zijn een groot goed in de gamesindustrie. 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 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.
[bewerk] Voorbeelden
- 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. Inmiddels heeft Carmack een dusdanige status op het gebied van computergraphics dat producenten van videokaarten e.d. naar hem luisteren als het gaat om de toekomst van grafische technologie.
- 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 goede eigen engine te komen. Na 6 jaar werk (wat goed illustreert hoe kostbaar zo'n engine kan zijn) kwam Valve met de Source engine. Deze engine weet zelfs op middelmatige PC's complexe en gedetailleerde omgevingen weer te geven zonder dat er (al te veel) haperingen optreden. Deze engine is een mooi voorbeeld van hoe modulair een engine kan zijn; De (overigens zeer goede) physics engine van de Source engine is door derden ontwikkeld (Havok) 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 en er zullen er nog zeker een aantal volgen.