Å gjøre AI Fun Når god nok er god nok

Å lage god kunstig intelligens for motstandere er vanskelig. Programmering av et spill som utkast er ikke veldig utfordrende; Å legge til overbevisende AI, kan imidlertid ta lengre tid enn å lage spillet selv. Men hva gjør vi når vi lager denne AI? Er det viktig for den å undersøke alle mulige trekk på brettet, eller kan vi jukse og bare få det til å flytte tilfeldig? Hva må en AI gjøre, og (viktigst) hvordan kan vi sikre at spillet er morsomt?

God AI vs Fun AI

Begrepet "AI" er et veldig bredt konsept, og typen av AI avhenger av spillet. asymmetrisk spill, som Space Invaders, Mario, eller Tower Defense, la spilleren kutte gjennom fiender av fiender uten problemer. Siden "lagene" (spiller vs alt annet) er ubalanserte, har disse spillene en tendens til å bruke dumme AI. symmetrisk spill, som Starcraft, Street Fighter eller Civilization, forventer at spilleren skal slå motstandere på like måte, og det krever mer komplisert AI.

Space Invaders til venstre, Starcraft til høyre. Spilleren kjemper en fremmed horde i begge; i Starcraft har de en tendens til å kjempe tilbake.

Spillene må imidlertid være morsomme, først og fremst. Spillere nyter en utfordring, ikke å miste flere ganger. Faktisk har noen spill som Checkers blitt "løst", noe som betyr at det er mulig å bygge en AI som spiller et uslåelig spill.

Da teamet mitt og jeg jobbet på Infected / Infrarødt spill, måtte vi gjøre første nivås AI oppriktig forferdelig for ikke å skremme spillerne av. Spillet AI var i utgangspunktet ganske forenklet, og datamaskinen ville spille hyper aggressivt, og fokuserte helt på høy scoring-spill uten å tenke på forsvars- eller styrets nærvær. 

Selv om AI var dårlig, fant vi ut at nye spillere ville bli knust og miste interessen. Vi revidert AI flere ganger, selv om det fortsatt viste seg for mye av en utfordring for spillerne. Til slutt fjernet vi bare AI, så spillet ville bare gjøre et tilfeldig trekk hver gang. Selv om noen spillere fortsatt klarte å miste denne massivt forbedrede spillerenes oppbevaring, slik at vi kunne gjeninnføre den "seriøse" AI på høyere nivåer.

Infisert, et spill ganske tungt basert på et Amiga-spill med samme navn.

Problemet med "for godt" AI kan ses i en rekke spill: FPS-spill med bots som har 360 graders visjon, eller beat-'em-ups mot bots med perfekt reflekser. Å spille mot disse AIene lærer ikke spilleren å spille spillet bra: det lærer dem å "spille" bots, for å prøve å finne en feil i algoritmen som gjør det enkelt å drepe.

Dette er ikke å si at alt AI skal være dårlig, men heller at god AI er mangesidig. Det gjør feil, men prøver å unngå å falle inn i de samme forutsigbare mønstrene. Å gi AI muligheten til å tilpasse seg - og dermed å gi variasjon i gameplay - vil trolig gi mye mer underholdning for spilleren enn en AI som spiller det samme perfekte spillet hver gang.

"Du er bare en pakke med kort!" gråt Alice. Urealistisk AI kan få oss til å ringe ut noe lignende: "Du er bare en masse kode!".

Gjør dem menneskelige

Etter å ha smittet, lekte vi kort med en etterfølger, infisert 2. Det var samme premiss, men i større målestokk likt det klassiske brettspillet Risk. Fordi spillet var større var det viktig å ha drastisk forbedret AI: noe som kunne holde spilleren underholdt i løpet av et mye lengre spill, og hvor flere AIer kunne konkurrere mot hverandre. 

Vi plugget inn den gamle AI, og det var flere problemer med det. AI var forutsigbar, men det var noe som kunne forbedres med et lite arbeid. Det største problemet var om den generelle holdningen til AI, og hvordan den spilte. 

Det var tre hovedproblemer:

  • For det første var det ikke spesielt morsomt å spille mot AI.
  • For det andre var det ikke særlig givende å slå AI.
  • For det tredje vil AI "jukse" ved å kaste spillet forsettlig.

Spillet var morsomt mot andre spillere, men ikke mot AI. Selv om det fortsatt var det samme utfordringsnivået, hvorfor var det så stor forskjell mellom spiller mot AI og å spille mot en annen person, hvis spillingen var den samme?

