Wyślij zapytanie Dołącz do Sii

Sztuczna inteligencja (ang. Artificial Intelligence, AI) jest obecna w większości gier komputerowych. Swój początek zawdzięcza Alanowi Mathisonowi Turingowi. Matematyk, przez zastosowanie algorytmów sztucznej inteligencji, przyczynił się do powstania gry, w której jeden z graczy miał zostać zastąpiony komputerem.
Zasady gry opierają się na zadawaniu pytań – teście, który został nazwany testem Turinga (Ryc. 1). Jeżeli po serii pytań gracz nie będzie pewien, czy rozmawiał z osobą, czy z maszyną, test uznawany jest za pozytywny. Komputer wykorzystuje zachowanie naturalne człowieka, przejmowanie emocji oraz cech, aby wygrać.

Test Turinga
Ryc. 1 Test Turinga

Sztuczna inteligencja kojarzy się ze skomplikowaniem i zawiłościami, lecz zaobserwowanie podobieństw w grach pokazuje, że jest realizowana tymi samymi metodami.

W artykule zaprezentowałem popularne mechanizmy oraz algorytmy, jakie są obecne wśród niezliczonej ilości gier wykorzystujących AI. W szczególności opisałem te, które wykorzystałem sam w hobbystycznym projekcie gry RPG (ang. Role-Playing Game).

Techniki podejmowania decyzji

Najbardziej znaną metodą dotyczącą sztucznej inteligencji w grach komputerowych jest system podejmowania decyzji. Do wykorzystania tej techniki dochodzi w momencie, gdy agent miałby w konkretny sposób zareagować na zachowanie gracza. Agentem nazywany jest komputerowy przeciwnik, czyli każdy obiekt zdolny do podejmowania decyzji, odczuwania bodźców z otoczenia, czy posiadający odruchy naturalne człowieka.

W trakcie gry można spotkać różne postaci, stworzenia lub wrogów, którzy mogą nas zobaczyć czy zaatakować. Wszyscy kwalifikują się do grupy agentów. Przykładem może być mieszkaniec wioski przemierzający rynek czy zwierzę biegające po świecie gry. Agenci, oprócz zauważenia czy ataku gracza, analizują także większą ilość danych, zanim podejmą decyzję.

W przypadku gier typu RPG mogą to być takie elementy jak:

  • pole widzenia przeciwnika,
  • decyzja o rozpoczęciu pościgu,
  • możliwość najlepszego ukrycia przed graczem w razie ucieczki.

W grach sportowych, na przykład o tematyce piłki nożnej, do decyzji podejmowanej przez AI należy:

  • ocena sytuacji na boisku,
  • umiejętne podania piłkarzy prowadzące do zdobycia gola i późniejszego zwycięstwa.

Znajdowanie ścieżki

Mechanizm szukania ścieżek (ang. Pathfinding) jest jedną z ważniejszych funkcji w grach. Algorytmy sztucznej inteligencji służą do przeanalizowania terenu pod kątem krzywizn, obiektów znajdujących się z agentami na scenie, a także rozbudowanej szaty graficznej z elementami dekoracyjnymi.

Wszelkie części podłoża stanowią niemałe wyzwanie dla pathfindingu, dlatego poruszanie postaci powinno być przemyślane. Najczęściej wykorzystywanymi algorytmami są algorytmy heurystyczne, czyli optymalizacyjne. Przykładem jest algorytm A* (ang. A-Star), który wyszukuje ścieżkę pomiędzy dwoma punktami w sieci węzłów. Droga będzie zawsze optymalna, jeżeli istnieje możliwość jej wyznaczenia. Argumentem przemawiającym za używaniem algorytmu A* jest fakt, iż doskonale wykorzystuje on heurystykę przy testowaniu mniejszej liczby węzłów (punktów, między którymi porusza się postać).

W mojej implementacji wykorzystałem ten algorytm do poruszania się NPC (ang. Non-playable character) w świecie gry. Przykładowo – postać rolnika, który pracuje przy zbieraniu plonów, ma ściśle określoną sieć węzłów, miedzy którymi może się poruszać. Rolnik podąża do pierwszego punktu, wykonuje animację kopania w ziemi, następnie przypisany do agenta skrypt wyszukuje następny węzeł, do którego ma się udać. Sekwencja powtarza się do momentu wyczerpania punktów w sieci, po czym wraca do początku.

W momencie, gdy gracz podejdzie do rolnika to przestanie on wykonywać swoje czynności i zwróci się w jego kierunku. Zachowanie to ma na celu zwrócenie uwagi na gracza i ewentualne rozpoczęcie rozmowy. Oddalenie się spowoduje powrót rolnika do obowiązków.

