Ai in mmo’s (navigation meshes) marijn zwemmer

Click here to load reader

  • date post

    17-Jul-2015
  • Category

    Documents

  • view

    87
  • download

    1

Embed Size (px)

Transcript of Ai in mmo’s (navigation meshes) marijn zwemmer

AI in MMOs

AI in MMOsPathfinding Navigation meshes

Marijn ZwemmerAI in MMOs, specifiek in World of Warcraft. Dit is nog niet de uiteindelijke versie, ik ben van plan om hier en daar nog wat tekst/dias toe te voegen.

Ook zal ik meer code toelichten in de aangegeven link. Daarna zal ik in WoW laten zien hoe de eerder besproken theorie in de praktijk uitpakt.

Bronnen:http://www.ai-blog.net/archives/000152.html - Artikel over unit pathfinding.http://udn.epicgames.com/Three/NavigationMeshReference.html - Constructie van navigation meshes uitgelegd door Epic Games (Unreal Engine).http://www.navpower.com/gdc2006_miles_david_pathplanning.ppt - Een presentatie van David Miled op GDC 2006http://www.lsi.upc.edu/~npelechano/Oliva_MIG2011.pdfhttp://arcemu.org De gebruikte WoW emulator om navigation mesh in de praktijk te laten zien. World of Warcraft Game wordt gebruikt als voorbeeld.1Over..Introductie waypoints en navigation meshesWaypoints vs. Navigation meshesDe constructie van een navigation meshWerking van een navigation meshIn de praktijk2Waypoints3

http://vidyalife.blogspot.nl/2012/01/nostalgia-sunday-rollercoaster-tycoon.html - Bewerkt

Roller Coaster Tycoon is een perfect voorbeeld van een waypoints systeem. Ook al is er een groot plein zullen de bezoekers alsnog in dezelfde paden lopen, van tile tot tile.4

Hier wordt een waypoint structuur aangegeven, zoals te zien zijn er veel nodes die kris-kras over de wereld lopen. Mogelijkheid: smoothing, maar brengt extra problemen.5Navigation meshes

Hier is een navigation mesh te zien bestaande uit meerdere verbonden nodes.7

Een voorbeeld van een navigation map in de stad Dalaran in WoW.8Waypoints vs. Navigation meshes

--- = Waypoints--- = Navigation MeshWaypoints zijn statischer, een navigation mesh kan smoothen zonder risicos. Dit gebeurt door simpelweg de nodes te bekijken en daartussen het optimale (en realitische) bepalen.10WaypointsNavigation Mesh

Waypoints zijn kris-kras, met een navigation mesh is er praktisch altijd de snelste route. Dit introduceert problemen, aangegeven in de volgende dia.11Catmull-Rom spline

http://en.wikipedia.org/wiki/Cubic_Hermite_spline#Catmull.E2.80.93Rom_spline Uitleg Catmull-Rom spline

Een mogelijk oplossing tot het zigzaggen is door de paden te smoothen. D.m.v. bijv. een Catmull-Rom spline kan er worden gesmooth tussen de waypoints, dit introduceert problemen als bijv. de mogelijkheid tot het vallen in een rivier.12

WaypointsNavigation MeshEen navigation mesh kan m.b.v. raycasting in de LoS obstakels aan zien komen en daarop het path aanpassen.13

WaypointsNavigation MeshBij verschillende groottes van units kan de radius van de unit als afstand tussen de mesh node en unit worden aangehouden. In het geval van waypoints zou er voor elk type unit een verschillend waypoint-netwerk gemaakt moeten worden. 14Constructie navigation mesh

1: Exploratie2: Mesh simplificatie3: Mesh finalisatieDe eerste mesh wordt gemaakt m.b.v. het ophalen van vlakken m.b.v. raycasts. Hierdoor ontstaat een groot (nog niet geoptimaliseerd) grid.161: Exploratie2: Mesh simplificatie3: Mesh finalisatie

Door een vooraf ingestelde stap-afstand kan het zijn dat er mogelijk en grote afstand ontstaat tussen zijvlakken en bijvoorbeeld muren. Door een steeds kleinere stap-afstand te gebruiken kan er alsnog een nauwkeurige mesh ontstaan.171: Exploratie2: Mesh simplificatie3: Mesh finalisatie

Alle vierkanten worden dan zoveel mogelijk gemerged, als doel zo groot mogelijke vlakkken te genereren. Vooral bij grote open gebieden scheelt dit enorm.181: Exploratie2: Mesh simplificatie3: Mesh finalisatie

De tweede simplificatie stap is het mergen van polypunten die vlak bij elkaar liggen, herhalende structuren zoals trappen zijn dan nog niet versimpeld.191: Exploratie2: Mesh simplificatie3: Mesh finalisatie

Hier is te zien hoe trappen zijn gesmooth, dit maakt voor de pathfinding uiteindelijk niet uit.201: Exploratie2: Mesh simplificatie3: Mesh finalisatie

Uiteindelijk worden van alle vierkanten polygons gemaakt om het aantal nodes te verminderen. Het is nu goed te zien dat nodes eigenlijk alleen onstaan bij hoeken van objecten/muren.21Verdere mogelijkheden

In veel games zijn waypoints nog steeds nodig (bij bijv. patrols), dit is nog steeds mogelijk door punten globaler aan te geven waarin de unit dan zelf een pad vind. Ook andere AI events kunnen worden geplaatst binnen de navigation mesh, de unit kan hierin dan zijn eigen pad aanmaken.23

Er is eerder een oplossing opgenoemd voor dynamische obstakels, namelijk het gebruik van raycasts. Dit kan echter inefficint worden, vooral bij meerdere units.

Een mogelijk betere oplossing is het splitten van de meshes om het obstacle heen, deze worden dan vermeervoudigd. Daarna kan in het bestaande systeem alsnog het pad worden berekend.24Werking van een navigation meshNext Corner

Units gebruiken de navigation mesh via de next corner methodiek. Er wordt gekeken naar de eerstvolgende collision met een hoek, waar hij dan heen stuurt.26

Hierbij een realistisch voorbeeld van een eerste hoek, in de volgende dias wordt uitgelegd hoe er aan deze hoek wordt gekomen.27

Er zijn een soort van portals tussen de gebieden, deze worden o.a. gebruikt om de eerstvolgende hoek te ontdekken.28

Iteratie 1: Links29

Iteratie 1: Rechts

30

Iteratie 1: Finished31

Iteratie 2: Links32

Iteratie 2: Rechts33

Iteratie 2: Finished34

Iteratie drie: Links35

De iteratie is afgelopen, de eerstvolgende hoek is ontdekt.36In de praktijkHier start ik twee keer een WoW emulator waar ik op beide n keer inlog, eentje met navigation meshes enabled, de ander disabled. Hierbij laat ik ook de performance en het geheugen zien, en hoe enemies in beide emulaties reageren op de gespeelde character.37?38