Vi husket da at mennesker har en ting datamaskiner ikke: følelser.

En del av å spille et spill blir følelsesmessig; Vi elsker en spennende seier, vi hater et knusende nederlag. Vi elsker å gni våre seire i våre venners ansikter, og vi blir smålig og hevn når de sviker oss. Spill er iboende knyttet til våre følelser, og det er noe som en AI aldri kan oppleve ... men det er noe vi utviklere kan etterligne.

Den Vital Gnisten

Hvorfor spilte ikke AI moroa? 

Fordi kunstig intelligens var så åpenbart kunstige. Alle bots spilte på samme måte; de hadde alle de samme tilnærmingene til spillet; De var alle like forutsigbare i deres bevegelsesmønstre.

Selv i Pac-Man, har de fire spøkelsene-Inky, Blinky, Pinky og Clyde sine egne personligheter og bevegelsesmønstre.

Vi trengte noe for å få dem til å skille seg ut fra hverandre. Så vi introduserte personligheter: hensynsløs, defensiv, explorer. AI vil gi en kunstig vekt til bestemte strategier, og deretter flytte i disse angrepsmønstrene.

Selv i en grunnleggende form var dette en enorm forbedring: ikke lenger var hvert spill det samme, men det lagde uforutsigbarhet mot fiendtlige trekk og gjorde det vanskeligere å formulere en enkelt "spillvinnende" strategi. Hvis AIene ble randomisert når spillet startet, ville spilleren ikke kunne forutsi hvordan spillet skulle utfolde seg.

Personligheter på AI er ikke en ny ide. Sivilisasjon gir personligheter til sine ledere (Gandhi kjenner kjærlighet til nukleare), Age of Mythology AIs bestemmer hvor sannsynlig de skal bruke strategier som turtling eller rushing, og uvirkelige turneringsroboter har favorittvåpen.

Gandhi i sivilisasjon 5: unngå å påkalle sin vrede.

Hvorfor slår ikke AI belønning?

Hovedproblemet var at AI spilte hva det så på som et "beste trekk" hver runde. Det vurderte bare spillbrettet, uten hensyn til diplomati. Hvis det trengte å angripe deg, ville det. Hvis du angrep den tilbake, bryr det seg ikke bare. Det så spillet som et matematisk puslespill som skulle løses, i stedet for et spill mot komplekse menneskelige spillere. Å spille mot vår kunstige intelligens resulterte i et kunstig spill.

Vår løsning kom fra et Amiga-spill fra 1989 kalt Nuclear War. I Kjerne-krigen kjempet du mot forskjellige verdensledere og forsøkte å nekte sitt land fra eksistensen. Den som klarte å overleve ville vinne. Selv om det var forenklende, var det overraskende morsomt å se på at fiender ble fanget i personlige vendetter og kaste warheads på hverandre.

Dette "venner og fiender" systemet brukte en veldig enkel metrisk: lykke. Hver verdensleder hadde en rekke ansiktsuttrykk som gjorde det enkelt å bedømme deres holdning til deg. Ikke overraskende, nuking folk pleide å gjøre dem ulykkelig veldig raskt. I tillegg vil dine fiender ikke bare bli urolige med deg, men med hverandre. Dette betydde at en enkelt farlig missil kunne eskalere inn i en vedvarende kamp mot døden.

Igjen har dette systemet vært brukt i mange spill, inkludert sivilisasjon. En fiendtlig nasjon med høy grad av "lykke" er mer sannsynlig å forbinde med deg og sende deg gaver, mens en fiende som hater deg, kan investere mye ressurser i å knuse byene dine.

Ved å legge til en rudimentær lykke meter i vårt spill, tillot vi vennskap og rivalisering å brygge. Et spill er mer spennende når du utvikler en nemese, eller når lag og allianser dannes. Plutselig ble spillet personlig, og handlinger føltes som de hadde vekt. Vi har også funnet ut at en synlig lykkemåler var viktig, ellers ville spilleren ikke forstå hva som skjedde. Et enkelt lykkelig ansiktsikon gir umiddelbart ideen om at fiender kan bli "opprørt", og se på ansiktsendringen ved å ta visse handlinger gjorde det klart hvilke konsekvenser disse handlingene hadde.

