Zephyrnet-logo

De ontwikkelaar van Age of Empires bevestigt dat de game grotendeels in assemblagecode op laag niveau is geschreven omdat ‘we door het scherm konden scrollen en het net zo snel of sneller konden vullen met sprites’ dan concurrenten als Starcraft ‘ook al hadden we twee keer zoveel pixels’

Datum:

Enkele van de mooiste verhalen over games gaan simpelweg over hoe ontwikkelaars het ding hebben laten werken. Vraag een willekeurige ontwikkelaar naar zijn favoriete oplossingen en je krijgt een avond vol entertainment over hoe een gigantische tram eigenlijk is een NPC met een hoed op, of hoe konijnen eigenlijk zijn wat zorgt ervoor dat Azeroth werkt, Enzovoort.

Dit is niet helemaal in die zin, maar een redditor merkte onlangs op dat Chris Sawyer Rollercoaster Tycoon 1 en 2 in de Assembleertaal schreef, en blijkbaar was Age of Empires hetzelfde: “AoE is geschreven in Assembly: is dit eigenlijk WAAR?!” Het is belangrijk op te merken dat dit vroeger niet ongebruikelijk was, hoewel het nog steeds behoorlijk opmerkelijk zou zijn als een hele game op deze manier hardgecodeerd zou zijn. Assembleertaal is, om het zo kort mogelijk te houden, elke codetaal op laag niveau die directer communiceert met de architectuur van een computer dan talen op hoog niveau zoals C++.

De vraag of Age of Empires in de assembleertaal is gecodeerd raak goud in de antwoorden met dank aan Matt Pritchard, een van de oprichters van Ensemble Studios, die vanaf het begin de codeerleider van de serie was.

“Ik denk dat ik dit kan verduidelijken, aangezien ik alle assemblagecode heb geschreven die wordt gebruikt in Age of Empires en Age of Kings, samen met vele andere delen van die games”, zegt Pritchard. “Er zijn in totaal ongeveer 13,000 regels x86 32-bits assemblagecode geschreven.”

Pritchard legt verder uit dat het overgrote deel hiervan in de “tekenkern” zat, die door Microsoft Macro Assembler 6.1 werd gecompileerd in een .obj-bestand en in andere gevallen in Visual C++. In gewoon Engels was dit een uiterst efficiënte manier voor het spel om sprites te tekenen, waarbij Pritchard schatte dat dit ongeveer 10 keer sneller was dan standaard C++-implementaties.

“De tekenkern van AoE was aanzienlijk sneller dan die van concurrenten als StarCraft. Daarom was de standaardresolutie ‘out of the box’ voor AoE 800 bij 600, terwijl bijna al onze concurrenten een resolutie van 640 x 480 hadden”, zegt Pritchard. “We konden door het scherm scrollen en het net zo snel of sneller vullen met sprites, ook al hadden we in de gamewereld twee keer zoveel pixels.”

De Assembly-code bleef zelfs in gebruik ten tijde van Age of Kings: HD-editie (een 32-bits game), maar Pritchard “herschreef de assembly-functies in C++ voor beide Definitive Editions, aangezien het 64-bits programma’s zijn en inline assembly werd nooit ondersteund door de 64-bits C++-compiler, en de sterk verbeterde registersets en compileroptimalisaties maakten het overbodig. Bovendien is het sprite-tekenen in de definitieve edities multi-threaded en zullen alleen al voor die taak tot 4 kernen worden gebruikt.”

Een deel van de reden waarom zo'n oplossing nodig was, is dat beide games werden ontwikkeld in een tijd waarin op zichzelf staande 3D-kaarten ongebruikelijk waren: "Het allernieuwste was 2D met een aparte 3D-kaart zoals de Voodoo 1 en 2", zegt Pritchard. Hij gaat dieper in op de technische beperkingen van die tijd en merkt op dat de Pentium 166 CPU in de machines die de meeste Ensemble-ontwikkelaars gebruikten “16K cache had… TOTAAL.” Of om het duidelijker te zeggen: "Je werkt nu waarschijnlijk op een pc met meer cachegeheugen op de CPU dan de pc waarop ik AoE heb ontwikkeld in TOTAAL." 

Pritchard's heeft een behoorlijke carrière achter de rug, maar heeft duidelijk echte affiniteit met Age of Empires, en vermeldt hoe de HD-editie (niet te verwarren met de Definitive Edition) tot stand kwam. “De HD-editie kwam tot stand nadat ik al een paar jaar bij Microsoft aanklopte om iemand geïnteresseerd te krijgen, en het contract met Hidden Path (waar ik destijds aan CS:GO werkte voor mijn vorige werkgever Valve) was nogal klein”, zegt Pritchard.

“Microsoft dacht niet dat er veel belangstelling was voor een volledig digitale downloadversie van een 2D-game uit de jaren negentig (de cd-romversie van de originele game lag een jaar of twee daarvoor nog in de winkelschappen). HD werd gedaan door een geweldig team bij HPE met een klein budget (~1990 mensen, ~iets minder dan een jaar), dus de veranderingen bleven beperkt tot het domein van ‘absoluut noodzakelijk’ in plaats van tot de meer ambitieuze Definitive Editions.”

Er zijn ook grappige details over de verschillende consolepoorten van de games. “Ensemble had niets te maken met de PS2-poort”, zegt Pritchard. “Microsoft onderhandelde zelf over de deal en gaf ze een code en activa op cd en zei: ‘Ga ermee aan de slag’. Bijna hetzelfde voor de Dreamcast-poort, hoewel ik daarvoor wel een uur op een whiteboard tekende en grafische details probeerde uit te leggen aan een Konami-ingenieur die geen Engels sprak, terwijl ik geen Japans sprak.

Pritchard eindigt met de woorden: “Ik heb het geluk dat ik een grote rol heb mogen spelen in deze games, vanaf het begin en de creatie in 1996 tot de drijvende kracht achter de revival in 2010-11 tot aan de moderne tijd, waarbij ik mijn eigen reis afrondde. mee toen DE in 2019 werd uitgebracht.

“Ik ben erg gelukkig dat ik deel heb mogen uitmaken van de creatie ervan en ben tot op de dag van vandaag nederig over al het plezier en meer dat het mensen heeft gebracht. Ik zou nooit de geweldige carrière in game-ontwikkeling hebben gehad die ik had zonder alle fans en supporters van die games.

spot_img

Laatste intelligentie

spot_img