10 January 2022

13 Minimale leestijd

inside ubisoftstudio updates

Ubisoft La Forge - Grenzen verleggen met AI in games om de volgende generatie NPC's te maken

Ubisoft La Forge is een open initiatief voor onderzoek en ontwikkeling waar onderzoekers en Ubisoft-experts samenkomen om het gat tussen academisch onderzoek en innovaties in games te overbruggen. Door te experimenteren met de nieuwste technologieën en technieken uit games, staan ze in de voorhoede van de academische wereld. Speciale teams onderzoeken het gebruik van de nieuwste technologieën, zoals kunstmatige intelligentie, om games realistischer en leuker te maken, en ze nog efficiënter te kunnen ontwikkelen.

[UN ] Ubisoft La Forge – Pushing State-Of-The-Art AI In Games To Create The Next Generation Of NPCs - JoshuaHeadshot

'Deep reinforcement learning' is een van die mogelijke toepassingen: een soort machinelearning die AI gebruikt om de meest efficiënte oplossingen te vinden voor allerlei problemen. Om de geheimen hiervan te ontrafelen en te ontdekken hoe dit helpt om realistische NPC's te creëren, ze door complexe gamewerelden te laten navigeren en menselijkere reacties te maken, spraken we met Joshua Romoff, een datawetenschapper bij Ubisoft La Forge en inwoner van Montreal. Hij heeft zijn liefde voor videogames omgezet in een PhD in datawetenschap. Hij onderzoekt nu de verschillende toepassingen van machinelearning in games en gaf onlangs een lezing bij de conferentie Artificial Intelligence and Interactive Digital Entertainment (AIIDE) 2021 om de doorbraak waar hij en zijn team aan werken te presenteren, waarbij ze met machinelearning de navigatie en bewegingen van NPC's verbeteren.

Wat is 'deep reinforcement learning' en hoe werkt het?

Joshua Romoff: Er zijn een paar termen die je moet begrijpen: 'agent' en 'actie'. Wat we in AI een 'agent' noemen, is in principe de hoofdpersoon die interacties heeft met de wereld. In ons onderzoek gebruiken we bots voor die rol. En dan de 'actie', dat is de interactie die de speler uitvoert. Ik zie de speler een beetje als het verlengde van een controller, en elke input die de speler invoert via die controller leidt tot een actie.

Laten we kijken naar 'reinforcement learning'. Dit draait om het idee dat je een bepaald gedrag wilt versterken, net als in het klassieke hondenexperiment van Pavlov waarbij een onderzoeker met een belletje rinkelde voordat hij de honden te eten gaf, zodat ze de bel gingen associëren met een beloning. Je probeert bepaalde uitkomsten aan te moedigen, of juist te ontmoedigen, door beloningen en straffen te gebruiken. We doen hetzelfde met een AI-agent. We geven hem punten als hij iets goeds doet, of trekken punten af voor ongewenst gedrag. Mijn baan is om de tests te ontwerpen en te bepalen of we beloningen geven of verwijderen. Het doel van de AI is om de hoogst mogelijke score te halen met de beschikbare acties.

Dan het woordje 'deep'. Dat verwijst naar de manier waarop de agent de wereld waar hij zich in bevindt waarneemt: in essentie een diep neuraal netwerk. Een scherm is een ingewikkeld ding, met mogelijk honderdduizenden pixels die tegelijk worden weergegeven. Dus hoe verwerk je dat scherm en al die inputs? Een diep neuraal netwerk pakt dat scherm, verwerkt het tot iets op een veel kleinere schaal, analyseert de data en voert die informatie vervolgens in bij het deel met de 'reinforcement learning', dat dan acties uitvoert op basis van die data. Dat noemen we een end-to-end-systeem, omdat alles is ingesloten en de data tussen deze systemen rondgepompt wordt, van de ene kant naar de andere en weer terug. We doen dat met alle frames en wijzen punten toe op basis van de acties en de resulterende status van de omgeving, en voeren veel iteraties uit om de agent te trainen om de acties uit te voeren die wij willen.

