Ghost Recon: Wildlands’
Procedural Tools

Published
maart 20, 2020

Benoit Martinez presenteerde op de Game Developer’s Conference in 2017 de procedurele tools die ze hebben gemaakt om de productie van Ghost Recon Wildlands te vergemakkelijken. In dit artikel geven we een overzicht van de aanpak en systemen die ze gebouwd hebben.

Voor we concreet bespreken wat Martinez deed, hieronder de noodzaak van het gebruik van procedurele technieken in de development cyclus. Ubisoft publiceerde eerder Ghost Recon Future Soldier. Het verschil in grootte en hoeveelheid content tussen Wildlands en Future Soldier was immens. Met Wildlands begon Ubisoft aan de grootste action-adventure die ze tot dan hadden gemaakt.

Daarnaast worden er tijdens de productie van een AAA game constant elementen toegevoegd en heeft men dus nood aan snel itereren. Ze kozen hiervoor voor Houdini en Houdini Engine omdat het volgens hun de perfect toolbox is voor technical design en prototyping. De tools zijn flexibel in aanpassing en uitbreiding zonder last te hebben van lange compilatietijden. Alle Houdini tools voor Wildlands werden gemaakt door een team van 4 personen: 1 technical director (Martinez) en 3 technical artists waarvan 2 juniors (eerste job in de industrie) waren.

Het Ghost Recon team experimenteerde al eerder met het gebruik van Houdini in hun productie pipeline. Zo hadden ze de voordelen van proceduralisme al opgemerkt bij de productie van Ghost Recon Future Soldier bij het plaatsen van repetitieve elementen, maar voor Wildlands hebben ze hun pipeline herwerkt om tool- en data centrisch te zijn. 

Terrein

Het terrein is de basis waarop alle andere systemen binnen Ghost Recon Wildlands zijn gebouwd. De wegen, dorpen, steden, rivieren gebruiken de input van het terrein om hun content te creëren.

Eerst wordt een basis 32k terrein reliëf map gemaakt, die gebaseerd was op de echte reliëfkaart van Bolivia. Dan kon deze in hun game engine, Anvil, bewerkt worden door de level artists. Hiervoor maakten ze een gelaagd systeem waarbij de oorspronkelijke reliëf map als basis wordt gebruikt en nooit wordt bewerkt. Iedere laag voert enkele bewerkingen uit op de basis map, zo kan een artiest altijd teruggaan naar vorige versies van de reliëf map. 

Dit terrein wordt dan vanuit Anvil in Houdini gebracht zodat de procedurele systemen continu de verandering aan het terrein in acht nemen. Een terrein bevat de parameters voor hoogte en materialen. Maar met behulp van deze informatie kan andere data worden afgeleid, zoals: gemiddelde belichting door de zon (voor vegetatie), waterflow maps, natheid, etc.

Door deze parameters en het genereren van het wegennetwerk realiseerde Martinez zich de kracht van een tool-driven procedurele pipeline. Bij elke stap van het genereren van de wereld, wordt ook telkens een hoop extra metadata gegenereerd die andere systemen kan aansturen. 

Wegen en rivieren

Om het wegennetwerk te genereren werd een pathfinding systeem dat de eigenschappen van het terrein volgt gebruikt. Om te bepalen waar de wegen precies komen te liggen, wordt gekeken naar het aanleggen van de goedkoopste weg. Zo is een weg leggen op een steile helling zeer kostelijk. Een bestaande weg gebruiken is goedkoper dan een nieuwe weg leggen. Dit systeem is op die manier gelijkaardig aan hoe het in de echte wereld zou gebeuren.

Een volledig procedureel systeem geeft soms niet genoeg controle aan een artiest of ontwerper. Het systeem moet flexibel en genoeg vrijheid geven, maar toch zoveel mogelijk automatiserenMartinez heeft hiermee rekening gehouden. Ontwerpers krijgen de mogelijkheid om wegpunten en gebieden die niet mogen bewerkt worden te definiëren. Daarnaast hebben ze ook controle over verschillende parameters zoals: hoe snel nieuwe wegen naar bestaande moeten gaan en hoeveel bochten de weg mag nemen. Rivieren en spoorwegen gebruiken gelijkaardige processen, maar met andere regels en parameters.

