Gå til hovedindhold
Version2 it for professionelle
Forsiden

Hovedmenu

  • It-nyheder
  • Blogs
  • It-job
  • It-firmaer
  • Whitepapers
  • Opret bruger
  • Log ind
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?
Se kommentarer (9)
Emner Spiludvikling

Design din AI med Behaviour Trees

Af Anders Tankred Holm 19. oktober 2012 kl. 12:00

En af mine store interesseområder indenfor spiludvikling er kunstig intelligens (AI). Der findes mange teknikker og modeller til at designe et spils AI, men det vigtigste er at man bruger en model som er skalerbar og er nem at editere og designe gennem et udviklingsforløb.

Behaviour Trees er en forholdsvis ”ny” model brugt indenfor kunstig intelligens, men er blevet yderst populær i spilproduktioner hvor bl.a. spil som Halo serien har benyttet sig af den. Modellen er lavet for at gøre det nemmere for AI designeren og programmørerne at arbejde sammen, ved at give et nemt og overskueligt abstraktionslag over spillets AI. Behaviour Trees benytter sig af en overskuelig grafik repræsentation over agenternes opførsel, vha. en træstruktur med et simpelt sæt af knuder tilgængelig. Designeren kender spillet og de overordnede mål og egenskaber for agenterne, og det er derfor muligt for ham at sætte det overordnede design. Programmørens opgave er at kode den rent faktiske implementering af agenternes opførsel.

Træet har en rod knude som altid er udgangspunkt for en agent, og designeren har mulighed for at tilføje en række undertræer til den knude. Hvert undertræ kan ses som en mulig opførsel for en agent, og fordi ingen af knuderne i træet har afhængigheder imellem sig kan undertræer/opførsler genbruges. Et sådan træ er konstrueret og tilknyttet for hver AI type i spillet og traverseres konstant, så længe træet er den ønskede opførsel for agenten – en agent kan have flere træer. Rod knuden er altid start punkt og træet traverseres igennem knuderne til den har fundet vej til en action knude (som altid er blad knude). Når den fundne action er udført så traverseres træet igen. Der er fire knuder som er tilgængelige for designeren: decorators, sequences, selectors og actions.

Actions

Action knuderne er bladene for træet, og de indeholder den rent faktisk implementering af agentens opførsel. En action kunne være at gå fra et punkt til et andet i verdenen. En action bør når det er muligt kodes generelt, så en designer kan genbruge actions til flere opførsler. Når en action er udført traverseres træet forfra.

Selectors

Denne knude kan have et eller flere børn, og indeholder den rent faktiske beslutningstagning for et Behaviour Tree. Målet for en selector knuden er at vælge en af sine børn som skal eksekveres. Det er muligt at skrive sin helt egen algoritme for dette, men en af de mest brugte og simple er sandsynlighed. Her vægter designeren børnene, og selectoren vælger en af dem tilfældigt baseret på vægtningen.

Sequence

Denne knude kan også have et eller flere børn, og bliver brugt når et sæt knuder har afhængig af hinanden. Sequence knuden vil først vælge sit første barn, og hvis dens action knude har udført sin action succesfuldt, så vil sequence knuden tage det næste barn i rækken. Et eksempel kunne være en agent der skal tage fjendens flag. Den opførsel kan deles op i actions hvor agenten først først skal; finde flaget, gå hen til det og til sidst samle det op.

Decorators

Den sidste knude kan indsættes imellem knuder for at tilføje funktionalitet til en generel action, eller den kan fungere som et filter. Det kan f.eks. bruges til at tjekke om fjendens flag allerede er taget før agenten forsøger at finde det.

Jeg vil som i mit forrige blog indlæg klart anbefale at man udvikler et værktøj til netop sådan en model. Vi har udviklet et værktøj til Unity motoren som gør det muligt at tegne og designe Behaviour Trees. Her er et eksempel på et træ fra et projekt vi er ved at afslutte ved Unity Studios.

Dette træ indeholder en passagers opførslen på et skib, når han er i normal tilstand – vi skifter til et andet træ når der startes alarm på skibet. I træet har vi fire overordnede opførsler: gå til kahyt, toilet besøg, idle og gå tilfældigt rundt. Det hele styres af en selector hvor vi har vægtet sandsynligheden for de forskellige opførsler. Hver overordnede opførsel indeholde flere actions som styres af en sequence knude. Vi benytter os også af en decorator som tjekker for at passageren har en kahyt og kan huske hvor den er, før vi forsøger at finde den i verdenen og gå hen til den.

Der er selvfølgelig meget mere at fortælle om Behaviour Trees, alt for meget til et blog indlæg, så skriv endelig i kommentar feltet hvis i har spørgsmål.

Send Tweet
Udskriv
Billede af Anders Tankred HolmOm Anders Tankred Holm

Anders er teknisk forretningsudvikler hos virksomheden Unity Studios, som udvikler spil og 3D applikationer. Han blogger om de tekniske udfordringer man møder i en spilproduktion, samt kommentere på nyheder og nye teknikker der mødes i den unge branche.

Follow @atholm

Kommentarer (9)

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Palle Pallesen 19. okt. 2012 - 13.39
 
Oversættelse af node

Jeg er ked af at tage pedantikerens (EDIT: som så vist hedder pedantens :)) rolle, men kan vi ikke blive enige om at det engelske ord node i denne sammenhæng (grafteori) bør oversættes til knude?

  • Stem op 2
  • Stem ned 4
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Anders Tankred Holms billede
Anders Tankred Holm 19. okt. 2012 - 13.48
 
Re: Oversættelse af node

Tak for rettelsen og helt korrekt.
Efter at have brugt de engelske termer kan det være vanskeligt at huske de danske :-)

  • Stem op 1
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Peter Lind 19. okt. 2012 - 13.49
 
Re: Oversættelse af node

Kan vi ikke blive enige om at denne type emner har et sprog der er meget forskelligt fra det normale danske, og at det engelske låne-ord "node" bedre beskriver hvad der er tale om end det danske "knude" der enten leder tankerne hen på spejdere eller sygdom?

  • Stem op 4
  • Stem ned 3
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Palle Pallesen 19. okt. 2012 - 14.17
 
Re: Oversættelse af node

Kan vi ikke blive enige om at denne type emner har et sprog der er meget forskelligt fra det normale danske, og at det engelske låne-ord "node" bedre beskriver hvad der er tale om end det danske "knude" der enten leder tankerne hen på spejdere eller sygdom?


Én ting er jo lægmands fortolkning, en helt anden er etableret fagterminologi, se f.eks. Den Store Danske
EDIT: Det er eftersigende en god idé at gennemse sine referencer før man benytter dem, kan se Den Store Danske ikke er enig i mine definitioner, så lad mig i stedet henvise til denne introduktion til grafteori

  • Stem op 1
  • Stem ned 3
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Peter Lind 20. okt. 2012 - 00.34
 
Re: Oversættelse af node

Right ... så når definitionen ikke lige passer ind i dit kram kan du bare vælge en anden og så fremhæve den som autoritet?

Det være hvad det er: artiklen blev skrevet så den gav mening for forfatteren. Jeg forstod uden videre hvad der mentes. Du har tilsyneladende også forstået det. Var det ikke en ide at forholde dig til indholdet i stedet? Det ville i det mindste bidrage med noget værdi.

  • Stem op 3
  • Stem ned 1
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Mark Ruvald Pedersens billede
Mark Ruvald Pedersen 20. okt. 2012 - 00.47
 
Re: Oversættelse af node

Jeg giver Peter ret; vi skal måske udvidde konceptet om grammar-nazis (grammatiknazister på dansk, så alle kan følge med) til pedant-trolls (pedanttrolle på dansk). Ja, jeg er sikker på at de danske oversættelser giver meget mere mening i et felt gennemsyret af engelsk terminologi...

Palles kommentar har måske en berettigelse hvis der var tale om en dansk publikation.

  • Stem op 1
  • Stem ned 1
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Thomas Knudsen 20. okt. 2012 - 15.43
 
Re: Oversættelse af node

Right ... så når definitionen ikke lige passer ind i dit kram kan du bare vælge en anden og så fremhæve den som autoritet?

Den artikel i "Den Store Danske" Palle refererer til benytter heller ikke engelske fagudtryk, men derimod ordene "punkter" og "kanter" - en sprogbrug jeg godt kan forestille mig skyldes at artiklen har været en tur gennem encyklopædiens helt egen begrebstrolltjeneste (for nu at følge Marks sprogbrug).

Knuder og kanter er de almindeligt brugte danske begreber i grafteori. Muligvis benytter Bjarne Toft (der skrev artiklen på DSD) punkter for knuder, muligvis er der tale om en redaktionel tilretning, muligvis simpelthen et forsøg på at udelade fagudtryk i en tekst rettet til den almene læser.

Det er der ikke noget galt i: det er en fornuftig måde at formidle et (for nogen) kompliceret stof.

Hvis man ikke kan undgå fagudtryk skal man have en særdeles god grund til at vælge udenlandske versioner, når der (som her) findes en veletableret dansk sprogtradition inden for området. Og den særdeles gode grund findes ikke her. Peters argument:

det engelske låne-ord "node" bedre beskriver hvad der er tale om end det danske "knude" der enten leder tankerne hen på spejdere eller sygdom?

holder kun for mennesker der er så tonedøve at ordet "node" er tømt for musikalsk indhold. For alle os andre er "node" ikke nødvendigvis mere entydigt end det danske "knude". Entydigheden kommer fra sammenhængen - og i tilfælde som her, hvor Anders skriver om grafteori, så er der ikke tvivl om hvordan ordet "knude" skal forstås.

Danmark er et lille sprogområde, men ikke så lille at vi ikke kan have en levende sproglig tradition inden for mange faglige områder.

  • Stem op 1
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Mikael Kristensen 21. okt. 2012 - 12.22
 
Det er en fin introduktion

Det er en fin introduktion til behaviour trees. Er det et værktøj, som bliver tilgængeligt i Unity App store?