Zijn er games die je hebben geïnspireerd in je studie naar 'deep reinforcement learning'?

JR: Absoluut. Ik hou altijd al van openwereldgames waarin je rond kunt rennen en met NPC's kunt omgaan, zoals in Far Cry. Waar ik altijd op let in dat soort games, is hoe spelers omgaan met de AI van de NPC's. Dat is voor mij een belangrijk onderdeel van de ervaring. Jij speelt in een spelwereld, en de NPC's zijn daarin een belangrijk aspect. Ik vind het altijd leuk om met NPC's aan te rommelen en als een soort uitdaging te proberen om de AI vast te laten lopen, om te zien hoe ik ze kan manipuleren. Als ik bijvoorbeeld tegen een vijand vecht en besluit om een berg te beklimmen, dan kijk ik toe hoe die vijand tegen de berg aan botst omdat hij niet kan klimmen. Zo kijk ik hoe ze reageren op verschillende gebeurtenissen. Dat is altijd al iets wat mij bezighoudt in mijn werk: bedenken hoe we een AI kunnen verbeteren en trainen om zich menselijker te gedragen.

Hoe ziet een dag uit het leven van een onderzoeker eruit?

JR: Op een normale werkdag ben ik bijvoorbeeld experimenten aan het doen, waarbij ik een 'AI-agent' train om een bepaalde handeling uit te voeren in een game. Als dat experiment goed loopt, ben ik veel aan het observeren. Ik bekijk data en grafieken, en pas zaken aan om de gewenste resultaten te krijgen. Een ander groot onderdeel van mijn baan is mijn werk met PhD-studenten die willen afstuderen. Al onze studenten krijgen betaald, maar ik werk met hen en hun professors om projecten uit te stippelen. Er lopen meestal een hele hoop projecten van studenten tegelijk, wat de studenten natuurlijk helpt, maar ons ook helpt om onze grenzen te verleggen. Ik bedoel, ik kan toch niet alles in mijn eentje programmeren? Zodra we een werkend prototype hebben, stoppen we die technologie in een open omgeving. Dat is een gesimplificeerde versie van een echte engine voor games, waar we de resultaten van ons werk kunnen bekijken. Als een project succesvol is, zou het werk van de studenten kunnen worden gebruikt in de games die wij ontwikkelen. Zo ervaren zij ook wat het inhoudt om aan games te werken, dus we proberen er altijd voor te zorgen dat de projecten die we opzetten kunnen leiden tot iets dat onze teams kunnen gebruiken in hun producten.

In je lezing tijdens AIIDE besprak je tests in games als Hyper Scape om 'speler-achtige' bots te maken. Kun je daar meer over vertellen?

JR: We hebben wat tests gedaan in Hyper Scape. Niet op de live servers, maar die game had wel een interessante omgeving waarin we antwoorden op een paar van onze vragen konden zoeken. Het coole aan Hyper Scape is dat de 3D-omgeving redelijk ingewikkeld is om doorheen te navigeren en erg veel verticaliteit heeft. Spelers hebben ook veel spullen en vaardigheden tot hun beschikking, zoals trampolines die je de lucht in slingeren en dubbelsprongen, waarmee je op de daken van gebouwen kunt komen. Je kunt die dingen ook combineren, dus het is erg interessant voor een ontwikkelaar of tester om te controleren of spelers wel door de hele map kunnen navigeren.

Normaal gesproken gebruiken games een zogenoemde 'navmesh', een soort tweedimensionale kaart van alle gebieden in een wereld waar je kunt komen. Met die data kunnen bots dan bepalen waar ze heen gaan en hoe ze daar komen. Maar het was heel moeilijk om in deze game tests uit te voeren met die methode, want als je allerlei gekke acties hebt zoals trampolines en dubbelsprongen, plus verticale verdiepingen die niet altijd zijn verbonden door trappen of hellingen, stijgt het aantal mogelijkheden naar een enorm getal. Het gebruik van 'deep RL' was hier logisch, omdat we de agent in een trainingslus konden gooien waar ie zou leren om acties uit te voeren en zelf van A naar B te komen, zonder een navmesh. We gebruikten het dus om een agent deze bewegingen aan te leren, om die vervolgens in de map te testen en ervoor te zorgen dat hij overal kon komen.

