Van Cryengine naar Dunia
Wie de kans krijgt om Dominic Guay te spreken, die als technical director bij de interne studio van Ubisoft verantwoordelijk is voor de engine die schietspel Far Cry 2 aandrijft, laat dat natuurlijk niet aan zich voorbij gaan.
Ontwikkelaar Crytek was samen met Ubisoft verantwoordelijk voor het eerste deel van Far Cry. De game werd door Crytek gemaakt, op basis van de zelfgebouwde Cryengine. Het huwelijk tussen de uitgever en de ontwikkelaar zou kort na het verschijnen van de shooter stuklopen, waarop Crytek in zee ging met Electronic Arts. Ubisoft hield aan de breuk de naam Far Cry over, en het bedrijf mocht gebruik blijven maken van de in het spel gebruikte technologie. Op basis van de Cryengine heeft het ontwikkelteam van Ubisoft de Dunia-engine gebouwd, waar Far Cry 2 op draait.
Restjes
De vraag is natuurlijk wat Ubisoft aan de engine heeft toegevoegd en wat er van de Cryengine nog in de code is terug te vinden.
Dominic Guay: "We wilden Far Cry 2 op basis van onze eigen technologie ontwikkelen en wisten dus dat we een geheel nieuwe engine moesten maken. Het is veel moeilijker om een engine van de grond af aan op te bouwen, dan om met een bestaande engine te starten en daar gaandeweg onderdelen van te vervangen. Het is wel mogelijk, maar dan zouden we vanaf het begin tegelijkertijd belangrijke onderdelen als physics en rendering moeten programmeren. Vandaar dat we de Cryengine van Far Cry hebben gebruikt als basis. Dat gaf ons de mogelijkheid om ons steeds volledig te concentreren op één onderdeel, en stuk voor stuk delen van de engine te vervangen. We zijn overigens niet over één nacht ijs gegaan. In april 2005 zijn we aan het project begonnen en we hebben eerst het nodige onderzoek gedaan. We wilden weten wat de mogelijkheden van de Cryengine zijn, wat we wilden bereiken met de Dunia-engine en waar de concurrentie mee bezig was. We wilden vooraf vooral duidelijk hebben hoe we de dag- en nachtcyclus aan zouden pakken en hoe we dynamische belichting in zouden bouwen. We hebben ook goed nagedacht over de bomen en vegetatie in het spel."

"Ons onderzoek heeft tot het eind van 2005 geduurd en daarna zijn we gaan programmeren. We hebben tot begin 2007 besteed aan pre-productie, dus aan het ombouwen van de engine. Begin 2007 waren we zover dat de rest van het team met de engine kon gaan werken. We waren absoluut nog niet klaar met ons werk, maar de editors waar de rest van het team het spel mee moet maken waren klaar, dus toen zijn we met de echte productie van de game begonnen. We begonnen alle textures, modellen en animaties te ontwikkelen en gingen de eerste delen van de spelwereld bouwen."
Werkwijze
Was de Cryengine dan zo modulair opgebouwd dat onderdelen zomaar kunnen worden vervangen?
"De oorspronkelijke engine bestond uit een kern waar onderdelen als physics, rendering en animatie aan vasthingen en die onderdelen konden we vrij gemakkelijk loskoppelen en vervangen. Pas toen alle onderdelen waren vervangen zijn we naar de kern gaan kijken. Dat was het moeilijkste stuk om te vervangen, maar het is uiteindelijk goed gelukt. Toen dit was gebeurd kon de rest van het team met de engine aan de slag."
Vervangen
Welke onderdelen van de Cryengine hebben jullie als eerste vervangen?
"De physics-engine. Met de Cryengine kon de speler bij lange na niet zoveel kapot schieten en opblazen als wij wilden, en dat vinden we zo belangrijk dat we daarmee zijn begonnen. Daarna hebben we het deel van de engine vervangen dat de animaties afhandelt. We hadden binnen Ubisoft al een animatie-engine waar we erg tevreden over waren, en die hebben we ingebouwd in de Far Cry-engine. Toen was het de hoogste tijd om de renderer te vervangen, het deel van de engine dat het beeld naar de monitor stuurt. Vervolgens hebben we de kern vervangen, want om het spel op consoles te kunnen spelen moet het spel dynamisch kunnen laden, iets wat met de oude engine niet mogelijk was. In de loop van 2006 was dat allemaal klaar en toen zijn we gaan kijken naar multiplay. Tegen het einde van 2006 speelden we de eerste potjes Deathmatch."

