AI leuk maken wanneer goed genoeg goed genoeg is

Het maken van goede kunstmatige intelligentie voor computer-tegenstanders is moeilijk. Het programmeren van een spel zoals dammen is niet erg uitdagend; het toevoegen van overtuigende AI kan echter langer duren dan het maken van de game zelf. Maar wat doen we wanneer we deze AI maken? Is het belangrijk dat het elke mogelijke zet op het bord onderzoekt, of kunnen we vals spelen en het willekeurig laten bewegen? Wat moet een AI doen en (het belangrijkste) hoe kunnen we ervoor zorgen dat het spel leuk is?

Goede AI versus Fun AI

De term 'AI' is een heel breed concept en het type AI is afhankelijk van het spel. asymmetrisch games, zoals Space Invaders, Mario of Tower Defense, laten de speler moeiteloos door een reeks vijanden snijden. Omdat de "teams" (speler versus al het andere) uit balans zijn, hebben deze spellen de neiging dom AI te gebruiken. Symmetrisch games, zoals Starcraft, Street Fighter of Civilization, verwachten dat de speler tegenstanders op gelijke voet verslaat en vereisen daarom een ​​complexere AI.

Space Invaders aan de linkerkant, Starcraft aan de rechterkant. De speler vecht een buitenaardse horde in beide; in Starcraft hebben ze echter de neiging terug te vechten.

Games moeten echter vooral leuk zijn. Spelers houden van een uitdaging en verliezen niet herhaaldelijk. Sommige spellen zoals Checkers zijn zelfs "opgelost", wat betekent dat het mogelijk is om een ​​AI te bouwen die een onverslaanbaar spel speelt.

Toen mijn team en ik aan onze computer / bordspel Infected werkten, moesten we de AI op het eerste niveau opzettelijk vreselijk maken om spelers niet af te schrikken. De game AI was in eerste instantie nogal simplistisch, en de computer zou hyper agressief spelen, volledig gericht op scoreplaten met hoge scores zonder te denken aan verdediging of aanwezigheid op het bord. 

Hoewel de AI arm was, ontdekten we dat nieuwe spelers verpletterd zouden raken en hun interesse zouden verliezen. We hebben de AI verschillende keren herzien, hoewel het nog steeds een te grote uitdaging voor spelers bleek te zijn. Uiteindelijk hebben we eenvoudig de AI verwijderd, dus het spel zou elke keer een willekeurige beweging maken. Hoewel sommige spelers nog steeds het lukte om te verliezen, dit enorm verbeterde spelersbehoud, waardoor we de "serieuze" AI op hogere niveaus opnieuw konden introduceren.

Geïnfecteerd, een spel dat nogal zwaar is gebaseerd op een Amiga-spel met dezelfde naam.

Het probleem van 'te goed' AI is te zien in verschillende games: FPS-games met bots met 360 graden visie of beat-'em-ups tegen bots met perfecte reflexen. Spelen tegen deze AI's leert de speler niet echt om het spel goed te spelen: het leert ze om de bots te "spelen", om een ​​fout te vinden in het algoritme dat eenvoudige moorden toelaat.

Dit wil niet zeggen dat alle AI arm moet zijn, maar dat een goede AI veelzijdig is. Het maakt fouten, maar probeert te voorkomen dat het in dezelfde voorspelbare patronen valt. Door de AI het vermogen te geven om aan te passen (en dus variantie in het spel te bieden) zal de speler waarschijnlijk veel meer entertainment bieden dan een AI die elke keer hetzelfde perfecte spel speelt.

"Je bent niets anders dan een pak kaarten!" roept Alice. Onrealistische AI ​​kan ons iets soortgelijks laten oproepen: "Je bent niets dan een stel code!".

Ze menselijk maken

Nadat we Infected hadden gemaakt speelden we kort met een vervolg, Infected 2. Het was hetzelfde uitgangspunt, maar op een grotere schaal, vergelijkbaar met het klassieke bordspel Risk. Omdat de game groter was, was het belangrijk om de AI drastisch te verbeteren: iets dat de speler in de loop van een veel langer spel kon vermaken en waarbij meerdere AI's tegen elkaar konden spelen. 

We hebben de oude AI aangesloten en er waren verschillende problemen mee. De AI was voorspelbaar, maar dat was iets dat met een beetje werk kon worden verbeterd. Het grootste probleem betrof de algemene houding van de AI en hoe deze speelde. 

Er waren drie hoofdproblemen:

  • Ten eerste was spelen tegen de AI's niet erg leuk.
  • Ten tweede was het niet erg de moeite waard om de AI te verslaan.
  • Ten derde zou de AI "vals spelen" door het spel opzettelijk te gooien.

De game was leuk tegen andere spelers, maar niet tegen de AI. Hoewel er nog steeds hetzelfde niveau van uitdaging was, waarom was er dan zoveel verschil tussen speler tegen de AI en tegen iemand anders, als de gameplay hetzelfde was??

