• Nie Znaleziono Wyników

Elementy sztucznej inteligencji w grach komputerowych

N/A
N/A
Protected

Academic year: 2021

Share "Elementy sztucznej inteligencji w grach komputerowych"

Copied!
17
0
0

Pełen tekst

(1)

Zastosowania AI

w grach

komputerowych

Opracował mgr inż. Mariusz Kurowski

Projektowanie AI

• Analizowany problem: podejmowanie decyzji przez przeciwnika sterowanego przez komputer

• Jak wybrać który algorytm lepiej nadaje się do modelowania AI w grze komputerowej?

• Sieci neuronowe oraz pozostałe algorytmy uczenia maszynowego są trudne w

projektowaniu i modyfikacji dla zespołu pracującego nad grą, której

mechanika gry może dynamicznie zmieniać się w czasie jej wytwarzania oraz już po wydaniu

• Klasyczne algorytmy, takie jak drzewa zachowań, maszyny stanów lub drzewa decyzyjne są łatwe w implementacji i modyfikacji nawet dla osób, które nie mają dużego doświadczenia w programowaniu

(2)

Projektowanie AI

• Jaki jest cel przy tworzeniu AI?

• AI, która jest tak dobra, że zawsze zwycięża z graczem zwykle nie jest głównym celem zespołu tworzącego grę

• Projektując AI nadrzędnym celem zwykle jest stworzenie przeciwnika,

przeciwko któremu dobrze się gra

• Przeciętna AI nie musi podejmować zawsze optymalnych decyzji, wystarczy, że gra dość dobrze by stanowić wyzwanie oraz nie popełnia ewidentnie

„głupich” decyzji, gdy gracz ją widzi w akcji

(3)

Projektowanie AI

• Do uczenia sieci zespół stojący za OpenAI Five wykorzystał:

• 256 kart graficznych Nvidia Tesla P100 • 128 000 rdzeni CPU

• Podejście oparte o uczenie maszynowe może wymagać posiadania znacznych zasobów sprzętowych

Maszyny stanów

• Aktualny stan definiuje co w danej chwili wykonuje AI

• Zmiana zachowania realizowana na podstawie przejścia pomiędzy stanami

• Czasami konieczne są duplikaty stanów

• Czarna kropka wskazuje stan początkowy

(4)

Hierarchiczne

maszyny stanów

• Stany mogą posiadać wewnętrzne, zagnieżdżone maszyny stanów

• Czarna kropka wyznacza stan początkowy każdej z obecnych maszyn stanów. Dla przykładowej maszyny początkowym stanem jest lista 𝐴, 𝐵 .

Hierarchiczne maszyny stanów (HFSM)

• Stan HFSM jest listą stanów na każdy poziom hierarchii, np. dla maszyny z poprzedniego slajdu 𝐴, 𝐶 .

• Przejścia stanów rozpatrywane są dla każdego poziomu hierarchii z osobna, w kolejności od najwyższego do najniższego.

• Stany są zapamiętywane dla różnych poziomów hierarchii – np. HFSM w stanie 𝐴, 𝐶 pod wpływem ciągu symboli 1 oraz 2 znajdzie się z powrotem w stanie 𝐴, 𝐶 , a nie w stanie 𝐴, 𝐵 (maszyna pamięta, że przed przejściem w stan 𝐷 była w zagnieżdżonym stanie C).

(5)

Hierarchiczne

maszyny stanów

– przykład

Stan + symbole = nowy stan

• 𝐴, 𝐹 + 4, 11 = 𝐵, 𝐻 • 𝐵, 𝐻 + 10, 8 = 𝐴, 𝐷 • 𝐵, 𝐻 + 10, 7 = 𝐴, 𝐹

Drzewa

zachowań

• Liście reprezentują akcje • Pozostałe węzły są węzłami

złożonymi

• Węzły złożone definiują przepływ sterowania • Węzeł po wykonaniu zwraca

status (SUCCESS, FAILURE lub

RUNNING) 9

(6)

Drzewa zachowań

Selektor