Wat is er nog van de oorspronkelijke Cryengine in Dunia terug te vinden?
"Eigenlijk zitten alleen in de verschillende editors nog wat stukjes code van de Cryengine. De oorspronkelijke editors waren erg goed, maar voor ons te beperkt. We hebben de oorspronkelijke editors behouden en zijn die uit gaan bouwen tot ze konden wat wij wilden. Dat geldt uiteraard voor de editors die we zelf gebruiken. In de editor die we meeleveren met de consoleversies van het spel is wel wat meer tijd gaan zitten."
Vegetatie
Ubisoft maakt ook gebruik van de Havok Physics-engine. Wat doet Havok en wat doet Dunia?
"We gebruiken inderdaad Havok. Eigenlijk laten we Havok alleen de omvang van de driedimensionale objecten bepalen. Alles wat er met die objecten gebeurt, wordt afgehandeld door onze eigen code. Onze eigen code behandelt het vernietigen van voorwerpen en we gebruiken hem ook om de rag doll physics van lichamen, en de bijbehorende animaties af te handelen. We gebruiken Havok dus nauwelijks. Vooral bij het omgaan met vegetatie en bomen is onze eigen code actief. Zoals je weet kun je een tak van een boom afschieten, als je goed weet te mikken, en er kan gras in brand worden gestoken. Mocht de tak al in brand staan, maar het gras eronder niet, dan zal het vuur overslaan zodra de tak op het gras valt. Bovendien hebben we een dynamisch systeem dat bepaalt hoeveel wind er staat. Het effect van de wind is te zien aan het wuivende gras, maar als de wind in kracht toeneemt, ook aan het buigen van de takken van bomen."

"Als er veel wind staat zal de tak die je afschiet door de wind worden meegenomen. Zelfs vuur reageert op de wind. In een droge savanne zal het vuur zich met de wind mee verplaatsen. Als de wind draait, wat regelmatig gebeurt, zal het vuur worden terug geblazen naar de omgeving waar al het gras al is verbrand, en het vuur zal uiteindelijk doven. We hebben voor bomen en vegetatie een systeem gemaakt dat procedureel is. Het gedrag is gebaseerd op regels die we vooraf hebben ingevoerd. Gebouwen, die gedeeltelijk kunnen worden vernield, hebben we wel op de traditionele manier gemaakt. Trouwens, ook de belichting, en daarmee de schaduwwerking in het spel, is geheel dynamisch. We hebben dus een dag- en nachtcyclus en alle belichting en alle schaduwen zijn afgeleid van het licht van de zon en de maan. We voegen alleen nog wat extra variatie toe aan schaduwen, met name onder bomen."

Bomen
Jullie hebben bij de ontwikkeling van dit spel een speciale texturetechniek gebruikt. Kun je daar wat over vertellen?
"Het is een techniek die door de grafici in het team is ontwikkeld. Onze grafici en ook onze animators zijn technisch erg goed onderlegd. In de meeste games worden tegenwoordig textures gebruikt met een vrij hoge resolutie. Dat werkt over het algemeen prima, al kost het veel geheugen om al die textures te laden. Toch zijn er beperkingen. Hoge-resolutie textures zien er alleen goed uit vanaf een bepaalde afstand. Als de speler dichtbij komt, wordt het beeld wat wazig. Ontwikkelaars proberen dat te ondervangen door lagen met verschil in detaillering in een texture op te nemen, maar dat lost het probleem slechts gedeeltelijk op. Onze grafici hebben een andere aanpak gekozen. Ook zij maken textures die uit verschillende lagen bestaan, maar de lagen bestaan niet uit steeds uit hetzelfde plaatje met een andere resolutie."

