"Żeby wydawało się, że postacie myślą" - wywiad z Mieszkiem Zielińskim, programistą AI

Często mówi się, że przeciwnikami albo postaciami pobocznymi w grach wideo kieruje "sztuczna inteligencja". Ile jest w tym algorytmów, ile iluzji, a ile "prawdziwego myślenia"? Na ten temat rozmawiamy z Mieszkiem Zielińskim, programistą AI w studiu People Can Fly, który pracował między innymi przy znakomitej strzelaninie z poprzedniego roku - "Bulletstorm".

Kiedyś, dawno temu, pewien twórca gier - nie pamiętam już teraz, kto dokładnie - powiedział mi, że kiedy my, dziennikarze albo gracze, narzekamy na sztuczną inteligencję w jakiejś grze, to często nie mamy pojęcia, o czym mówimy. Zgadzasz się z tym?

Mieszko Zieliński: W sumie tak. Przy czym jest to opinia człowieka, który robi AI i czuje się skrzywdzony, kiedy ktoś mówi, że jego AI jest złe, kiedy tak naprawdę tak nie jest, tylko coś akurat źle wygląda. Ale to właśnie różnica między sztuczną inteligencją w grach, a ujęciem akademickim. W grach i tak najważniejsze jest to, co jest na ekranie - często o wiele lepszy efekt uzyskuje się, gdy odgrywa się jakąś fajną animację, niż gdy AI coś sobie myśli, ale postać i tak stoi w miejscu.

Czyli czym właściwie jest to AI w grach?

Ha! - to zależy od gry, od jej rodzaju i gatunku. Ja całe moje AI-owe życie robiłem wszelakie strzelanki, ewentualnie RPG-i - ale to pod tym względem w zasadzie to samo - tam symuluje się przeciwników, robi się w pewnym sensie "żywe istoty". I chodzi o to, żeby były nie tyle realistyczne, co wiarygodne.

A na czym polega różnica?

Gdybyśmy na podstawie wielu badań i statystyk chcieli naprawdę symulować ludzkie życie, to otrzymalibyśmy postaci, w które nikt by nie uwierzył. Ludzie często zachowują się nieprzewidywalnie, niezgodnie z zasadami logiki. W grach natomiast chodzi o "believable characters" - postaci wiarygodne, które zachowują się, jakbyśmy tego od nich oczekiwali. Najważniejsza rzecz: nie mogą łamać iluzji świata. Nie mogą robić niczego, co sprawi, że gracz otrząśnie się ze snu i zda sobie sprawę, że to tylko gra.

Moim zadaniem jako programisty AI jest zapewnienie tego życia. Z biegiem lat nauczyłem się, że tak naprawdę najważniejsze nie jest to, co akurat niesamowitego AI sobie myśli i jak supercwane jest. Istotą jest stworzenie porządnego, niezawodnego systemu, z którego w łatwy sposób mogą korzystać designerzy i wszelkiej maści kreatywni ludzie.

fot. People Can Fly

I jak tworzy się taki system?

Jest kilka różnych poziomów AI, na których się pracuje. Jeden z nich to technologia, która jest niezbędna postaciom do zdobywania informacji o świecie. Jedna z najbardziej podstawowych zasad - i to nie tylko w grach - mówi, że jakość twojej decyzji zależy od tego, jakie dane dostajesz. "Shit comes in, shit comes out ", jak mówi bardzo popularne wśród programistów AI powiedzenie.

Jedną z pierwszych rzeczy, nad którymi się pracuje, jest więc system nawigacji - co absolutnie nie ma nic wspólnego z "myśleniem". Niezbędny jest też system percepcji, który pozwoli AI słyszeć, widzieć, czy mieć tzw. "szósty zmysł". W zależności od gry potrzebne są też różne systemy, które pozwolą AI uzyskać potrzebną wiedzę, jak "czy powinienem lubić gracza" lub "gdzie jest miasto X".

Druga rzecz to algorytmy podejmowania decyzji, na co sposobów są dziesiątki. Choćby zbiór warunków - jeśli przeciwnik jest w jakimś konkretnym miejscu, to coś się dzieje, a jeśli spełniony jest jakiś inny warunek, to dzieje się jeszcze coś innego. Znów: nie ma to nic wspólnego z "myśleniem". Choć oczywiście są też sposoby bardziej skomplikowane, jak "behaviour trees", które są ostatnio bardzo popularne - przykładowo były w Wiedźminie 2, były w "Bulletstorm", są w grach z serii "Hitman" -  bo nawet osoby niebędące programistami są w stanie na nich pracować. Albo HTN - "hierarchical task network" - które napędza system AI w grach z serii "Killzone" wydanych na PlayStation 3. To akurat rozwiązanie akademickie wprowadzone do gry z małymi przeróbkami. Działa trochę od drugiej strony. Najpierw stwierdzasz, co chcesz zrobić - na przykład "gracza trzeba zabić" - a potem planer układa taki ciąg akcji, który ma doprowadzić do tego stanu.

Są jeszcze takie techniki jak klasyczny FSM (automat skończony), GOAP (planer zastosowany w grach serii "F.E.A.R."), "decision trees" czy ulubiona akademicka technika niedoszłych programistów AI, bardzo rzadko stosowana w grach: sieci neuronowe.

Trzecia rzecz, to dane, które definiują zachowanie AI i narzędzia do tworzenia tych danych.

Gdzie w takim razie w tej "sztucznej inteligencji" jest sama inteligencja?

