AI, Navigáció. AI Mesterséges intelligencia – Mesterséges tárgy emberi beavatkozás nélkül tudjon válaszolni a környezet hatásaira (automatizáltság) –

Slides:



Advertisements
Hasonló előadás
TÖMÖRÍTÉS. Fogalma A tömörítés egy olyan eljárás, amelynek segítségével egy fájlból egy kisebb fájl állítható elő. A tömörítési arány függ a fájl típusától,
Advertisements

Szabadtéri rendezvények. A TvMI vonatkozik: OTSZ szerinti szabadtéri rendezvényekre szabadtéri rendezvény: az 1000 főt vagy az 5000 m 2 területet meghaladó,
A szoftver mint komplex rendszer (folyt.) A SunTone módszertan 3 dimenziós osztályozási sémája kifinomultabb osztályozást tesz lehetővé.
Hogyan teljesíthetjük a HpT 13§B követelményeit Egy vállalati Compliance Adatbázis terve Dr Lőrincz István Associator Kft.
Vetésforgó tervezése és kivitelezése. Vetésforgó Vetésterv növényi sorrend kialakításához őszi búza250 ha őszi árpa50 ha lucerna ebből új telepítés 300.
Informatikai rendszerek általános jellemzői 1.Hierarchikus felépítés Rendszer → alrendszer->... → egyedi komponens 2.Az elemi komponensek halmaza absztrakciófüggő.
A vállalatok marketingtevékenysége és a Magyar Marketing Szövetség megítélése Kutatási eredmények az MMSZ részére (2008. július)
EU pályázati programok A szervezet / változások 1.A pályázók adminisztrációs terheinek csökkentése a projektfejlesztési, pályázati szakaszban.
BEST-INVEST Független Biztosításközvetítő Kft.. Összes biztosítási díjbevétel 2004 (600 Mrd Ft)
avagy a háromszög technika
TEROTECHNOLÓGIA Az állóeszközök újratermelési folyamata.
Gazdasági informatika - bevezető
11/2/2017 Horváth Botond, Dunaújvárosi Főiskola, Informatika Biztonság Labor Konzulens Dr. Leitold Ferenc, Hadarics Kálmán “Nemcsak azokkal a sebezhetőségekkel.
A kérdőívek, a kérdőívszerkesztés szabályai
Kerülgetős Verzió: 2.5 Egy egyszerű játék, melyben ki kell kerülni
Pályaválasztási tanácsadás
Összeállította: Horváth Józsefné
Résztvevői létszám Év Létszám Összesen: 2110 Budapest Regionális 456
Áramlástani alapok évfolyam
Komplex természettudomány 9.évfolyam
TÁMOP E-13/1/KONV „A 21. század követelményeinek megfelelő, felsőoktatási sportot érintő differenciált, komplex felsőoktatási szolgáltatások.
Scilab programozás alapjai
A közigazgatással foglalkozó tudományok
videós team Team vezetője: Tariné Péter Judit Tagok:
Adatok importálása, rendezése és szűrése
A KINOVEA mozgáselemző rendszer használata
Kockázat és megbízhatóság
Tömörítés.
SZÁMVITEL.
Algoritmusok és Adatszerkezetek I.
Az Országos Egészségfejlesztési Intézet fejlesztési projektjei az iskolai egészségfejlesztés területén DR. TÖRÖK KRISZTINA.
Szervezetfejlesztés II. előadás
Környezetgazdaságtan 1
A mozgási elektromágneses indukció
Komplex természettudomány 9.évfolyam
Tartalékolás 1.
Az élesség beállítása vagy fókuszálás
Unity.
Közigazgatási alapvizsga a Probono rendszerben
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Teljes visszalépéses elemzés
AZ OKOSHÁZAK BEMUTATÁSA
STRUKTURÁLT SERVEZETEK: funkció, teljesítmény és megbízhatóság
CONTROLLING ÉS TELJESÍTMÉNYMENEDZSMENT DEBRECENI EGYETEM
Tilk Bence Konzulens: Dr. Horváth Gábor
Munkanélküliség.
Csomagoló Üzemi optimalizáló és Szimulációs rendszer
Munkagazdaságtani feladatok
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
Online jegyzőkönyv kitöltési segédlet
Környezeti Kontrolling
Szervezet-fejlesztés
7. Szabály: A mérkőzés időtartama
A Microsoft SharePoint testreszabása Online webhely
Algoritmusok és Adatszerkezetek I.
A szállítási probléma.
I. HELYZETFELMÉRÉSI SZINT FOLYAMATA 3. FEJLESZTÉSI FÁZIS 10. előadás
Foglalkoztatási és Szociális Hivatal
Együtt Nyírbátorért Helyi Közösség
Tesztgenerálás a gyakorlatban Az IntelliTest és ami mögötte van
SQL jogosultság-kezelés
Fraktálok.
Tájékoztató az EPER pályázati folyamatáról
Munkagazdaságtani feladatok
Mesterséges neuronhálók és alkalmazásaik
Áramlástan mérés beszámoló előadás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Mesterséges intelligencia
OpenBoard Kezelő Tananyag közzététele a KRÉTA rendszerben.
Előadás másolata:

AI, Navigáció

AI Mesterséges intelligencia – Mesterséges tárgy emberi beavatkozás nélkül tudjon válaszolni a környezet hatásaira (automatizáltság) – Mesterséges tárgy képeslegyen természetes intelligenciával rendelkező élőlény viselkedéséhez hasonlóan viselkedni – Mesterséges tárgy képes legyen a viselkedését célszerűen megváltoztatni (tanulás)

AI a játékokban AI egy külön ága Más eszközkészlettel dolgozik, mint a tág értelemben vett AI Sőt más területek algoritusait is használhatja (grafika, irányításelmélet, robotika v. általános számítástudomány) Más megkötések, célok jellemzik – Fontos különbségek pl.: Game AI-t néha vissza kell fogni Game AI néha csalhat Gép által irányított karakterek viselkedése Egyszerű formában szabályok és döntések halmaza

TrollHunter A kiindulási alapunk egy egyszerű játék A trollokat a gép irányítja Ismerkedjünk a játékkal!!

TrollController.cs A troll végiglátogatja az összes Paladin-t Ha látótávolságon belül van (20 egység), és nem a háta mögött (120 fokos a látómezeje), akkor megtámadja A támadás abból áll, hogy elindul feléje, ha közel van, akkor sétálva, ha messze, akkor futva Ha támadási távolságon belül ér, üt Ha nem talált magának megfelelő ellenfelet, kiválaszt egyet a “fontos” pontok közül a pályán (3 ilyen pont van), és oda megy

TrollController.cs Egészítsük ki az AI-t hogy válasszon két támadás közül: animator.SetInteger ("AttackType", 0); animator.SetTrigger ("AttackTriggered"); helyett: if(Random.Range(0.0f,1.0f) > 0.5f) animator.SetInteger ("AttackType", 0); else animator.SetInteger ("AttackType", 1); animator.SetTrigger ("AttackTriggered");

Troll AI Az AI bővítése a kód bonyolódásával, elnyúlásával jár Egy idő után áttekinthetetlen lesz Nehéz a logikát átlátni, kezelni Hibákat is könnyebb ejteni Stratégia kell a logika, a szabályok döntések rendszerezéséhez Game AI architektúrák

Egyszerű szabályok halmaza (ez van most) Véges állapotgép (Final State Machine, FSM) Viselkedési fa (Behaviour Tree) Tervező (planner) Neurális hálózat (Neural Network)

Állapotok (lehet valami akció) Állapotátmenetek (feltétel teljesülése esetén állapotváltás) Egyszerre csak egy állapotban lehetünk

Komplikálttá válhat (MecAnim rendszer is ilyen)

Hierarchikus felépítés Komplexebb viselkedést lehet megadni Root-ból kezdjük el a fa kiértékelését Akciók végrehajtása után visszamászunk a root-ba

Cél Több startégia, mellyel elérhetjük a célt A legkönnyebben teljesíthetőt választjuk

Planner

Az agy működését utánozza Neuronok, inputokkal Az inputok adatait súlyozva összeadjuk Ezek egy meghatározott függvénye a kimenet

A neuronokat rétegekbe szervezzük Az output layer kimenete fontos, ez itt mérhető adatok határozzák meg a működés “jóságát” A súlyokat próbálja rendszer megváltoztatni, hogy lehetőleg minden bemenetre jó kimenetet kapjunk Tanuló rendszer, tanítani kell Nehezebben kiszámítható (ez lehet előny, de hátrány is)

Navigáció AI speciális feladata Gyakran felmerülő probléma A-ból B-be kell eljutni Fel kell deríteni az útvonalat Ki kell kerülni az esetleges akadályokat Unity-ben kész rendszer van erre

Navigáció Minimálisan kell hozzá: – Navigation Mesh Maga a környezet Útvonalak felderítésére használjuk Útkereső gráf algoritmus (A* algoritmus) – Navigation Agent Irányítandó karakter Hengerként reprezentált Pozíciója, célpontja, iránya és sebessége van Navigation Mesh-en mozog egy A*-al megtalált legrövidebb útvonalon a célpontja felé (path)

Navigation Mesh Window/Navigation

