Deze serie gaat uit van enige kennis over de werking van game-engines. Lees zeker even ons introducerende artikel.

id Software stond niet alleen aan de wieg van 3D-games, maar ook aan die van de game engines. Onder de leiding van John Carmack wist het bedrijf continu te innoveren op het gebied van real time rendering. En dat in een tijd dat de PC net in opkomst was en de losstaande videokaart nog uitgevonden moest worden. Die technologische sprongen vooruit gaven een enorme impuls aan de PC als gaming-platform, die in de jaren tachtig het af moest leggen tegen de consoles. Een kijk in de id Tech-engines is een ware geschiedenisles.

Wolfenstein

In zekere zin was de Wolfenstein 3D-engine (later ook wel de id Tech 0 engine genoemd) nog geen echte 3D-engine. De levels in de game zijn volledig tweedimensionaal opgebouwd en ook de vijanden en voorwerpen in de game zijn gewone sprites. Toch was Wolfenstein 3D samen met het eerder verschenen Ultima Underworld: The Stygian Abyss een grondlegger voor gamen in de derde dimensie. Die laatste game ondersteunde variërende plafondhoogte, schuine vloeren en belichting, maar de engine van id Software was een stuk efficiënter en kon daardoor op veel mindere hardware gebruikt worden.

De Wolfenstein 3D-engine werkt met ray casting. Bij deze techniek wordt een level van bovenaf ontworpen. De engine stuurt vervolgens voor iedere verticale lijn op het computerscherm een straal uit, die bepaalt welke muur gerenderd wordt. Nadat alle muren getekend zijn vult de engine de vloer en het plafond in, waarna het de sprites van alle vijanden en voorwerpen op het scherm plaatst. Hierdoor ontstaat het effect van een driedimensionale wereld, ook al is het level in twee dimensies ontworpen.

Dat de engine deze berekeningen allemaal in real time kon doen is grotendeels te danken aan het feit dat de texturecoördinaten bij het opstarten van de game al worden berekend. Hierdoor hoeft de engine tijdens het renderen enkel te bepalen welke texture getoond moet worden. Deze aanpak maakte de Wolfenstein 3D-engine erg efficiënt voor de processor, waardoor de bijbehorende games op relatief lichte hardware gespeeld konden worden.

Doom

Het echte succes van id Software kwam pas met de game Doom. Net als de Wolfenstein 3D-engine maakte de Doom-engine gebruik van ray casting. Anders dan zijn voorganger kon de engine omgevingen een stuk gedetailleerder weergeven. Zo voorzag de engine plafonds en vloeren van textures, was verschillende belichting mogelijk en kon de hoogte van een ruimte variëren. Dat deed de engine door de levels op te delen in sectoren, die alle eigen instellingen zoals belichting en hoogte hadden. Een sector bestond uit enkele ‘sidedefs’, die de muren van de sector dan wel verbindingen met andere sectoren representeerden.

Voor het berekenen van de dichtstbijzijnde muur maakte de Doom-engine gebruik van Binary Space Partitioning. Hierbij wordt het level tijdens het ontwerpen opgedeeld in kleine segmenten, die gesorteerd zijn in een boom. Via een zoekmethode is het zo mogelijk om snel de te tekenen muur te bepalen. Hoewel het opdelen van een level in een boom veel rekentijd kostte, werd dit van tevoren gedaan. Daardoor ondersteunde Doom tijdens het spelen met gemak erg grote levels.

Quake

Toch is het pas de engine die id Software voor de game Quake ontwikkelde die we over het algemeen aanduiden met id Tech 1, de eerste echte engine van id Software. Id Tech 1 was een grote stap vooruit, want in tegenstelling tot zijn voorgangers was hier sprake van een echte 3D-engine. Door gebrekkige hardware moest het aantal polygonen flink beperkt worden. Daarom werden levels gemaakt met enkele simpele 3D-vormen, ook wel brushes genoemd, waarna alle onnodige polygonen werden verwijderd. Na deze voorberekening waren de levels weliswaar niet meer te bewerken, maar het aantal polygonen nam soms met wel 80 procent af.

Een volledige 3D-weergave bemoeilijkte de ray casting techniek aanzienlijk en dus ging de engine over tot het renderen van losse polygonen. Het nadeel daarvan is net zoals bij overige 3D-rendering het bepalen van de volgorde. Het tekenen van een polygoon dat geheel verstopt zit achter een ander polygoon is verspilde moeite. Net als zijn voorganger maakte de id Tech 1-engine daarom gebruik van Binary Space Partitioning, waarbij vooraf bepaald werd welk polygoon zich het dichtste bij de speler bevond. Hoewel bij deze techniek nog steeds sprake was van het onnodig renderen van polygonen (een noodzakelijk kwaad omdat de dichtstbijzijnde onzichtbare polygonen wel degelijk nodig zijn voor gameplay berekeningen) verminderde de werklast van de engine aanzienlijk. Dat is tevens de reden dat gebieden in Quake vaak verbonden zijn door hoekige tunnels: op deze manier hoeft een aanliggend gebied in zijn geheel niet gerenderd te worden.

Licht en spin-offs

De id Tech 1-engine was op veel vlakken revolutionair. Zo was Quake een van de eerste games die gebruik kon maken van hardwareacceleratie, het renderen met behulp van de net op de markt verschenen grafische kaarten in plaats van met behulp van enkel een processor. Daarmee gaf id Tech 1 een enorme boost aan deze toen nog niche hardware. Daarnaast zette de engine enorme stappen met betrekking tot belichting. John Carmack bedacht een aanpak waarbij de belichting van een level vooraf berekend kon worden en opgeslagen werd in een lightmap, die gecombineerd kon worden met de gewone texture.

Door al zijn innovaties kan de id Tech 1-engine gerust de grondlegger van de moderne engine genoemd worden. Zo is de engine van Half-Life (GoldSrc) feitelijk een flink aangepaste id Tech 1-engine. Dat de bekende Source Engine weer een modificatie op GoldSrc is bewijst dat de basis van id Tech 1 uiterst robuust was.

Quake II

Quake II - en dus id Tech 2 - verschenen ongeveer anderhalf jaar later. Anders dan zijn voorganger was de engine vooral een iteratieve verbetering. De id Tech 2-engine bood betere ondersteuning voor hardwareacceleratie en deelde losse componenten op in dll-bestanden. Hierdoor was de game niet alleen sneller, maar kon id Software ook delen van de broncode geheim houden, wat gezien de langzaam opkomende concurrentie (Unreal zou een klein half jaar na Quake II verschijnen) niet onverstandig was.

De eerste engines van id Software ondersteunden het gros van de first person shooters die in de jaren negentig zouden verschijnen. Naast Wolfenstein 3D, Doom en de Quake-serie verschenen onder andere Hexen, Heretic, Soldier of Fortune, Half-Life, Daikatana en zelfs Amsterdoom op een engine ontwikkeld door id Software. Het einde van de jaren negentig en de jaren nul zouden echter zowel het hoogtepunt als het dieptepunt van de engine inluiden. Daarover in het tweede deel meer.