Nie ma jej. To po prostu sprytne systemy i algorytmy, które przetwarzają dane. Mówimy "sztuczna inteligencja", bo - przynajmniej w FPS-ach i RPG-ach - chodzi o to, żeby wydawało się, że postacie myślą. Żeby nie zachowywały się tak, jakby tego nie robiły.

Więcej z AI w rozumieniu akademickim ma natomiast wspólnego AI w grach strategicznych, tam często używa się ciekawej technologii. Ostatnio na przykład furorę robi tak zwany algorytm przeszukiwania drzew metodą Monte Carlo [Monte-Carlo Tree Search - dop. red.]. Ogólnie chodzi o to, że jednym z podstawowych sposobów rozgrywania gier w środowisku akademickim jest "minimax". Najpierw tworzy się drzewo gry - jeśli ja zrobię jedno, to przeciwnik drugie i tak dalej. "Minimax" polega natomiast na tym, że bierze się najlepszy ruch - który maksymalizuje punkty AI - a potem najlepszy ruch przeciwnika - który minimalizuje punkty AI. Takie schematy oczywiście bardzo szybko puchną i na przykład dla szachów nierealne jest zaplanowanie całej partii, więc robi się to jedynie na kilka ruchów do przodu. Natomiast w algorytmie MCTS pierwsze ruchy są liczone, ale głębiej w drzewie gry wybiera się losowe ruchy i tylko te ocenia. Wyniki są na tyle dobre, że system sprawdza się w grach, w których do tej pory ludzie bez problemu wygrywali z komputerem - flagowy przykład to chińska gra Go. Idealnie działa w planszówkach albo strategiach.

W "StarCrafcie"?

No nie. Nie oszukujmy się - to nie jest strategia w tradycyjnym znaczeniu, tutaj najważniejszym czynnikiem jest zarządzanie zasobami, przy czym mówię zarówno o zasobach naturalnych jak i jednostkach czy czasie. To robi się jeszcze w inny sposób. Miałem na myśli gry typu "Europy Universalis". Seria "Total War" również wykorzystuje takie rozwiązania.

fot. People Can Fly

Zmieniając temat - pracujesz w People Can Fly, pracowałeś nad "Bulletstorm". Czym zajmujesz się teraz?

Niedostępnym jeszcze komercyjnie silnikiem Unreal Engine 4. Obecnie pracuję nad systemem nawigacji - to nie jest coś, co do końca uznaję za AI, ale musi być zrobione dobrze, żeby sztuczna inteligencja miała potem odpowiednie warunki do działania.

I ile czasu zajmuje stworzenie takiego systemu?

Nie da się tego tak jasno określić. To proces, który cały czas się toczy. System nawigacji w Unreal Engine 3 rozwijany jest do dziś, a to silnik, który swoją premierę miał w 2006 roku - a prace nad nim trwały nawet dłużej, pierwsze screenshoty prezentowano jeszcze w 2004 roku.

A z czego w historii swojej pracy jesteś najbardziej dumny?

Moim majstersztykiem jest zdecydowanie "Bulletstorm". Tam praktycznie cały system AI zrobiliśmy od zera. Mówię "zrobiliśmy", bo to zadanie oczywiście przekraczające możliwości jednego człowieka - w sensie implementacyjnym - ale projekt był mój i czuję się jego ojcem.

Jak duży był w takim razie zespół, który nad nim pracował?

W People Can Fly jest trzech programistów sztucznej inteligencji. Jestem ja, jest Łukasz Furman, który jest najszybszym programistą, z jakim pracowałem i jest Sebastian Kowalczyk. On z kolei jest mistrzem "tweakowania" AI - ja coś robię i to wygląda w porządku, a gdy on to przerobi, to różnica jest absolutnie drastyczna. Na plus, oczywiście. Ja robię tak, że postać zachowuje się rozsądnie, a on sprawia, że naprawdę zaczyna żyć. No i mamy oczywiście programistę animacji, Jarosława Ciupińskiego, z którym bardzo blisko współpracujemy i bez którego AI w Bulletstormie nie byłoby tym, czym jest, zwłaszcza w kategoriach odbioru wizualnego.

fot. People Can Fly

Na koniec - czy myślisz, że gry będą z czasem zmierzać w stronę bardziej akademicko pojętego AI? Czy doczekamy się kiedyś momentu, kiedy o postaciach w grach będzie można powiedzieć, że w jakiś sposób naprawdę myślą?

Nie. I nie chodzi już o to, że nie będziemy w stanie tego zrobić, ale o to, że to nie ma sensu. AI w grze ma wspierać "fun" z niej płynący. A gdybyśmy zrobili przeciwników, którzy myślą jak ludzie, tylko są lepsi, to nie byłoby w tym nic zabawnego. Ciągle byśmy przegrywali. Oczywiście, jako początkujący programista AI też marzyłem o zrobieniu niesamowicie mądrej sztucznej inteligencji - ale to mija się z celem.

Z tego co mówisz w pewnym sensie wynika, że jesteś trochę iluzjonistą, który w jakiś sposób oszukuje ludzi.

Tak, można tak powiedzieć. I dlatego bardzo często ludzie zajmujący się akademicko sztuczną inteligencją nie mogą się dogadać z praktykami, którzy pracują przy grach. Mamy zupełnie inne potrzeby i wymagania.

rozmawiał: Tomasz Kutera

Przeczytaj wszystkie teksty z cyklu Tydzień ze Sztuczną Inteligencją

Więcej o: