Oprogramowanie  / Lokowanie produktu

Komputery, które pokonały ludzi

Sztuczna inteligencja jest częścią gier wideo od momentu ich powstania. Pewne znamiona inteligencji gry musiały prezentować od zawsze, po to, by być godnym przeciwnikiem człowieka. Jednak różnice pomiędzy ogólnym rozumieniem zastosowań sztucznej inteligencji a zastosowaniami w grach są duże.

We wdrożeniu AI (ang. artificial intelligence) nie chodzi często jedynie o udawanie zachowań ludzkich lub ludzkiego rozumowania. Zagadnienie sztucznej inteligencji w grach jest bardzo specyficzne - często zawężone do konkretnego algorytmu, dzięki któremu np. zachowanie postaci sterowanych przez komputer lub konsole ma sprawiać naturalne wrażenie. Użyciem SI w grach wspiera się doświadczenie gracza - i niekoniecznie musi służyć podejmowaniu decyzji bądź uczeniu się.

Machine learning i inne zastosowania należące do rozwiązań AI są mocno zasobożerne. Ich naturalnym środowiskiem jest chmura obliczeniowa, np. IBM Cloud, która udostępnia rozwiązania dedykowane twórcom gier.

Sztuczna inteligencja jako gracz

Za pierwszy znany przykład użycia algorytmu komputerowego jako przeciwnika w grze wobec człowieka był komputer zbudowany z 480 lamp próżniowych o nazwie Nimrod, który w 1951 w trakcie targów Festival of Britain grał z ludźmi w znaną grę Nim. Polegała na zdejmowaniu z planszy od jednego do trzech obiektów (najczęściej zapałek), przy czym wygrywał gracz usuwający z planszy ostatni przedmiot.

Nimrod nie był programowalnym komputerem - służył jedynie do gry w Nim (stąd jego nazwa). Jednak grał na tyle dobrze, że zadziwił, a nawet przestraszył wielu uczestników targów.

Pierwsze próby - uczenie maszynowe w 1956 roku

Czas na bardziej złożone zastosowania maszyn jako przeciwników grach przyszedł jeszcze w latach 50. za sprawą pracującego w IBM Arthura Samuela. Samuel, twórca pojęcia uczenie maszynowe (machine learning), stworzył algorytm, który do dziś jest używany w grach. Jest to algorytm alfa-beta, służący do redukcji liczby węzłów w drzewie decyzyjnym (czyli ułatwiający podejmowanie decyzji). Jest to algorytm wykorzystywany w grach dwuosobowych, takich jak kółko i krzyżyk, go czy szachy. Algorytm alfa-beta pozwala wyrzucić z analizy te ruchy, które nie zbliżają gracza do zwycięstwa.

Fot. Dan - Flickr: IBM 701, CC BY 2.0,

Algorytm alfa-beta był pierwszym filarem używania komputerów jako przeciwników do grania. Drugim zaś było samo uczenie maszynowe właśnie. W 1956 roku, używając komputera IBM 701, Samuel zaczął testy swoich programów - najpierw grającego w kółko i krzyżyk, następnie grającego w warcaby. Elementem uczenia maszynowego było zapamiętywanie każdego ruchu na taśmie magnetycznej. Tym sposobem algorytm mógł używać wyników poprzednich rozgrywek jako własnego „doświadczenia”, grając tym samym coraz lepiej - co jest definicją uczenia się!

Pierwszy sławny gracz maszynowy - Deep Blue

Dopiero czterdzieści lat później uczenie maszynowe pojawiło się w mediach i materiałach dostępnych szerszej publiczności. Stało się to za sprawą komputera Deep Blue, stworzonego przez IBM. Deep Blue, mimo że miliony razy bardziej wydajny niż IBM 701, wciąż wykorzystywał algorytm alfa-beta, by analizować możliwe ruchy w grze szachowej.