[UN ] Ubisoft La Forge – Pushing State-Of-The-Art AI In Games To Create The Next Generation Of NPCs - NavMesh

We hebben begrepen dat je wat interessante resultaten hebt gevonden bij tests in andere games. Kun je daar meer over vertellen?

JR: Een goed voorbeeld is een bot die we hebben getraind in For Honor. We wilden dat de agent meer zou verdedigen, dus we gaven hem daar een extra beloning voor. Wat er gebeurde, was dat de agent besloot om het gevecht nooit af te maken en tot in de eeuwigheid bleef verdedigen. Dat is best grappig, want een van de grootste uitdagingen bij het trainen van agenten met dit proces is dat, welke situatie je hem ook voorschotelt en actie je ook wilt aanmoedigen, hij in principe gaat leren hoe hij dat zo goed mogelijk kan doen. Als je hem beloont als hij in leven blijft of verdedigt, blijft hij dat doen, omdat hij daarvoor beloond wordt. Maar je wilt natuurlijk niet dat de bot de speler elke keer gewoon verslaat, toch? Dat zou niet leuk zijn, dus je wilt ook ander gedrag aanmoedigen, zoals verdedigen, om zijn acties wat gevarieerder te maken.

De andere reden om dit soort kleine beloningen te geven, is omdat je zo het trainingsproces kunt versnellen. Het is makkelijk om soms een kleine bonus te geven voor verdedigen en dan weer voor aanvallen, maar het is niet direct duidelijk hoe al die bonussen combineren. Zo kun je heel grappig gedrag krijgen. Een ander voorbeeld was in Hyper Scape, met de navigatietests. We trainden de agent om zo snel mogelijk van het ene punt naar het andere te komen, maar we hadden hem nog niet de mogelijkheid gegeven om te sprinten. Hij ontdekte zelf dat als hij sprong en daarna kleine camerabewegingen uitvoerde, hij iets sneller ging dan gewoon lopen. Het was heel grappig om te zien hoe hij een soort konijnensprong uitvond. Deze twee voorbeelden besprak ik ook in mijn lezing bij AIIDE.

[UN] Ubisoft La Forge – Pushing State-Of-The-Art AI In Games To Create The Next Generation Of NPCs - ForHonorDefenseBot

Zijn dat soort resultaten nog steeds waardevol in het proces?

JR: Dat hangt ervan af wat de toepassing is. Als je de game wilt testen, zoals bij onze experimenten, dan zijn die resultaten erg nuttig. Je ziet dan wat het optimale gedrag is op basis van de beloningen die je geeft. Je ziet welke dingen de agent leert en kunt begrijpen hoe dat gedrag de agent helpt om zijn doel te bereiken. Hiermee kun je dingen ontdekken die je eerder niet zag, waardoor je problemen kunt oplossen en kunt zien als de code anders werkt dan bedoeld.

Hebben de nieuwste generatie consoles en dingen als de cloud en streaming nieuwe mogelijkheden opgeleverd die eerder niet mogelijk waren voor AI in games?

JR: Honderd procent, ja. Het onderzoek naar deep learning begon in de jaren 80 en 90. Onderzoekers liepen uiteindelijk tegen de technische beperkingen van die tijd aan. Als je een model met deep learning draait op een oudere console, kun je dat simpelweg niet lokaal doen. Dat zou de framerate absoluut in laten storten. De hoeveelheid rekenkracht die mensen thuis hebben is exponentieel gestegen, en de hardware zelf is ook enorm verbeterd. Om die reden, en met het grote aantal onderzoeken in dit veld, zijn we nu op het punt aanbeland waarbij we deze problemen kunnen oplossen en bots kunnen maken die door zeer ingewikkelde 3D-werelden kunnen navigeren met allerlei bizarre vaardigheden. Dit kunnen we nu redelijk efficiënt draaien, met bots die veel menselijker zijn dan iets dat we zelf kunnen programmeren. Het is nu niet meer zo'n vreemd idee om meerdere agenten rond te laten rennen in een game en ze allemaal complexe berekeningen laten uitvoeren. Het is niet meer iets dat we pas over tien jaar gaan zien. Het onderzoek en de hardware zijn er al klaar voor en bouwen al een tijdje toe naar dit punt.