Jeg har et spørgsmål: Hvor udbredt er det at benytte agentens tidligere erfaring i spilscenen i den aktuelle spilscene, når vi snakker behaviour trees? Jeg tænker på, om man har eksempler på, at agenterne "trænes" på forhånd, så de kan vælge handling i den aktuelle situation ikke kun ud fra behaviour tree, men også med henblik på situationen set i forhold til tidligere erfaringer?

  • Stem op 1
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer
Simon Shines billede
Simon Shine 22. okt. 2012 - 02.55
 
Fagtermer og tilstandsmaskiner

Jeg synes at jeres diskussion om fagtermer afsporer blogindlæggets opfordring til at snakke om datastrukturer. "Knude" er helt normalt hvis du diskuterer grafer med matematikere eller dataloger, og det er ikke spor elitært eller gammeldags at bruge danske ord -- det er derimod praktisk, så man ikke skal omstille sin tunge mindst en gang per sætning til at udtale et engelsk ord.

Behaviour Trees: De virker rigtigt smarte fordi simple adfærdsmønstre kan være relativt uafhængige af hinanden og højest opdaterer enkelte variable. Når et adfærdstræ traverseres igen og igen, er det ækvivalent til en tilstandsmaskine med cykliske ruter. Men selv hvis de blev oversat til cykliske grafer, giver det stadig god mening at definere dem som træer.

Har du nogen andre eksempler på sjove adfærde? Billedet viser, så vidt jeg tolker, en statist på en færge. Hvad hvis man forhindrer ham i at gå på toilettet ved at stå i vejen?

  • Stem op 1
  • Stem ned 0
  • anmeld
  • Log ind eller opret en konto for at skrive kommentarer

Tilføj kommentar

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Log ind herunder eller opret en bruger for at skrive kommentarer
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?

Seneste nyt

Teenager står frem: Derfor hackede jeg Version2

Udgivet 17. maj 16.40Opdateret 17. maj 16.40

Fredagshumor: Sådan ser indbakkens pestilenser ud i virkeligheden

Udgivet 17. maj 15.00Opdateret 17. maj 15.00

New Zealand dropper softwarepatenter

Udgivet 17. maj 14.09Opdateret 17. maj 14.09

Microsoft gemmer udspekuleret jobanonnce på Bing

Udgivet 17. maj 11.35Opdateret 17. maj 11.35

Ny wifi-standard med gigabit-hastighed er en gave til it-chefen

Udgivet 17. maj 10.54Opdateret 17. maj 10.54

Flere it-nyheder »

Tilmeld dig Version2's it-nyhedsbrev og vind den nye iPad.

Seneste debat

  1. Teenager står frem: Derfor hackede jeg Version2

    36 comments.
    Last update 3 timer 2 minutter
    Skrevet af Carsten Svendsen
  2. New Zealand dropper softwarepatenter

    7 comments.
    Last update 6 timer 52 sekunder
    Skrevet af Hans Schou
  3. Konkurrence til Raspberry Pi: Ny linux-minicomputer til 260 kroner

    67 comments.
    Last update 12 timer 21 minutter
    Skrevet af Peter Hansen
  4. Retten er sat: Kusine stævner fætter om familiedomænet

    33 comments.
    Last update 1 dag 11 timer
    Skrevet af Jesper Lund
  5. CPR.dk affejer hacker-video på Youtube som uinteressant: "Vi er sikre nok"

    10 comments.
    Last update 1 dag 15 timer
    Skrevet af Hans-Michael Varbæk
  6. Microsofts talknusere: Danmark vinder Melodi Grand Prix

    9 comments.
    Last update 1 dag 16 timer
    Skrevet af Jacob Smedegård
  7. Hackere på Version2

    14 comments.
    Last update 1 dag 16 timer
    Skrevet af Hans-Michael Varbæk
  8. Hvorfor blev min disk fyldt op?

    20 comments.
    Last update 1 dag 18 timer
    Skrevet af Peter Toft

Mere debat »

It-virksomheder

TOPdesk Danmark
|
Biwise
|
EVRY Danmark A/S
|
Cbrain
|
Raxco Scandinavia
|
Twins Consulting
|
BEC
|
Dubex
|
IT Company
|
Webitall
|
Fleron Solutions
|
solvo it
 

Information

  • Kontakt redaktionen
  • Job- og annoncesalg
  • Teknisk support
  • Om Version2
  • Brugerbetingelser
  • Cookie- & privatlivspolitik

Aktuelle emner

  • Agil udvikling
  • Business Intelligence
  • Cloud computing
  • Intranet
  • It-sikkerhed
  • NemID
  • Open source CMS
  • Projektledelse
  • Scrum
  • Sharepoint intranet
  • Storage
  • Ubuntu
  • Virtualisering
  • Windows 8
  • Windows Server 2012
  • iOS 6
  • iPhone 5

Tjenester

  • iPhone-app
  • RSS-feeds
Følg @version2dk
Tilmeld dig Version2's it-nyhedsbrev og vind den nye iPad.

Version2 udgives af

  • Mediehuset Ingeniøren A/S work Trekronergade 26 2500 Valby
  • Tlf. work 33265300