Maszyny stanów skończonych

Metoda realizacji sztucznej inteligencji w grach komputerowych, która jest stosowana najpowszechniej, znana jest jako Maszyna stanów skończonych (ang. Finite-State Machine) (Ryc. 2). Istnienie tego automatu określają następujące zasady:

  • przejścia między stanami występują po spełnieniu określonych warunków,
  • liczba stanów musi być skończona,
  • automat może być tylko w jednym stanie na raz.
Przykładowa maszyna stanów skończonych
Ryc. 2 Przykładowa maszyna stanów skończonych

Na początku dostarczane są dane wejściowe, na podstawie których wylicza się stan wyjściowy i przechodzi do niego.

Jednym z przykładów maszyny stanów skończonych może być otwieranie drzwi, które mają dwa stany – otwarte i zamknięte. Gracz podchodząc do drzwi, uruchamia wyzwalacz, który otwiera drzwi lub najpierw wyświetla informację, jakim przyciskiem je otworzyć. Należy pamiętać o optymalnym doborze połączeń między stanami, ponieważ zbyt duża ilość warunków do sprawdzenia przez maszynę stanów skończonych może skutkować opóźnieniem w ruchach postaci. Automaty skończone stanowią najprostszą metodę do kreowania AI.

Drzewa decyzyjne

Drzewa decyzyjne to nazwa algorytmów pomagających sztucznej inteligencji w określaniu, czy warto wykonać pewne działanie. Poprzez rozpatrywanie wszelkich możliwości ruchu, obiekt analizuje dane drzewo decyzyjne dla odległości, która jest konieczna i najbardziej optymalna. Wybrane posunięcie jest najkorzystniejsze w stosunku do obecnej pozycji oraz sytuacji. Algorytmy te są najbardziej wydajne w momencie, gdy nie mamy skomplikowanych węzłów, ponieważ posiadanie wielu agentów ze złożonymi drzewami decyzyjnymi może spowodować błędne posunięcie lub zwieszenie gry.

Najłatwiej porównać to do kodu, który posiada wiele zagnieżdżonych instrukcji warunkowych ‘if’.

Sieci Neuronowe

System opierający się na budowie komórek mózgowych, nazywany jest sztuczną siecią neuronową. Jest to zaawansowany sposób na wdrażanie sztucznej inteligencji, która wymaga znajomości logiki rozmytej oraz działania systemu nerwowego. Tworzy to tym samym narzędzie do budowania wysokorozwiniętej AI.

Sieci neuronowe skupiają się na nauce danych podawanych na wstępie (warstwa wejściowa), dostosowaniu ich do aktualnych potrzeb (warstwa ukryta) i ostatecznym podjęciu decyzji (warstwa wyjściowa). Dawniej do rozwiązywania problemu używano jednej ukrytej warstwy dla sieci neuronów. Obecnie stosuje się setki, a nawet tysiące ukrytych warstw w tworzonych sieciach. Zwiększenie liczby warstw ukrytych jest jedną z cech uczenia głębokiego. Dogłębne analizowanie i eksperymentowanie w doborze informacji pozwala na otrzymanie wyniku zbliżonego do ideału.

Sieci neuronowe używa się w wysoce skomplikowanych projektach, które wymagają najbardziej precyzyjnych rezultatów przy zachowaniu wydajności.

Silniki do tworzenia gier

Silnik gier to, w skrócie, zaawansowane narzędzie programistyczne, dzięki któremu tworzenie gier jest o wiele łatwiejsze. Oferuje duży zasób wbudowanych funkcji i mechanizmów, aby przyspieszyć pracę programistów. Silniki gier posiadają kilka zintegrowanych innych silników odpowiedzialnych za poszczególne komponenty. Należą do nich między innymi:

  • silnik do renderowania,
  • silnik dźwiękowy,
  • silnik fizyki.

W Internecie jest kilka darmowych silników do tworzenia gier. Są nimi:

  • Unity,
  • Unreal Engine,
  • CryEngine.

Jednak największe tytuły gier, które wpisały się w pamięć graczy jako wzór do porównywania, w większości przypadków korzystają z własnych silników. Przykładami takich gier są:

  • Wiedźmin (silnik REDengine),
  • Grand Theft Auto (silnik Rockstar Advanced Game Engine – RAGE),
  • Assassin’s Creed (silnik Ubisoft Anvil),
  • Skyrim (silnik Bethesda Creation Engine).

Najnowsza gra od studia Bethesda, czyli Starfield również została stworzona przy użyciu silnika Creation Engine w odświeżonej wersji 2. Jako ciekawostkę mogę dodać, że w niektórych przypadkach twórcy autorskich silników i tak wybierają darmowy Unreal Engine (stworzony przez Epic Games) z powodu jego rozwoju technologicznego i poziomu zaawansowania.