– wykonuje potomków w kolejności (od lewej do prawej). Jeśli któryś z potomków zwróci status sukcesu, węzeł również kończy pracę z sukcesem. Jeśli wszystkie zakończą się porażką, selektor kończy ze statusem porażki.

Sekwencja

– wykonuje potomków w kolejności i zwraca sukces, jeśli wszyscy potomkowie zwrócą sukces. Jeśli którykolwiek zwróci

porażkę, sekwencja także kończy pracę ze statusem porażki.

Drzewa zachowań

Węzły złożone mogą posiadać pamięć lub nie. Węzeł z pamięcią pamięta statusy wykonanych poprzednim razem węzłów oraz oznaczony jest przez gwiazdkę *

Węzeł, który nie posiada pamięci, musi zawsze rozpocząć ewaluację potomków od początku

Źródło (podrozdział 1.3): Colledanchise, Michele & Ogren, Petter. (2018). Behavior Trees in Robotics and AI: An Introduction.

10.1201/9780429489105.

(7)

Inne węzły złożone

• Dekorator modyfikuje działanie węzła

potomnego

• Węzeł współbieżny pozwala na wykonywanie wszystkich potomków jednocześnie Poddrzewo wyszukujące przeciwników Poddrzewo odpowiedzialne za atakowanie pobliskich wrogów

Drzewa zachowań

Dekorator wywołuje swojego potomka oraz na podstawie zwróconego statusu, wykonuje dodatkowe działania. Następnie, sam również kończy pracę z odpowiednim statusem.

Najprostszym przykładem dekoratora jest inwerter – zwraca

SUCCESS, jeśli potomek zwraca FAILURE i odwrotnie. Inny rodzaj

dekoratora może np. zawsze zwracać status RUNNING i status

SUCCESS tylko, gdy potomek zwróci status FAILURE.

(8)

Drzewa zachowań

Węzeł współbieżny wykonuje każdy węzeł potomny jednocześnie.

Współbieżność nie jest realizowana sprzętowo (w oddzielnych

wątkach). Zwykły selektor lub sekwencja ewaluuje status swoich węzłów potomnych jeden po drugim. Dla kontrastu, węzeł współbieżny wykona każdego potomka od razu, a później (po wykonaniu każdego) na podstawie statusów, zwróci własny status.

Węzeł może być podobny do selektora i zwrócić sukces, gdy którykolwiek potomek zwraca sukces lub podobny do sekwencji i zwracać sukces, gdy wszyscy potomkowie zwracają sukces.

Różnice w działaniu węzłów dla różnych

implementacji

Ian Millington and John Funge. 2009. Artificial Intelligence for Games, Second Edition (2nd. ed.). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA.

• Autorzy w książce prezentują implementację, w której węzły zwracają tylko 1 z 2 statusów –

sukces lub porażkę (bez statusu „w trakcie”).

(9)

Różnice w działaniu węzłów dla różnych

implementacji

Kurs Stanfordu: CS123 Programming Your Personal Robot (Autumn 2015), wykład 8.

https://web.stanford.edu/class/cs123/lec tures/CS123_lec08_HFSM_BT.pdf

• Węzły zwracają 1 z 4 statusów: sukces, porażka, „w trakcie” oraz błąd

• Selektor nie wykonuje kolejnych węzłów, jeśli któryś potomek zwraca status „w trakcie”

Różnice w działaniu węzłów dla różnych

implementacji

Biblioteka do języka python py_trees

https://py-trees.readthedocs.io/en/devel/compo sites.html#selector

• Jeśli węzeł selektora zwróci status

„w trakcie”, selektor uruchomi

następnego w kolejności potomka • Biblioteka oferuje wariant selektora:

chooser

(10)

Różnice w działaniu węzłów dla różnych

implementacji

Implementacja w Unreal Engine 4: https://docs.unrealengine.com/en-US/Engine/ArtificialIntelligence/Behav iorTrees/BehaviorTreesOverview/inde x.html

• Nie ma węzłów współbieżnych, jak opisanych w poprzednich źródłach, ale jest odpowiednik: węzeł Simple