"Bij ons bestaat een texture bijvoorbeeld uit een laag die de structuur van het hout weergeeft, met daar bovenop een laag die het kleurverloop weergeeft, gevolgd door nog een aantal lagen met detailinformatie. Vervolgens laten we die textures veel meer met elkaar overlappen dan gebruikelijk is in andere games. Bij ons is een boom niet bekleed met één grote texture, we maken gebruik van een heleboel kleine textures die in elkaar overlopen. Toen we het spel op de consoles konden spelen, bleek deze technologie een groot voordeel te leveren. Het laden van kleine textures kost minder geheugen. Het laten overlappen van de textures vraagt iets meer van de processor, maar geheugen is op een console over het algemeen een groter probleem dan processorkracht."
Playstation 3
Voor de pc-versie van Far Cry 2 gaan jullie uit van Directx 9 en niet van Dx10. Vanwaar deze keuze?
"Toen we begonnen was er helemaal nog geen sprake van Directx 10, dus we zijn altijd uitgegaan van Directx 9. We kregen de eerste details over Dx10 echter vrij vroeg binnen en de eerste Dx10-kaarten ook, bijna anderhalf jaar geleden. We hebben vanaf dat moment één programmeur non-stop op Dx10 gezet en het spel maakt er dus wel degelijk gebruik van. Er is overigens behoorlijk veel verschil tussen de beide versies, het is alsof je voor een ander platform programmeert. Toch wilden we er direct mee aan de slag, al blijkt inmiddels dat het voor Far Cry 2 misschien toch niet zo belangrijk is. Het spel loopt prima op Dx9 en bovendien zijn er niet veel mensen die Vista draaien en een Dx10-kaart hebben. We willen echter meer games maken met de engine, dus we zijn blij dat we Dx10-ondersteuning al hebben ingebouwd. We hebben bij het integreren van de nieuwe application programming interface overigens voor een andere aanpak gekozen dan sommige andere ontwikkelaars. We hebben vooral geprobeerd om de game beter te laten draaien onder de nieuwe versie. Pas toen we dat hadden bereikt gingen we kijken hoe we het spel er onder Dx10 beter uit konden laten zien. We hebben nu wat troeven achter de hand waarvan we onderzoeken of we ze in de uiteindelijke versie van het spel willen stoppen. Er zijn bijvoorbeeld extra shaders, zoals een watershader, en layers voor de schaduwen in het spel, die we misschien nog uitzetten in de eindversie."

Playstation 3
Zijn jullie nog tegen problemen aangelopen bij het programmeren voor de Playstation 3?
"In eerste instantie wisten we het spel vrij snel draaiend te krijgen op de Playstation 3, en nog met een behoorlijk framerate ook. Het leek dus allemaal wel mee te vallen. Dat veranderde echter, toen we de prestatie van het spel wilden verbeteren. Daarbij bleek pas goed hoe lastig het is om met de PS3 te werken. Gelukkig hadden we wat meer tijd dan de teams die de eerste generatie PS3-games hebben gemaakt. Ik kom net uit ons testlab, daar spelen zestien spelers op de PS3 tegen elkaar en dat verloopt probleemloos. Maar het heeft een tijd geduurd voordat we doorhadden hoe we met de Cell-processor om moesten gaan. Op de pc en de Xbox 360 werkt multithreading op een redelijk eenvoudige manier, op de Playstation 3 is dat wel anders. De zeven synergistic processing units die we van de PS3 kunnen gebruiken zijn supersnel in het uitvoeren van sommige taken en slecht in het uitvoeren van andere. Het duurde even voor we doorhadden welke processen we aan de spu's moesten overlaten, en het vergt bovendien veel datamanagement om de juiste processen aan de juiste spu toe te wijzen. Gelukkig hebben we wat mensen in het team die erg goed zijn in dat soort werk."

Hoeveel programmeurs werken er aan Far Cry 2?
"We hebben een behoorlijk groot team, alles bij elkaar werken we met ongeveer 45 programmeurs. Een groep van acht verzorgt multiplay op alle platformen, er werken ongeveer acht mensen aan de versie voor de Xbox 360, nog eens acht aan de versie voor de Playstation 3 en een groepje van zes is alleen met de pc-versie bezig. De rest van het team doet van alles en nog wat. Voor elke versie van het spel is iemand anders verantwoordelijk, en het is mijn taak om de drie kemphanen uit elkaar te houden."
Titel | Far Cry 2 |  |
Platform | Pc, Xbox 360, PS3 |
Ontwikkelaar | Ubisoft Montréal |
Uitgever | Ubisoft |
Releasedatum | Herfst 2008 |