W 1996 roku Deep Blue zagrał z arcymistrzem szachowym Garrym Kasparovem i… wygrał. Ten moment uważa się za symboliczną chwilę, z którą komputer mógł pokonać człowieka w tej grze. Deep Blue w trakcie rozgrywki przeszukiwał 200 milionów możliwych układów figur na szachownicy na sekundę do 20 ruchów do przodu.

AlphaGo - nowa technologia, stare metody

Kolejnym symbolicznym momentem w rozgrywkach pomiędzy człowiekiem a maszyną była gra pomiędzy algorytmem AlphaGo i mistrzem gry w Go.

Tym razem zastosowano deep learning (głębokie uczenie - takie, które odbywa się w sztucznej sieci neuronowej i którego wynikami nie można sterować). Jednak metodyka była taka sama, jak wymyślona w latach pięćdziesiątych przez Samuela - algorytm grał sam ze sobą, zapisując wszystkie ruchy, by zbudować sobie bazę odpowiednich do danej sytuacji ruchów w grze.

Sztuczna inteligencja w tle

Oprócz zastosowania AI bezpośrednio w grze w postaci elementów, z którymi gracz może wchodzić w interakcję, algorytmy uczenia maszynowego często są stosowane za kulisami.

Jednym z przykładów może być tu algorytm matchmakingu (dobierania przeciwników w grze online). W grach opartych na rywalizacji dla dobrego doświadczenia gracza istotne jest, aby dobrać mu przeciwników na jego poziomie. Inaczej dla gracza o większych umiejętnościach gra przestanie być wyzwaniem, a początkujący zrazi się, nie mogąc nigdy wygrać z rywalami o wiele lepszymi od siebie.

Jak jednak ocenić zaawansowanie gracza, w grze w którem ma on dużą swobodę ruchu i zachowań? Jak ocenić jego interakcję z otoczeniem, i współpracę z drużyną? Podstawowe parametry, które niegdyś wystarczały, takie jak stosunek zabójstw do śmierci (tzw. kill-death ratio) to za mało w momencie, gdy gracze mogą np. wypełniać rolę wspomagającą w drużynie, np. snajpera bądź medyka. Potrzebne były lepsze analizy, aby określić jak dobrze idzie graczowi na tym polu.

Do tego celu właśnie powstały specjalne złożone algorytmy oparte na machine learning, które pozwalały skojarzyć zachowania gracza z sukcesami jakie odnosi jego drużyna w grze. Jest to złożone zagadnienie opisywane nawet w czasopismach naukowych.

Innym zastosowaniem sztucznej inteligencji „za kulisami” gier są algorytmy do automatycznego generowania treści. Wiele gier zawiera możliwość generowania unikalnych poziomów za każdym razem gry rozpoczynamy grę. Taką funkcję posiadają np. gry Minecraft czy seria Diablo. Aby wygenerowane poziomy miały sens, wyglądały naturalnie, a nie jedynie jako zlepek elementów, potrzebne są również odpowiednie reguły i algorytmy, określające to, jakie elementy do siebie pasują. Dodatkowo, należy tu zastosować algorytm znajdowania drogi w taki sposób, aby nie tworzyć np. pomieszczeń do których nie ma wejścia w Diablo, bądź drzwi które nie prowadzą do żadnego pomieszczenia.

Jednym z największych przedsiewzięć tego typu była gra No Man’s Sky - odpowiedni algorytm potrafi tam generować całe planety z ekosystemami, zasobami naturalnymi, roślinnością oraz fauną. Wszystkie te elementy wchodzą ze sobą w interakcje. W ten sposób we uniwersum gry znajduje się, oczekujących do odkrycia przez graczy, aż 18 trylionów planet. Cechy poszczególnych gatunków pasują do siebie - w końcu ewoluowały razem, roślinność jest odpowiednia do biomu w którym rośnie i klimatu planety.

Wspomniany algorytm znajdowania drogi był również zastosowany w klasycznej grze Pac-Man, w której duchy potrafiły znaleźć najkrótszą możliwą drogę do gracza, zajść mu drogę, w a momencie, kiedy to on ścigał duszki (po zjedzeniu odpowiedniego power-upa), uciekać przed nim.