Silniki gier a sztuczna inteligencja

Po przedstawieniu wybranych metod sztucznej inteligencji oraz silników gier warto również wspomnieć o ich wzajemnej integralności.

Mecanim

Jednym z narzędzi wspomagających tworzenie AI na wzór naturalnych zachowań człowieka jest Mecanim. To zaawansowany system przeznaczony do zarządzania animacjami modeli znajdującymi się w grze. Oparty jest na animacji szkieletowej (ang. skeletal animation, rigging), co poprawia jakość odbioru postaci, która ma przypominać istotę żyjącą. Kości, z których składa się dany obiekt, poruszają się wspólnie z uwzględnieniem dziedziczenia. Przykładem jest kość nadgarstka, która poruszy się razem z kością przedramienia czy całego ramienia.

Mecanim doskonale nadaje się do tworzenia maszyn stanów skończonych, które opisałem wcześniej. Niżej znajdziecie screen z moim rozwiązaniem wykorzystującym maszynę stanów skończonych oraz system Mecanim z silnika gier Unity (Ryc. 3). Narzędzia do animacji posiadają konkretne stany, które przechodzą między sobą w zależności od zadanych parametrów.

System Mecanim jako maszyna stanów skończonych
Ryc. 3 System Mecanim jako maszyna stanów skończonych

NavMesh

Innym narzędziem, bardzo przydatnym w procesie kreowania gry wraz ze sztuczną inteligencją, jest NavMesh. To dzięki niemu możliwe jest poruszanie się po terenie oraz zintegrowanie z mechanizmem znajdywania ścieżek. NavMesh automatycznie dzieli stworzony teren na trójkątne elementy, co usprawnia obliczenia pathfindingu.

Poniżej możecie zobaczyć screen z wygenerowaną siatką NavMesh z mojej gry (Ryc. 4). Gracz poruszając się po świecie, doskonale ominie przeszkody oraz agentów w grze. Dodatkowo, NavMesh potrafi rozpoznać wodę, twarde podłoże czy grząski grunt, co podnosi realizm rozgrywki. Przeskakiwanie mniejszych obszarów nastąpi tylko w momencie wykrycia pełnego braku spójności na terenie.

NavMesh wygenerowany w silniku Unity
Ryc. 4 NavMesh wygenerowany w silniku Unity

Podsumowanie

Obecnie w grach komputerowych dużą uwagę poświęca się tematowi sztucznej inteligencji, co wiąże się z podniesieniem jakości odbioru gry przez graczy. W artykule opisałem najpopularniejsze metody powstawania AI w grach oraz to, jak AI jest zintegrowana z silnikami gier na podstawie własnej gry RPG w środowisku Unity.

Dzięki sztucznej inteligencji postacie wiedzą, co należy do ich obowiązków, reagują na gracza, a cała gra sprawia wrażenie tętniącej życiem. Istnieje wiele innych ciekawych zagadnień związanych ze sztuczną inteligencją. Zachęcam Was do zapoznania się z nimi oraz ich wykorzystaniem w różnych gatunkach gier komputerowych.

***

Jeśli ciekawi Cię tematyka sztucznej inteligencji lub chciałbyś dowiedzieć się więcej nt. „Persona – testowanie z wykorzystywaniem technik z gier RPG„, zajrzyj koniecznie na naszego bloga.

4.9/5 ( głosy: 12)
Ocena:
4.9/5 ( głosy: 12)
Autor
Avatar
Emil Grabowski

Swoją przygodę z IT rozpoczął jako programista gier i symulatorów. Zdobył tam cenne doświadczenie w programowaniu oraz pracy z silnikiem gier. Obecnie pracuje w Sii na stanowisku Inżyniera ds. testów i analiz. Prywatnie interesuję się sztuczną inteligencją, grami komputerowymi i planszowymi

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Może Cię również zainteresować

Pokaż więcej artykułów

Bądź na bieżąco

Zasubskrybuj naszego bloga i otrzymuj informacje o najnowszych wpisach.

Otrzymaj ofertę

Jeśli chcesz dowiedzieć się więcej na temat oferty Sii, skontaktuj się z nami.

Wyślij zapytanie Wyślij zapytanie

Natalia Competency Center Director

Get an offer

Dołącz do Sii

Znajdź idealną pracę – zapoznaj się z naszą ofertą rekrutacyjną i aplikuj.

Aplikuj Aplikuj

Paweł Process Owner

Join Sii

ZATWIERDŹ

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?