We herinnerden ons toen dat mensen iets hebben wat computers niet doen: emoties.

Een deel van het spelen van een spel wordt emotioneel; we houden van een spannende overwinning, we haten een verpletterende nederlaag. We houden ervan onze overwinningen op de gezichten van onze vrienden te wrijven en we worden kleinzielig en wraakzuchtig wanneer ze ons verraden. Games zijn intrinsiek gekoppeld aan onze emoties, en het is iets dat een AI nooit kan ervaren ... maar het is iets dat wij ontwikkelaars kunnen emuleren.

De Vital Spark

Waarom speelde de AI niet leuk? 

Omdat de kunstmatige intelligentie zo duidelijk was kunstmatig. Alle bots speelden op dezelfde manier; ze hadden allemaal dezelfde benaderingen van het spel; ze waren allemaal even voorspelbaar in hun bewegingspatronen.

Zelfs in Pac-Man hebben de vier geesten - Inky, Blinky, Pinky en Clyde - hun eigen persoonlijkheden en bewegingspatronen.

We hadden iets nodig om ze van elkaar te onderscheiden. Dus introduceerden we persoonlijkheden: roekeloos, verdedigend, ontdekkingsreiziger. De AI zou bepaalde strategieën een kunstmatig gewicht geven en vervolgens in die aanvalspatronen bewegen.

Zelfs in een basale vorm was dit een enorme verbetering: niet langer was elke game hetzelfde, maar het voegde onvoorspelbaarheid toe aan bewegingen van vijanden en maakte het moeilijker om een ​​enkele "game winning" -strategie te formuleren. Als de AI's werden gerandomiseerd toen het spel begon, dan zou de speler niet kunnen voorspellen hoe het spel zich zou ontwikkelen.

Persoonlijkheden op AI is geen nieuw idee. Civilization geeft persoonlijkheden aan zijn leiders (Gandhi houdt er van om mensen te bombarderen), Age of Mythology AI's bepalen hoe waarschijnlijk het is dat ze strategieën gebruiken zoals turtlen of haasten, en Unreal Tournament-bots hebben favoriete wapens.

Gandhi in Civilization 5: vermijd het aanroepen van zijn toorn.

Waarom versloeg de AI niet?

Het belangrijkste probleem was dat de AI elke ronde speelde wat het als een "beste zet" beschouwde. Het beoordeelde eenvoudig het speelbord, zonder rekening te houden met diplomatie. Als het nodig was om je aan te vallen, zou het gebeuren. Als je het terugviel, kon het gewoon niet schelen. Het zag de game als een wiskundige puzzel die moest worden opgelost, in plaats van een spel tegen complexe menselijke spelers. Spelen tegen onze kunstmatige intelligentie resulteerde in een kunstmatig spel.

Onze oplossing kwam van een Amiga-game uit 1989 genaamd Nuclear War. In Nuclear War vocht je tegen verschillende wereldleiders en probeerde je hun land te vernietigen. Wie erin slaagde te overleven, zou winnen. Hoewel het simplistisch was, was het verrassend leuk om te zien hoe je vijanden verstrikt raakten in persoonlijke vendetta's en kernkoppen op elkaar gooiden.

Dit "vrienden en vijanden" -systeem gebruikte een heel eenvoudige metriek: geluk. Elke wereldleider had een verscheidenheid aan gezichtsuitdrukkingen die het gemakkelijk maakten om hun houding tegenover jou te beoordelen. Het was niet verwonderlijk dat het neerschieten van mensen de neiging had hen erg snel ongelukkig te maken. Bovendien zouden je vijanden niet alleen boos op je worden, maar ook op elkaar. Dit betekende dat een enkele eigenzinnige raket kon escaleren in een aanhoudende strijd tot de dood.

Nogmaals, dit systeem is in veel spellen gebruikt, inclusief Civilization. Een vijandige natie met een hoog niveau van "geluk" zal eerder met jou samenwerken en je geschenken sturen, terwijl een vijand die je haat veel middelen kan investeren in het verpletteren van je steden..

Door een elementaire geluksmeter aan ons spel toe te voegen, hebben we vriendschappen en rivaliteiten toegestaan ​​om te brouwen. Een spel is spannender wanneer je een aartsvijand ontwikkelt, of wanneer teams en allianties zich vormen. Plotseling werd het spel persoonlijk en daden voelden aan alsof ze zwaar waren. We ontdekten ook dat een zichtbare geluksmeter belangrijk was, anders zou de speler niet begrijpen wat er gebeurde. Een eenvoudig blij gezichtspictogram geeft meteen het idee dat vijanden "van streek kunnen raken" en het kijken naar het gezichtsverandering bij het nemen van bepaalde acties maakte duidelijk welke gevolgen deze acties hadden.