© Ubisoft / GDC 2017

Eens de wegen zijn gegenereerd, dan kan de artiest dit naar de renderfarm sturen om zo binnen een paar minuten het terrein te terraformen.

De data die uit het wegensysteem komt, wordt opnieuw gebruikt om het systeem te sturen dat verantwoordelijk is voor het plaatsen van wegmarkering en props. Het kan ook gebruikt worden om verkeer te sturen voor de AI agents in het spel.

Dorpen en steden

Eén van de grootste uitdagingen in de productie was het creëren van realistische dorpen en steden.

Het wegennetwerk van het dorp moet logisch zijn en eruitzien alsof het historisch gegroeid zou zijn vanuit het centrum. Om dit te realiseren worden districten gedefinieerd die dan de wegen parameters bepalen. Belangrijke gebouwen komen op logische plaatsen.

De eerste versie van deze tool kon enkel rurale dorpen generen, waarbij het een set van hoofdstraat maakte, met kleinere straten er tussen die alles verbonden.  

© Ubisoft / GDC 2017
© Ubisoft / GDC 2017

Dit werkte goed, maar de tool was te gelimiteerd. De artiesten wilden de mogelijkheid om iets groots te bouwen. Daarom werd het systeem door Martinez en zijn team verder uitgebreid.

Het plaatsen van gebouwen was het meest complexe van dit systeem. Het gebruikt een self-aware packing algoritme die een lijst krijgt van alle gebouwen, elk met zijn eigen regels qua plaatsing. Het algoritme probeert dan om elk gebouw te plaatsen volgens een prioriteit parameter, of volgens een bepaalde ratio. Dus eerst worden de hoofdgebouwen geplaatst (zoals bijv. gemeentehuis, kerk, etc), en de rest werd opgevuld met huizen, kraampjes en andere structuren die meer leven in het dorp brengen.

Het algoritme deelt eerst het dorp op in verschillende districten, gebaseerd op het eerder gegenereerde wegennetwerk, en kijkt in elk district voor correcte plaatsingslocaties. Het verzamelt dan informatie van elke locatie (gebaseerd op terrein, weg, rivier, afstand van het centrum, blockout volumes, etc.) en vergelijkt dit met de parameters van de gebouwen in de lijst om te zien welk gebouw het moet plaatsen op die locatie. Dit proces moet ook rekening houden met gebouwen die er al zijn. Als er bijvoorbeeld al een kerk staat, dan kan er geen tweede religieus gebouw geplaatst worden binnen 150 meter.

Uiteindelijk hebben ze meer dan 70 regels en condities opgesteld dat ze per gebouw kunnen instellen, waardoor de tool enorm krachtig en flexibel werd.

Steden en dorpen genereren met zulke tools heeft enkele voordelen: Alle dorpen zijn consistent. Het maakt het enorm gemakkelijk om dorpen te verplaatsen en te veranderen in de spelwereld. Zo werd de grootste stad in het spel 5 keer opnieuw gebouwd, wat enorm veel manuren zou vereisen als alles manueel gebeurd.

Natuurlijk zijn er ook nadelen met deze tool-centrische aanpak. Procedurele systemen worden snel enorm complex, en men moet al deze regels opstellen en beheren doorheen de productie. Artiesten en designers gaan hoofdzakelijk deze tools gebruiken, maar ze hebben deze niet zelf ontworpen. De tools moeten dus gebruiksvriendelijk zijn en er moet hulp worden geboden indien iets verkeerd loopt.

© Ubisoft / GDC 2017

Uiteindelijk werd 80% van de data in Ghost Recon Wildlands gemanipuleerd of gebruikt door verschillende procedurele systemen. Alle systemen zijn in lagen en stappen opgebouwd. Er is geen groot systeem, maar eerder een verzameling van modulaire tools die onderling op elkaar verder bouwen.

Klik hier voor de volledige talk.