Fangeens dilemma er et velkjent spillteoriskonsept, og mange programmerere har brukt tid på å prøve å bygge den ultimate bot for å konkurrere i det itererte fengsels dilemma. Merkelig, den vinnende strategien i mange år var også den enkleste: kjent som tit-for-tat, det kopierte bare motstanderens trekk.

Hvordan vil AI jukse?

Problemet i infisert 2 var ofte at AI bare så på kort sikt. AI har som mål å maksimere sin score hver tur: hvis dette medførte å gjøre et generelt dårlig trekk, så ville det gjøre det uansett.

Den enkleste måten å forestille seg er dette scenariet:

  • Alice, Bob og Carol spiller krig.
  • Alice har 100 soldater. Bob har 75 soldater. Carol har 150.
  • Verken Alice eller Bob kan slå Carol.
  • Imidlertid kan Alice og Bob kombinere Carol.

Problemet var at AI ville gjøre det som ville skille det mest poeng. I det ovennevnte scenariet ville Alice angripe Bob: på kort sikt er et utmerket trekk, men på lang sikt katastrofalt. Ikke bare er Alice å gjøre et trekk som dømmer seg selv, hun fordømmer Bob til visse nederlag også. Bob er forståelig nok opprørt.

Denne typen situasjon er vanskelig å unngå, fordi å se det større bildet krever en komplisert resonnement utover de fleste enkle AI. Vi prøvde å sikre "rettferdighet" ved å gjøre spillere mindre sannsynlig å bli angrepet hvis de mistet, eller hvis de hadde blitt angrepet nylig. Selv om ikke alle spill kan bruke en enkel løsning, er det viktig å innse at spillerne hater å bli angrepet uten tilsynelatende grunn.

Mens Infected 2 aldri gjorde det forbi alfa-scenen, lærte det oss noen verdifulle leksjoner. Viktigst av alt, at det ikke er nok å bare spille mot fiendens bots: du vil være involvert i spillet, utvikle rivalisering og knuse alle de som står imot deg.

AI Ferdig Høyre

For mange år siden ble et spill utgitt som virket hopper og grenser foran konkurransen. Selv om et multiplayer-spill med design, var botsene gode nok til at det kunne nytes singleplayer. Og selv om det i dagens standard er dårlig, har dette spillet-uvirkelige turneringen hatt AI som blåste andre spill ut i vannet.

Vi kan se på et skjermbilde i spillet for å se noe av det som gikk inn på å lage en bot:

Bot 19, aka Tamerlane.

Ferdighet var den viktigste faktoren for å bestemme botadferd: nybegynnerbots var sakte, måtte stå stille for å skyte, og var sakte å vende seg om, mens høyere nivåbots var raskere, kunne smette unna, hadde et større synsfelt og kunne bruke avansert våpen combo teknikker.

Bots kunne deretter bli videre modifisert med nøyaktighet, våkenhet, camping og strafing nivåer. "Personlighet" vil bli bestemt av kampstil og favorittvåpen, og avgjøre om boten likte å komme seg nær og personlig, eller prøv å snipe fra avstand. Bots ville også taunt spilleren og søke hevn. Hver av de 32 roboten kan tilpasses individuelt, noe som betyr at du kan ha 32 forskjellige personligheter. Visse bots, som Loque, ble beryktet blant spillerne.

Alle disse faktorene bidro til å lage bots som følte mer menneskelig. Mens spillet fortsatt vil være bra uten denne raffinement, legger det til et ekstra, nesten umerkelig lag med moro.

Konklusjon

På slutten av dagen må du spørre: Hva vil du ha fra din AI? Finner fiender uhøflig spilleren og går først i pits, eller prøver du å utvikle noe mer, noe som gir et mer personlig nivå av samspill med spilleren? Uansett hva du bestemmer, husk tre hovedpunkter:

  • Hvis bots gjør feil, så føler de seg mer menneskelige, og mindre som en "pakke med kort".
  • Hvis de forsettlig lager spill basert på individuell personlighet (eller følelser, som hevn), er det mer sannsynlig at uforutsigbar og spennende spilling kommer frem.
  • Hvis bots prøver å spille smart, snarere enn kortsiktig, er de mer sannsynlig å gjøre spillet rettferdig mot øynene våre.

referanser

  • Forhåndsvis bilde: Ghost av Andres Flores fra Noun Project
  • Forhåndsvis bilde: Pacman av Andres Flores fra Noun-prosjektet
  • Alice in Wonderland illustrasjon: Av John Tenniel, i det offentlige området