Terug naar site

Modular Game Environments

Een onderzoek naar het snel en efficiënt maken van omgevingen

  • Door Alex Kentie, senior game artist/developer

Technologische vooruitgang

Al een aantal jaar vindt er binnen de zogeheten “AAA”-scene een verschuiving binnen de development voor games plaats. Game engines als Unreal en Unity maken het steeds makkelijker voor de “ongeschoolde zolderkamer hobbyist” om in zijn eentje games te maken. Je hoeft daarvoor geen codeer-pro, of waanzinnig technische 3D-artist meer te zijn.

Terwijl de kwaliteit van graphics in grote budgetgames langzaam maar zeker stagneert, verbetert de kwaliteit van wat vroeger de “hobby newgrounds flash spelletjes” waren. Door alle technologische ontwikkelingen veranderen deze langzaam maar zeker naar wat we niet lang geleden als “AAA” games beschouwden.

Dit is een trend die we goed kunnen terugzien in de store van bijvoorbeeld Nintendo Switch of Steam. Games als “Iconoclasts, Bright Memory, Meridian New World, maar ook het Nederlandse The Falconeer zijn bijvoorbeeld allemaal ontwikkeld door één developer.

Dit zijn allemaal game developers die zowel het programmeren, de art, als wel de combinatie van deze disciplines goed weten te beheersen. Ze maken slim gebruik van de tools die beschikbaar zijn om zo snel en efficiënt mogelijk zelfstandig hele game producties te ontwikkelen.

Dit is allemaal mogelijk, omdat “games maken” door een paar belangrijk ontwikkelingen in de afgelopen jaren steeds sneller kan. 

Casestudy

In opdracht van het XR -lab  ben ik onderzoek gaan doen naar het snel en efficiënt maken van omgevingen binnen Unity HDRP, Unreal Engine 4 in combinatie met Photogrammetry-techniek en Quixel.

Er zijn meerdere prototypes en toepassingen ontwikkelt om te experimenteren met deze technieken. Dit is nodig om te kunnen voldoen aan de toenemende trend binnen game development producties. Hierbij komt de focus steeds vaker op het product te liggen en minder op enkel techniek. 

Unity

Een belangrijk onderdeel van deze technologische ontwikkelingen zijn op voorhand de game engines die steeds uitgebreider worden. 

Unity bijvoorbeeld heeft sinds vorig jaar zijn render-pipeline aangepast en meer toegepast op wat Unreal Engine eigenlijk al langer deed. Zo maak je nu niet enkel projecten in het verouderde “default render pipeline”, maar zijn er verschillende render-pipelines ontwikkeld die voldoen aan de specifieke eisen van jouw project.

De Universal Render Pipeline (URP) bijvoorbeeld is ontwikkelt voor developers die snel en effectief, maar nog steeds met zware PBR materialen willen ontwikkelen voor lightweight projecten voor o.a. VR, Mobile en Nintendo Switch.

De High Definition Render Pipeline (HDRP) is in het bijzonder ontwikkeld om een zo kwalitatief hoog mogelijke output te creëren. Denk hierbij aan Volumetric Lighting, Fog en Ambiance, Complexe materials met oa Sub Surface Scattering.  Of aan GPU gegenereerde particle systemen met VFX Graph, waarbij je miljoenen particles tegelijk kunt spawnen.

Daarnaast kun je nu ook 2D georiënteerde projecten met een volledig eigen 2D belichting en sprite systeem maken. En is de render pipeline van Unity tegenwoordig volledig zelf-scriptable (SRP), waarbij programmeurs tegen minder belemmeringen van een gesloten engine aan zouden moeten lopen bij het customizen van hun game-output.

Een bijkomend voordeel van deze nieuwe render pipelines is de integratie van Shader Graph en Bolt. Tools die stiekem een beetje afgekeken lijken van het blueprints systeem van Unreal.

broken image

Unreal

Een andere engine (en veel ouder dan Unity) is de Unreal Engine. Een opvallende trend hierbij is dat Unreal vroeger vooral voor de “hardcore” C++ programmeur gebruikt moest worden, tegenwoordig kun je je games volledig in Blueprints bouwen.