Parallel

Drzewa zachowań

Istnieje bardzo dużo implementacji drzew zachowań – wszystkie w pewnym stopniu różnią się od siebie nawzajem:

• Unreal Engine 4 https://docs.unrealengine.com/en-US/Engine/ArtificialIntelligence/BehaviorTrees/index.html • Unity 3D (wiele implementacji)

• Behavior Designer https://assetstore.unity.com/packages/tools/visual-scripting/behavior-designer-behavior-trees-for-everyone-15277

• NodeCanvas https://assetstore.unity.com/packages/tools/visual-scripting/nodecanvas-14914

• AI Machine https://assetstore.unity.com/packages/tools/ai/ai-machine-aim-visual-programming-and-ai-122906

• Python py_treeshttps://github.com/splintered-reality/py_trees

(11)

Obiekty blackboard

Obiekty blackboard

Drzewo zachowań (lub jego poddrzewa) mogą mieć ze sobą skojarzone tzw. obiekty blackboard. Węzły mogą następnie zapisywać pod kluczami pewne dane, do których inne węzły mogą się następnie odwoływać, wykorzystując klucz.

Mechanizm ten umożliwia węzłom drzewa na komunikowanie się

między sobą, nawet jeśli są w odległych od siebie miejscach. Należy

jednak mieć na uwadze, że szczegóły działania tego mechanizmu mogą różnić się dla poszczególnych implementacji.

(12)

Drzewa decyzyjne (Black & White)

• W grze Black & White gracz kontroluje bóstwo, które posiada stwora. Stwór może wchodzić w interakcję z ludnością zamieszkującą różne miasta i wioski • Stwór posiada własną osobowość, może

być np. łagodny i dobry dla mieszkańców lub agresywny i okrutny

• Charakter stwora zmienia się na przestrzeni gry w zależności od jego

własnych doświadczeń oraz zachowania gracza

Drzewa decyzyjne

• Różne aspekty zachowania stwora (np. czy zdecyduje się zaatakować wioskę) można modelować za pomocą dynamicznie konstruowanych drzew decyzyjnych

• Gra może zapisywać do tabeli poprzednie doświadczenia stwora dotyczące atakowania wiosek. W ten sposób można np. odnotować, że zwykle atakując wioskę o danym charakterze, stwór odnosił rany oraz przypisać takiemu rekordowi negatywną wagę. W ten sposób, stwór nauczy się omijać takie 23

(13)

Drzewa decyzyjne

Wioska zaatakowana przez stwora

Efekt

Nastawienie Obrona m ę

Przyjazne b Celtyckie –1.0

Wrogie b Celtyckie +0.4

Przyjazne Silna Skandynawskie –1.0

Wrogie Silna Skandynawskie –0.2

Przyjazne Greckie –1.0

Wrogie Greckie +0.2

Wrogie Silna Greckie –0.4

Wrogie Azteckie 0.0 Przyjazne b Azteckie –1.0 b m ę b

• Drzewo decyzyjne automatycznie generowane algorytmem ID3

Źródło: Wexler, James. “Artificial Intelligence in Games : A look at the smarts behind Lionhead Studio ’ s “ Black and White ” and where it can and will go in the future.” .

Reguły decyzyjne (Dragon Age: Origins)

(14)

Reguły decyzyjne (Dragon Age: Origins)

• W grze gracz kontroluje swoją postać oraz drużynę towarzyszy. W danej chwili może jednak sterować jedną postacią.

• Pozostałe postacie mogą podejmować decyzje w oparciu o uporządkowaną listę reguł:

𝑤𝑎𝑟𝑢𝑛𝑒𝑘 → 𝑎𝑘𝑐𝑗𝑎

• System można rozszerzyć o możliwość użycia wielu warunków połączonych spójnikami logicznymi

• Można utworzyć system proponujący graczowi zestaw reguł w oparciu o akcje, jakie wydawał postaciom na przestrzeni gry (zapisywanie rekordów 𝑠𝑡𝑎𝑛 𝑝𝑜𝑠𝑡𝑎𝑐𝑖, 𝑎𝑘𝑐𝑗𝑎 i dynamicznie tworzenie proponowanego zestawu reguł)