Voor welke andere toepassingen zou je deze technieken kunnen gebruiken?

JR: De meest natuurlijke toepassing is een bot, daarom richten wij ons daarop. Mijn groep heet zelfs de 'Smart Bots Group', dus daar zijn we veel mee bezig. We werken aan bots om games mee te testen, maar je kunt je vast voorstellen dat als je een bot leert om door een omgeving te navigeren, je die bot ook kunt uitvergroten en als AI-vijand tegen spelers kunt laten strijden.

Naast bots is 'reinforcement learning' en heel algemeen raamwerk met veel verschillende toepassingen. Ik zou me kunnen voorstellen dat je het bijvoorbeeld gebruikt voor serverbeheer. Als je servers host voor een game, is het een probleem als er te veel servers draaien terwijl je ze niet nodig hebt, of als je juist heel veel spelers hebt en niet genoeg servers. We zouden in theorie een agent kunnen trainen om dit soort beslissingen te maken, waarbij hij kijkt naar het aantal spelers op bepaalde tijdstippen en dan het aantal servers daarop aanpast.

Wat zijn je doelen voor de toekomst met deze technologie?

JR: Het doel is om te blijven werken aan manieren om games nog realistischer te maken, waarbij NPC's en bots nog menselijker aanvoelen, en om problemen op te lossen die we tot nu toe niet konden aanpakken. We willen deze technologie ook aan gameontwikkelaars geven en er tools voor spelers mee maken. Het kan een extra stuk gereedschap zijn voor ontwikkelaars, waarmee ze deze bots kunnen aanpassen om te doen wat ze willen. Dat is de volgende grote stap, want alle tests waar ik het over heb gehad waren niet in live omgevingen of met echte spelers. Ik denk dat de eerstvolgende stap is om dit met gametesters te proberen en er allerlei verschillende scenario's mee te testen, van prestatieproblemen tot gameplaymechanieken en meer.

Wat zijn de implicaties van het gebruik van AI en 'deep reinforcement learing' in games?

JR: Als we deze technologie alleen gebruiken om games te testen, dan zullen spelers er niks van zien en is er geen reden om je zorgen te maken over de negatieve speculaties die je weleens hoort over AI. Sommigen zijn misschien bezorgd dat games hierdoor minder door echte mensen worden getest, maar dat klopt niet, want de soorten tests die wij met deze bots uitvoeren zijn fundamenteel anders dan de dingen die we met echte mensen testen. De menselijke interacties verdwijnen niet en mensen blijven de meer interessante elementen van games testen, zoals missies en andere daadwerkelijk leuke aspecten van een game.

Voor het echte gebruik van AI-bots in games, denk ik dat het heel belangrijk is dat wij transparant blijven over wat we doen. Ik denk dat sommige mensen zich zorgen maken dat er straks bots in hun games zitten zonder dat ze weten of ze tegen een mens of een bot spelen. Het kan nogal controversieel zijn, en daarom vind ik dat we volkomen transparant moeten zijn en spelers niet voor de gek moeten houden. De andere reden om AI in games te omarmen, is dat dit een perfecte omgeving daarvoor is. Het is een goede plek om bepaalde ideeën te proberen en te zien wat er gebeurt, terwijl onverwachte resultaten binnen de game blijven en geen invloed hebben op het echte leven buiten de game. Dus mensen hoeven niet bang te zijn dat mijn verdedigende For Honor-bot straks de wereld overneemt: hij leeft alleen in een game, en is best grappig.

Je kunt Joshua's volledige lezing tijdens AIIDE 2021 bekijken om zijn werk in actie te zien en meer te leren over 'deep reinforcement learning' en AI. Hou de hub van Ubisoft News in de gaten voor al het laatste nieuws en updates van de teams van Ubisoft.