Navigation Mesh

Navigation Agent Troll prefab kiválasztása Add component/Navigation/Nav Mesh Agent

TrollController.cs public class TrollController : CharacterControlBase { GameObject CurrentTarget = null; NavMeshAgent NavAgent; … protected override void StartImpl() { NavAgent = GetComponent (); } protected override void UpdateImpl() { … Vector3 dir = CurrentTarget.transform.position - transform.position; float angle = Vector3.Angle(dir, transform.forward); float distance = dir.magnitude; /* transform.LookAt (new Vector3(CurrentTarget.transform.position.x,transfor m.position.y,CurrentTarget.transform.position.z)); if (distance > DamageRange * 0.2f) { animator.SetFloat ("forward", Mathf.Lerp (0.0f, 2, Mathf.Min (1.0f, (distance - DamageRange * 0.2f) / (DamageRange * 2.0f)))); } */ NavAgent.destination = CurrentTarget.transform.position;

Próba Az animáció elromlott (majd megjavítjuk) A karakter pozícióját és orientációját a NavMeshAgent komponens frissíti automatikusan A mozgás olyan, mint eddig: megpróbál mindenen áthatolni Finomítsunk a NavMesh-en …

HallElem és Ramp nevű objektumokat válasszuk ki Navigation fülön állítsuk be rajtuk a Navigation Static kapcsolót, Navigation Area legyen walkable Bake

Válasszuk ki az oszlopokat és a falakat Navigation fülön állítsuk be rajtuk a Navigation Static kapcsolót, Navigation Area legyen Not Walkable Bake Próba Határozottan javul a navigáció

Egyszerűsített geometria Az utolsó Bake során már sokat számolt Tudunk könnyíteni rajta, ha komplex geometriáink vannak? Olyan Mesh-t használjuk, ami egyszerűbb, de ezt nem akarjuk megjeleníteni, csak a Bake- hez kell

Van egy kidőlt oszlopunk Ehhez tartozik egy egyszerűsített geometria (téglatest) Nem látszott, mert a Mesh renderer ki volt kapcsolva Kapcsoljuk vissza, állítsuk be: Navigation Static, Walkable Bake Kapcsoljuk újra ki a renderer-t

Agent leugrás A trollok nem mernek utánunk ugrani Szépen biztonságosan körbemennek a rámpán Megadhatunk pontokat, ahol szintet tudnak ugrani a NavMesh-en: OffMeshLink Ezt automatikusan is meg tudja tenni a rendszer: – Generate OffMeshLinks kapcsoló

OffMeshLink Válasszuk ki a rámpákat és HallElem objektumokat Kapcsoljuk be a Generate OffMeshLinks kapcsolót Bake Próba

Animáció javítása: TrollController.cs protected override void StartImpl() { NavAgent = GetComponent (); NavAgent.updatePosition = false; }

Agent pozíció vs GameObject transform A pozíciót nem frissítjük Az agent pozíciója változik Ha le tudjuk kérdezni az agent következő pozícióját (nem a globális célt, hanem a következő lépését): – ezt felhasználhatjuk az animációnkhoz – kézzel szinkronizálhatjuk a GameObject pozícióját Az orientációt bízhatjuk az Agent-re

TrollController.cs NavAgent.destination = CurrentTarget.transform.position; dir = NavAgent.nextPosition - transform.position; dir.y = 0; animator.SetFloat ("forward", dir.magnitude / Time.deltaTime); … void OnAnimatorMove () { transform.position = NavAgent.nextPosition; } Próba A mozgás kb jó, de csak egy sebességgel fut Amikor üt, akkor is csúszik a felületen Jó lenne, ha az animáció mondaná meg, mekkorát lépünk, az Agent csak az irányt

TrollController.cs NavAgent.destination = CurrentTarget.transform.position; dir = NavAgent.nextPosition - transform.position; dir.y = 0; animator.SetFloat ("forward", dir.magnitude / Time.deltaTime); transform.forward = dir.normalized; if (distance > DamageRange * 0.2f) { animator.SetFloat ("forward", Mathf.Lerp (0.0f, 2, Mathf.Min (1.0f, (distance - DamageRange * 0.2f) / (DamageRange * 2.0f)))); } void OnAnimatorMove () { transform.position = animator.rootPosition; NavAgent.nextPosition = transform.position; }

Akadályok Nav Mesh Obstacle Dinamikus objektumokra használjuk Nem szerepel a path kiválasztásakor, lokálisan kerüli ki Be lehet állítani, hogy a NavMeshre is hasson (Carve, költséges lehet) – ha megáll – v. mindig Dobozokra, animált épületelemekre is Próbáljuk ki

VÉGE