AI dla twórców gier w chmurze

Naturalnym miejscem do uruchamiania usług związanych z SI i machine learning jest chmura obliczeniowa. IBM Cloud zawiera doskonałe narzędzia stworzone dla twórców gier.

Przydatne twórcom gier usługi zebrane są na stronie IBM Cloud for gaming developers. Są wśród nich m.in. wirtualne serwery do uruchamiania własnej aplikacji, serwery do dystrybucji własnych usług i budowania aplikacji na różne platformy oraz Watson Studio umożliwiające szybkie tworzenie rozwiązań opartych o sztuczną inteligencję. Jeśli dodamy do tego serwery z miejscem do składowania danych oraz platformę do obsługi transakcji opartych o blockchain - uzyskamy kompletne środowisko do stworzenia i hostowania własnej gry. Blockchain możemy wykorzystać do stworzenia bezpiecznej i nie podatnej na złamanie ekonomii w grze.

Rekomendowanych usługi chmurowe zostały wstępnie podzielone na trzy grupy, najbardziej odpowiadające różnym rodzajom gier.

Pierwsza z nich to gry na platformy mobilne. Znajdziemy tu serwery wirtualne na naszą aplikację, Mobile Foundation - kompleksowa usługa do tworzenia i hostowania gier mobilnych oraz Watson Studio oferujące łatwe tworzenie rozwiązań AI.

Druga grupa to gry MMORPG. Tutaj w ofercie mamy fizyczne serwery, IBM Cloudant - w pełni zarządzana baza danych dla aplikacji działających w hybrydowym środowisku wielochmurowym, oraz platforma do Blockchain.

Ostatnią wyszczególnioną grubą są gry MOBA - drużynowe gry sieciowe. Tutaj mamy rekomendowane usługi Kubernetes, usługi dostarczania treści (content delivery network) oraz składowanie danych w chmurze.

Przykład zastosowania AI: Moderacja komentarzy w grze

Dobrym przykładem wykorzystania usług IBM Cloud w grach jest moderacja toksycznych, rasistowskich czy hejterskich komentarzy. Wykorzystać można do tego analizę treści podobną do tej użytej przez nas wcześniej: Tone Analyser.

Istnieje gotowy obraz przeznaczony dla Dockera (codait/max-toxic-comment-classifier), który zawiera analizator komentarzy pod kątem toksyczności, obsceniczności i wulgaryzmów, zagrożeń i wyzwisk oraz treści opartych na nienawiści. Opis gotowego narzędzia znajduje się tutaj.

W chmurze IBM możemy uruchomić go zarówno w serwisie Kubernetes jak i OpenShift. Na początek najlepszym rozwiązaniem będzie Kubernetes, jako że oferuje darmowy poziom usług (jednak trzeba podać kartę kredytową i uzyskać 200 dolarów początkowego kredytu). Przykładowe użycie takiej usługi:

curl -d "{ "text": [ "I would like to punch you.", "In hindsight, I do apologize for my previous statement." ]}" -X POST "http://localhost:5000/model/predict" -H "Content-Type: application/json"`

Dające wynik:

Jak widać, pierwsza z wypowiedzi jest o wiele bardziej toksyczna, i zawiera groźbę. W drugiej (przeprosiny), tego nie wykryto.

Aby przetestować chmurę IBM, możemy założyć darmowe konto pod adresem https://cloud.ibm.com/registration. Większość usług można wypróbować za darmo, mogą też one być używane produkcyjnie nawet na darmowym poziomie z możliwością przejścia na płatne konto przy rozwoju naszej usługi.

Dla chcących rozpocząć pracę nad swoimi grami z użyciem chmury, IBM przygotował przykłady gotowego kodu używającego IBM Cloud, oraz warsztaty dla programistów wprowadzające do tej technologii.

Tekst powstał we współpracy z IBM.

przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst


przeczytaj następny tekst