160 likes | 443 Views
“Analiza i implementacja wybranych algorytmów sztucznej inteligencji w grze komputerowej” wykonał Jarosław Orski promotor pracy: mgr Szymon Smaga. Agenda. Cele pracy Założenia gry, wymagania dla AI Wybrane algorytmy i ich warianty A*, metody podziału przestrzeni poszukiwań FSM i NFA
E N D
“Analiza i implementacja wybranych algorytmów sztucznej inteligencji w grze komputerowej” wykonał Jarosław Orski promotor pracy: mgr Szymon Smaga
Agenda • Cele pracy • Założenia gry, wymagania dla AI • Wybrane algorytmy i ich warianty • A*, metody podziału przestrzeni poszukiwań • FSM i NFA • Implementacja • Engine graficzny • Implementacja algorytmów • Możliwy rozwój projektu • Prezentacja aplikacji
Cele Pracy • Zbadanie i zaimplementowanie wybranych algorytmów AI w grze komputerowej • Zbadanie współpracy platformy .NET i języka C# z otwartą bilblioteką OpenGL (Tao) • Zbadanie wydajności C# jako narzędzia do tworzenia trójwymiarowych gier komputerowych
Założenia gry • Pojedynek dwóch czołgów na wirtualnym polu walki • Każdy posiada pewną prędkość poruszania się, ostrzału i poziom energii • Trafienie przeciwnika zmniejsza poziom energii • Jej poziom można odnowić wracając do bazy własnej • W sytuacji awarynej można użyć dopalacza • Zwycięża czołg, który pozbawi przeciwnika całej energii
Wymagania dla AI • Poruszanie się po planszy gry • Omijanie przeszkód • Możliwość badania otoczenia • Reakcja na zmianę warunków • Podejmowanie decyzji na podstawie odbieranych sygnałówWybrane algorytmy: A*, FSM
Wybrane algorytmy: A* • Popularny algorytm wyszukiwania ścieżki • Przeszukuje przestrzeń stanów i wybiera optymalny z uwagi na koszt ruchu • Koszt całkowity = koszt dotychczasowy + estymacja kosztu do celu • Szybkość działania, wybór stanu sąsiedniego, estymacja kosztu docelowego zależą od sposobu podziału przestrzeni
A*: siatka prostokątna • Obszar gry podzielony równomiernie w kierunku x i y • Sąsiad = węzeł o indeksie różnym o 1 • Estymacja kosztu do celu metodą Manhattan + Naturalność podziału + Łatwość analizy i wykrywania błędów - Liczne stany nadmiarowe - Trudność doboru rozmiaru siatki - Konieczność oznaczenia stanów zabronionych
A*: punkty widoczności • Węzły wyznaczone przez wypukłe wierzchołki przeszkód (+ margines na obrót obiektu) • Sąsiad wyznaczony przez linię widoczności • Estymacja kosztu docelowego przez różnicę współrzędnych + Zmniejszona ilość węzłów, krótszy czas przeszukiwania + Niezależność od wielkości obiektów - Trudniesze wyznaczenie sąsiednich węzłów - Trudniejsze pozycjonowanie węzłów - Trudniejsza analiza
Automat skończony • Dokładniej: Automat o skończonej liczbie stanów • Algorytm podejmowania decyzji na podstawie dostępnych informacji • Zmiana stanu obiketu na podstwie docierającego sygnału i bieżącego stanu
FSM – automat deterministyczny • Stałe przejście na podstawie danego sygnału + Zwarty zapis (w postaci tablicy) + Duża szybkość - Przewidywalność “zachowań” - Mała elastyczność (brak mechanizmów uczenia się)
NFA – automat niedeterministyczny • Z danym sygnałem związane drzewo przejść • Wybór danej gąłęzi losowy +Nieprzewidywalność “zachowań” - Złożony zapis - Trudniejsza analiza
Implementacja • Silnik graficzny: • Oparty na OpenGL (Tao) i C# • Ładowanie modeli w formacie 3DS • Prosty system cząsteczkowy • Podstawowy pomiar wydajności: fps • Możliwość modyfikacji niektórych parametrów renderingu (przezroczystość, oświetlenie) w trakcie pracy aplikacji • Detekcja kolizji • Oparta na OBB
Implementacja AI • Podsystem AI • Możliwość wyboru trybu pracy (wariantu) zaimplementowanych algorytmów • Wizualizacja pracy • Sygnały przekazywane z wykorzystaniem mechanizmu zdarzeń
Sharp Tankz • W pełni obiektowa (C#) • Główne klasy: • SharpGLEngine – silnik graficzny • SharpAIEngine – implementacja AI • Agent – obiekt widoczny na ekranie
Podsumowanie • Cele osiągnięto • A* jest skutecznym algorytmem w zadanych warunkach • prawidłowo wyznacza optymalną drogę • duża szybkość wyszukiwania (szczególnie dla podziału punktami widoczności) • FSM sprawdzają się w kontroli agenta • szybkość działania, • różnorodnośc zachowań, • nieprzewidywalność (NFA) • C# dobrze współpracuje z OpenGL • wystarczająca wydajność (ok. 200 fps, GF4200) • brak problemów z kompatybilnością
Możliwości rozwoju projektu • Rozwój systemu AI – algorytmy samouczące się (sieci neuronowe) • Rozwój silnika graficznego – uszczegółowienie modeli, opracowanie tekstur, dodatkowe efekty • Rozwój pozostałych podsystemów – dodanie obsługi dźwięku, gra wieloosobowa przez LAN • Prezentacja: Sharp Tankz