Blueprints is een systeem waar bestaande blokjes met code door middel van lijntjes aan elkaar gekoppelt worden. Dit systeem noemen we ook wel visual scripting en draagt bij aan het feit dat meer visueel ingestelde technische mensen (zoals game-artists) zich steeds makkelijker in het technische programmeer gedeelte van game development weten te begeven.

Vanouds is Unreal altijd een tool geweest die door veel AAA game bedrijven gebruikt werd, maar tegenwoordig is de engine zo sterk dat ook de filmindustrie hiermee werkt. (Ook met Unity)

De serie “de Mandalorian”, maar ook grote budget films als de Lion King en Jungle Book remakes hebben allemaal omgevingen die zijn gebouwd in Unreal Engine 4 in combinatie met een techniek genaamd Photogrammetry.

Photogrammetry

Door het schieten van foto’s om objecten heen (360 graden), kun je onder de juiste omstandigheden een programma volledig kloppende 3D objecten laten uitrenderen. Deze techniek kennen we als “Photogrammetry”.

Begin 2018 tijdens een project, toen ik nog doceerde aan de opleiding Game Artist, ben ik in deze techniek gedoken. 

Toen nog echt opkomend, zag ik potentieel voor het efficiënt maken van “game environments”. Ik had het gevoel dat er binnen de game development een aardverschuiving zou gaan plaatsvinden, met name in de AAA-scene. Het was ook een techniek die op dat moment in het nieuws kwam door de Star Wars game: Battlefront van ontwikkelaar “Dice”.

Om een authentieke visuele representatie van de Star Wars werelden te creëren is DICE met grote ploegen naar de plekken afgereisd waar origineel de scènes werden opgenomen (denk aan Redwood Forest, California). Daar hebben ze met een kleine ploeg, zoveel mogelijk foto’s geschoten van zo’n beetje alles wat ze konden vinden. Planten, Stenen, Bomen etc.

In 2018 startte ik bij de opleiding Game Artist een keuzedeel “Game Environment Design”, waarbij Photogrammetry een belangrijk onderdeel was. Hiervoor heb ik studies gedaan in de volgende photogrammetry pakketten:

  • Agisoft
  • Zephyr 3D

Ik realiseerde mij alleen dat het leren van een nieuwe techniek aan studenten ten koste ging van de focus op het maken van een omgeving. (of vise-versa) 

Deze gedachte werd bevestigd tijdens een playgrounds sessie van een art director uit de Amerikaanse film en game industrie. Hij propageerde kort hierna dat het ontwikkelen van assets in 3D in de toekomst niet meer van de grond af aan gemaakt hoeven worden.

Als artists en developers gaan wij meer gebruik maken van libraries waarmee de focus minder op techniek komt te liggen, maar meer op het bouwen van creatieve omgevingen. Een ontwikkeling die ook klopt met de rest van de development trends en die je terugziet in de ontwikkeling van bovengenoemde games en engines. 

Een development collega van mij vergeleek ooit het maken van een eigen game engine, met het construeren van je eigen potlood voordat je hiermee eigenlijk kan tekenen. Dit kan handig zijn als je heel nauwkeurig wil zijn in het soort potlood dat je wil gebruiken, maar is zeker niet altijd nodig om mee te tekenen (lees: games bouwen).

Zo is het tegenwoordig ook met fotorealistische game assets. Wij hoeven steeds minder onze eigen bomen om te hakken, om een potlood en een papiertje te maken. We kunnen steeds vaker meteen beginnen met tekenen door gebruik te maken van gekochte potloden en papier.

Uitwerking in Unreal Engine 4 en Quixel

Een belangrijke sleutel hiervoor is “Quixel” dat is opgekocht door Unreal’s moederbedrijf Epic. Het XR -Lab gaf mij de ruimte om te kijken wat er mogelijk is door dit te combineren met Unreal Engine 4 en te onderzoeken hoe deze pipeline goed zou moeten werken..

Quixel is een uitgebreide library van 3D assets. Deze zijn door verschillende scan-groepen wereldwijd middels photogrammety vastgelegd en beschikbaar gesteld om mee te werken. Assets die je daar kunt vinden zijn: grond-materialen, omgevings-assets, planten en bomen, maar ook architectuur. Met de Quixel-bridge tool kun je gemakkelijk deze assets importeren in de Unreal Engine.