Het dilemma van de gevangene is een bekend concept van de speltheorie en veel programmeurs hebben tijd besteed aan het bouwen van de ultieme bot om te concurreren in het dilemma van de geïdenateerde gevangene. Vreemd genoeg was de winnende strategie voor vele jaren ook de eenvoudigste: bekend als tit-for-tat, het kopieerde simpelweg de beweging van de tegenstander.

Hoe zou de AI Cheat zijn?

Het probleem in Infected 2 was vaak dat de AI gewoon keek naar het kortetermijnperspectief. De AI streeft ernaar om elke keer een maximale score te behalen: als dit een algehele slechte zet zou betekenen, dan zou het hoe dan ook het geval zijn.

De gemakkelijkste manier om het voor te stellen is dit scenario:

  • Alice, Bob en Carol spelen oorlog.
  • Alice heeft 100 soldaten. Bob heeft 75 soldaten. Carol heeft 150.
  • Alice noch Bob kunnen Carol verslaan.
  • Echter, Alice en Bob samen kunnen Carol verslaan.

Het probleem was dat de AI zou doen wat de meeste punten zou scoren. In het bovenstaande scenario betekende dit dat Alice Bob zou aanvallen: op de korte termijn een uitstekende zet, maar op de lange termijn desastreus. Niet alleen doet Alice een zet die zichzelf ten onder gaat, ze veroordeelt ook Bob tot een zekere nederlaag. Bob is begrijpelijk overstuur.

Dit soort situaties is moeilijk te vermijden, omdat het zien van het grotere geheel een complexe redenering vereist die verder gaat dan de meeste eenvoudige AI. We hebben geprobeerd 'eerlijkheid' te waarborgen door spelers minder snel te laten aanvallen als ze verloren gingen of recentelijk werden aangevallen. Hoewel niet elk spel een eenvoudige oplossing kan toepassen, is het belangrijk om te beseffen dat spelers het haten om zonder duidelijke reden te worden aangevallen.

Hoewel Infected 2 nooit voorbij de alpha-fase is gekomen, heeft het ons waardevolle lessen geleerd. Het belangrijkste is dat het niet genoeg is om alleen tegen vijandige bots te spelen: je wilt betrokken zijn bij het spel, rivaliteiten ontwikkelen en iedereen die tegen je speelt tegen houden.

AI goed gedaan

Vele jaren geleden werd een spel gepubliceerd dat een voorsprong leek te hebben op de concurrentie. Hoewel het een multiplayer-spel van ontwerp was, waren de bots goed genoeg dat er van een enkele speler genoten kon worden. En hoewel dit tegen de huidige maatstaven slecht is, had dit spel - Unreal Tournament - een AI die andere spellen uit het water blies.

We kunnen naar een in-game screenshot kijken om een ​​idee te krijgen van wat er in ging om een ​​bot te maken:

Bot 19, ook bekend als Tamerlane.

Vaardigheid was de belangrijkste factor bij het vaststellen van botgedrag: beginnende bots waren traag, moesten stil blijven staan ​​en waren traag om te draaien, terwijl bots van een hoger niveau sneller waren, konden ontwijken, een groter gezichtsveld hadden en geavanceerd konden gebruiken wapencombinatietechnieken.

Bots kunnen vervolgens verder worden aangepast met nauwkeurigheid, alertheid, kamperen en beschietingen. "Persoonlijkheid" zou worden bepaald door de gevechtsstijl en het favoriete wapen, waarbij werd bepaald of de bot graag van dichtbij en persoonlijk kwam, of dat hij van een afstand snipte. Bots zou de speler ook beschimpen en wraak zoeken. Elk van de 32 bots kan individueel worden aangepast, wat betekent dat je 32 verschillende persoonlijkheden zou kunnen hebben. Bepaalde bots, zoals Loque, werden berucht bij spelers.

Al deze factoren hebben geholpen om bots te creëren die meer voelden menselijk. Hoewel het spel nog steeds goed zou zijn zonder deze verfijning, voegt het een extra, bijna onmerkbare laag plezier toe.

Conclusie

Aan het einde van de dag moet je vragen: wat wil je van je AI? Gaan de vijanden onopzettelijk over de speler rennen en lopen ze als eerste de pits in, of probeer je iets meer te ontwikkelen, iets dat zorgt voor een meer persoonlijk niveau van interactie met de speler? Wat je ook beslist, onthoud drie belangrijke punten:

  • Als bots fouten maken, voelen ze zich menselijker en minder als een "pak kaarten".
  • Als ze opzettelijk toneelstukken maken op basis van individuele persoonlijkheid (of emotie, zoals wraak), is de kans groter dat onvoorspelbare en opwindende gameplay ontstaat.
  • Als bots slim proberen te spelen in plaats van kortzichtig, hebben ze meer kans om het spel eerlijk te maken voor onze ogen.

Referenties

  • Voorbeeldafbeelding: Ghost van Andres Flores van het Noun-project
  • Voorbeeldafbeelding: Pacman door Andres Flores van het Noun-project
  • Illustratie van Alice in Wonderland: door John Tenniel, in het publieke domein