Logika rozmyta

• Rozszerzenie arytmetyki logicznej pozwalające na zastosowanie jej nie tylko dla wartości binarnych, ale dla wartości ciągłych

• Można definiować tzw. zbiory rozmyte określone na dziedzinie: np. dla dziedziny punkty_życia_jednostki w zakresie od 0% do 100% można określić zbiory rozmyte ranny oraz zdrowy

• Każdy zbiór posiada funkcję przynależności określoną na dziedzinie, która każdemu jej elementowi przypisuje wartość przynależności od 0 do 1

(15)

Logika rozmyta

Logika rozmyta

• Można zdefiniować zestaw reguł logicznych w postaci:

𝑥1𝑗𝑒𝑠𝑡 𝐴1∧ 𝑥2𝑗𝑒𝑠𝑡 𝐴2∧ ⋯ ∧ 𝑥𝑛𝑗𝑒𝑠𝑡 𝐴𝑛 ⟶ 𝑦 𝑗𝑒𝑠𝑡 𝐵

Gdzie 𝐴𝑖 oznacza zbiór rozmyty, a 𝑥𝑖oraz 𝑦 są wartościami dziedziny

• Przykład:

hurt health ∧ close distance ⟶ 𝑎𝑡𝑡𝑎𝑐𝑘 decision hurt health ∧ far distance ⟶ ignore decision healthy health ∧ far distance ⟶ ignore decision

Reguły połączone są spójnikiem „lub”

(16)

Logika rozmyta

• Można następnie uzyskać wartość dziedziny decision w procesie defuzyfikacji:

Logika rozmyta

• Health = 0.3 • Distance = 0.21 • Relative_dps = 0.21 • Decision = 0.67 31

(17)

Literatura

• Steven Rabin. 2013. Game AI Pro: Collected Wisdom of Game AI Professionals. A. K. Peters, Ltd., USA.(3 tomy)

• Ian Millington and John Funge. 2009. Artificial Intelligence for Games, Second Edition (2nd. ed.). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA.

• Colledanchise, Michele & Ogren, Petter. (2018). Behavior Trees in Robotics and AI: An Introduction. 10.1201/9780429489105.

Dziękuję za uwagę!

Cytaty

Powiązane dokumenty

Ukazało się drugie poszerzone wydanie fraszek autora – FRASZKI WIERSZE. Do nabycia w księgarni,

Innowacje to korzyść dla pacjentów i personelu W systemie ochrony zdrowia zawsze najważniejszy jest człowiek.. To myślenie powinno nam przyświecać w szerokim

Podczas dyskusji „Wizja i praktyka koordynowa- nej opieki zdrowotnej – kontrowersje”, czyli sesji pod patronatem Polskiego Towarzystwa Koordynowanej Ochrony Zdrowia,

Wysocki, dyrektor Narodowego Instytutu Zdrowia Publicznego – PZH, jest nowym konsultantem krajowym w dziedzinie zdrowia publicznego. Nowy konsultant jest lekarzem, profeso- rem

Okazało się jednak, że ta sprawa prawie nikogo nie interesuje, a niektórych wręcz drażni.. Przyczyny sukcesu kardiologii interwencyjnej są proste: nielimitowanie świadczeń

– Taki wielkopol- ski model współpracy między samorządami dba- jącymi o zdrowie pacjentów wart jest naślado- wania – mówi Krzysztof Kuszewski, kierownik Zakładu Organizacji

listopad 9/2008 menedżer zdrowia 7 Zarządzana przez nią placówka nigdy nie miała długów, nawet po przejęciu obarczonego zobowiązaniami Szpitala Powiatowego w Policach..

Ros³on Jaros³aw, Centralny Szpital Kolejowy Samodzielny Publiczny Zak³ad Opieki Zdrowotnej w Warszawie 6.. Sapiñski Andrzej, Samodzielny Publiczny Specjalistyczny Zak³ad