Waar ik aan gewerkt heb, is het maken van een materiaal (een shader). Deze moet de ontwikkelaar bij het bouwen van een terrein een hoop werk uit handen nemen. Zo wil ik laten zien dat het ontwikkelen van een omgeving niet meer gaat over "zelf alles opbouwen". Je kunt als game developer of game artist nu snel aan de lag emt datgene dat je wil doen: 'het opbouwen van een game environment'. 

Daarvoor heb ik een aantal stappen gemaakt in het gebruik van deze shader die ik hieronder zal beschrijven. 

Nadat je met heightmaps een omgeving hebt gebouwd zorgt deze shader ervoor dat 2 quixel materialen automatisch met elkaar blenden aan de hand van de slope steilheid.

Deze techniek gebruikte ik samen met collega Berend Weij ook al in ‘t Unity HDRP project VRTheWorld, waar Berend deze feature zelf voor heeft moeten programmeren.

VRTheWorld is een game environment project gebouwd voor de HTC-Vive in samenwerking met XR -Lab. Hierbij onderzochten Berend Weij en ik of het mogelijk is om met hand gestures procedureel en realtime een omgeving te bouwen. Ook daar hebben wij gebruik gemaakt van zelf geschoten Photogrammetry-assets. We zijn toen dieper ingegaan op de pipeline en workflow van de Unity High Definition Render Pipeline. 

Afsluiting

De shader is klaar en moet getest worden met een publiek. De release van Unreal Engine 5 is aangekondigd. Hierbij zijn ook weer nieuwe stappen aangekondigd om de integratie van assets van Quixel naar Unreal beter te maken. Ondertussen werken de meeste studio’s voorlopig nog steeds met Unreal Engine 4.

Deze shader zou een waardevolle toevoeging kunnen zijn om een brug te slaan tussen Quixel en Unreal Engine 4. Om dit te testen stel ik deze shader beschikbaar voor iedereen die hiermee wil experimenteren en direct aan de slag zou willen met deze tool.

Uiteindelijk hoop ik dat deze verder ontwikkeld kan worden. Dat mensen er nog meer aan toe kunnen en willen toevoegen, zodat het bouwen van AAA omgevingen in Unreal voor iedereen nog toegankelijker en makkelijker wordt dan dat het al is.

De shader is hier te downloaden voor iedereen die ambities heeft om te werken met Quixel in combinatie met Unreal Engine 4.

broken image

Ontwikkeling

Binnen XR -lab zien we heel veel potentie in deze ontwikkeling om game omgevingen realistischer en efficiënter te maken. Vooral in de context van Virtual Production zien we nieuwe mogelijkheden. Kort gezegd is VP een studio waarbij LED-schermen de set visualiseren. 

Enkele grote studio’s zoals Lucasfilm Ltd./Disney, Netflix, Amazon Prime Video en Universal Pictures maken een transitie door van filmen op sets naar filmen met de virtuele productietool ‘the Volume’, in combinatie met de Unreal Engine van Epic. Deze maakt gebruik van een LED-verlichtingmuur met hoge definitie. Hierop wordt de filmomgeving van de scène geprojecteerd, waarop de cast en crew kan zien waar hij of zij zich bevindt en wie de fictieve tegenspeler is (in tegenstelling tot bijvoorbeeld een green screen). Door middel van live camera tracking worden de hyperrealistisch nagebouwde werelden getoond. Deze techniek is mede versimpeld door de nieuw uit te komen Unreal Engine 5 en bijkomende real-time rendering mogelijkheden. 

Deze techniek is goedkoper dan filmen op locatie en zorgt voor beheersbare omstandigheden met betrekking tot licht en weer. De verwachting is dat binnen een paar jaar ook de Nederlandse filmindustrie veelvuldig met deze techniek werkt. De komende tijd zullen wij ons meer in dit nieuwe crossover domein van film- en game productie verdiepen. In de nabije toekomst zal dit zeer specifieke kennis en skills van werknemers vereisen. Als XR -lab willen we op deze ontwikkeling inspringen, zodat we een volgende stap kunnen nemen in onze onze missie om een duurzame aansluiting op de arbeidsmarkt te creëren voor technisch-creatieve mbo-studenten: kwalitatief en kwantitatief.