Jakie zachowania powinny wpłynąć na stworzenie „nie idealnego” bojownika AI?


19

Kiedy tworzysz bojownika NPC, oczywiste jest , co zrobić, aby uzyskać maszynę śmierci robota, optymalizując taktykę walki, czas i typy ataków, ale trudniej (i bardziej interesująco w walce) zdobyć idiosynkratycznego, nieprzewidywalnego wroga. Jakie zachowania (algorytmy?) Są przydatne do stworzenia bardziej organicznego, niekonwencjonalnego wroga?

Edycja: Mój konkretny przypadek użycia dotyczy wrogów podobnych do MMO, np. World of Warcraft, choć z mniejszą ilością grafiki. Pamiętaj, że oznacza to zarówno ludzkich, jak i nieludzkich wrogów (zwierzęta, potwory itp.)

Odpowiedzi:


14

Istnieje bardzo interesujący artykuł na temat Gamasutry: Inteligentne błędy: jak włączyć głupotę do swojego kodu AI , Mick West.

W tym artykule opisano sztuczną inteligencję gry w bilard. Wdrażając taką sztuczną inteligencję, dość łatwo jest sprawić, by rzucała piłkę przy każdym strzale. Uproszczonym sposobem uczynienia AI mniej „inteligentnym” jest, jak sugerowano w innych odpowiedziach, dodanie losowego czynnika do obliczeń, co powoduje, że AI traci więcej.

Istnieją jednak dwie poważne wady takiego podejścia. Po pierwsze, jest to nieprzewidywalne. Dla gracza grającego w trybie „łatwym” niedopuszczalne jest, aby AI „miała szczęście”. Co się stanie, jeśli twój losowy czynnik sprawi, że AI wykona jeszcze lepszy strzał, uderzy w bardziej wartościową piłkę lub wykona kombinację? Nie wiesz, co się wydarzy, a szczęście nie powinno być opcją dla AI w łatwym trybie.

Inną wadą jest to, że gracz będzie próbował zidentyfikować wzór w zachowaniu AI. A przy prostym losowym czynniku nie ma wzorca. Ale to nie znaczy, że gracz nie zobaczy żadnego wzorca, wręcz przeciwnie. Gdy tylko AI się poszczęści, gracz zobaczy strategię w swoim zachowaniu. W artykule gracze narzekają na to, że AI gra strategię pozycji. Gdy precyzja kątowa jest przypadkowa .

Z mojego punktu widzenia, po przeczytaniu tego otwierającego oczy artykułu, niedoskonała sztuczna inteligencja nigdy nie powinna wykorzystywać randomizacji jako czynnika upraszczającego. Przeciwnie. Łatwiejsza sztuczna inteligencja powinna być mądrzejsza, ale starać się pomóc graczowi.

W artykule Przykład gry w pulę najlepszą opcją do wdrożenia sztucznej inteligencji w „łatwym trybie” było usunięcie wszystkich czynników losowych i dodanie strategii pozycjonowania. Sztuczna inteligencja próbowałaby uderzyć piłki, aby przygotować dla gracza łatwy i niesamowity strzał .

W ten sposób gracz pomyśli, że miał szczęście. I właśnie tego oczekujesz od gry, gdy grasz łatwo.


1
Przydałoby się również AI pamiętać, z czego gracz może skorzystać. Deweloperzy mogą myśleć, że ma „łatwą pulę”, ale jeśli nie może jej zagrać, taktyka powinna być mniej wykorzystywana przez AI. Jest to również korzystne, ponieważ możesz trenować gracza, pamiętać, czego on nie może robić i celowo wykorzystywać to tak często, aż będzie mógł, w ten sposób gracz nie jest ani znudzony, ani sfrustrowany.
Jonathan Connell

Chociaż zgadzam się z niestosowaniem losowości, nie zgadzam się z „pomaganiem graczowi”: to byłoby jak oszustwo, tylko znacznie gorzej, ponieważ okłamałbyś gracza.
o0 ”.

@ Lo'oris: Cóż, nie uważam tego za kłamstwo. Kiedy gracze mówią, żeby gra była dla niego łatwa, spodziewa się, że gra będzie łagodna. Kiedy grasz w grę, w której jesteś naprawdę dobry z przyjacielem, który dopiero ją odkrywa, myślę, że dawanie mu okazji jest w porządku. Sprawia, że ​​gra jest przyjemniejsza dla wszystkich.
Tyn

1
Jest dobry post na blogu autorstwa Shawna Hargreavesa na temat randomizacji i zdolności człowieka do dostrzegania wzorców w przypadkowości. Przekładałoby się to na tonę, w tym przypadku, gracza nieprawidłowo oceniającego taktykę gracza AI.
Jonathan Connell

1
Właściwie myślę, że randomizacja pod względem dokładności jest dobrym rozwiązaniem. Z prawdziwym graczem, który nie jest taki świetny, czasami popełni błąd i uderzy lepszą piłkę.
AttackingHobo

10

Kluczową koncepcją jest unikanie przekazywania NPC „doskonałej wiedzy”.

  • Losowy margines błędu przy wszelkich decyzjach lub działaniach, które wymagają obliczeń. oczywistym przykładem jest celowanie (np. snajperzy szturmowców). Jeśli nie zawsze cię uderzą, jest to bardziej realistyczne.
  • Linia wzroku ... jeśli cię nie widzą, może stworzyć interesującą grę w kotka i myszkę.
  • Taktyka zespołowa, w zależności od rodzaju gry, wrogowie dostosowujący się do sytuacji mogą być znacznie bardziej interesujący. Na przykład, jeśli zostaniesz postrzelony, nie szarżujesz na ślepo, kryjesz się, dopóki nadchodzący ogień nie ustanie. A może czujesz się bardziej komfortowo, jeśli masz w pobliżu kolegów z drużyny ... możesz symulować te zachowania, aby NPC zachowywali się tak, jakby żyli.

Jestem pewien, że podanych będzie mnóstwo innych przykładów, może mógłbyś opowiedzieć nam o swojej grze, a my możemy uzyskać bardziej szczegółowe :-)


4

Jednym z szybkich sposobów na uczynienie z AI idealnej do walki jest podejmowanie nieskutecznych decyzji poprzez dodawanie „szumu” do jej wejść lub wyjść. Przez hałas mam na myśli pewne czynniki losowe.

Oto mały przykład danych wyjściowych:

  • Idealny algorytm daje trzy możliwe akcje uszeregowane z wynikiem.
  • Dodaj losową wartość do każdego wyniku.
  • Wybierz najlepszy wynik.

Oto kilka pomysłów na dane wejściowe:

  • Jeśli działania są oparte na zdrowiu przeciwnika, dodaj czynnik losowy (powiedz +/- 10 dla paska zdrowia 0-100) do postrzeganego stanu przez AI.
  • To samo dotyczy oceny akcji, jeśli AI wie, że niektóre ataki są silniejsze od innych, losowo dodawaj / odejmuj niektóre wartości.

Jedną oczywistą rzeczą, którą należy wziąć pod uwagę, jest szybkość AI. W większości gier AI mogą reagować DUŻO szybciej niż ludzie (szczególnie w walce) i wykonywać pozorną wielozadaniowość (bardzo widoczne w grach RTS). Musisz więc działać zgodnie z tym, utrzymując sztuczną inteligencję nieco powolną (być może adaptacyjną) i ograniczając liczbę rzeczy, które może zrobić w określonym przedziale czasu (tj. Jedną akcję co pół sekundy).

Mam nadzieję, że to pomoże i powodzenia!


3

Trudno jest udzielić bezpośrednio użytecznej odpowiedzi, nie wiedząc, co dokładnie próbujesz zrobić.

Mam dwie rzeczy do powiedzenia na ten temat, które mogą ci pomóc.

Po pierwsze (i to jest zdecydowanie najważniejsze), jeśli próbujesz sprawić, by wróg poczuł się bardziej interesujący i ludzki, wówczas twoja taktyka walki nie ma znaczenia. Sztuką, aby gracze „uwierzyli”, że wróg żyje, jest użycie animacji, dźwięków i drobnych szczegółów, które sugerują ludzkie zachowanie. Idealna sztuczna inteligencja może chodzić za rogiem, widzieć gracza i strzelać. Ludzka sztuczna inteligencja może chodzić za rogiem, widzieć gracza, mieć zaskoczony wyraz twarzy, krzyczeć z niepokojem i strzelać. Pierwszy wydaje się robotyczny. Drugi wydaje się ludzki. Obaj używają identycznej sztucznej inteligencji pod każdym względem, oprócz wstawiania animacji tuż przed strzelaniem (lub, aby zachować zachowanie taktyczne podczas strzelania).

Po drugie, unikaj losowania. Gracze nie doceniają tego tak bardzo, jak projektanci chcą myśleć, że to zrobią. Gracze nie widzą ”komputer wygenerował 1 na 100, a następnie 5, 3 i 4, więc współczynniki błędów dla ostatnich czterech strzałów wynosiły tylko 1%, 5%, 3% i 4%, i to jest dlaczego w tej rundzie zginąłeś w pół sekundy ”. Gracze widzą wrogów, którzy czasami bardzo tęsknią, a innym razem gwoździami bez wyraźnego powodu, co jest niezwykle frustrujące. Dobry projekt gry polega w dużej mierze na budowaniu wzorów, które potrafią ludzieobserwować, uczyć się i bić, a sukces gracza opierać na jego własnej ocenie, umiejętnościach i intuicji, a nie na tym, czy gracz miał szczęście. Chęć losowania wynika z doświadczenia z grami stołowymi i grami hazardowymi, które są niewiarygodnie różnymi mediami niż gry wideo (a to, co działa na jednym medium, często nie ma sensu na innym).


1

Pamiętam, że na naszym kursie AI na studiach był temat na temat uczynienia AI bardziej „ludzką” i mniej idealną. To było wiele lat temu, więc po prostu pamiętam kilka kul z mojego umysłu.

  • Użyj „bibliotek ruchów”. Jeśli walczysz z orkiem, powiedz mu 3 procedury walki, które powtarzają się co jakiś czas. To sprawia, że ​​walka jest łatwiejsza, ponieważ jest bardziej przewidywalna, co wydaje się być przeciwieństwem tego, czego chcesz, ale wciąż czyni AI mniej „idealną maszyną”, a bardziej „noobem powtarzającym ten sam ruch w kółko”.
  • Suboptymalizuj, jeśli to możliwe. Jeśli, jak mówisz, twoja sztuczna inteligencja opiera się na obliczeniu najlepszego ruchu, nałóż sztuczny limit na te obliczenia. Spowolnij wyszukiwanie lub ogranicz liczbę kroków. Zamiast najlepszego ruchu w historii AI wybierze po prostu dobry ruch. Może to urozmaicić zachowanie twoich wrogów, ponieważ jest o wiele więcej dobrych ruchów niż najlepszych.
  • Popełniaj błędy celowo. Zamiast najlepszego ruchu wybierz drugi lub trzeci najlepszy. Lub nawet wybierz ruch, który ma złą użyteczność. Może to rozwiązać problem związany z „nieprzewidywalnością”.

Oczywiście są to tylko ogólne porady, które należy zbadać i przetestować w każdym przypadku, i mogą sprawić, że twoja sztuczna inteligencja będzie wyglądać jeszcze bardziej sztucznie, niż zamierzano. Myślę jednak, że są dobrym punktem wyjścia.


0

Właśnie zobaczyłem to wyskakujące okienko i chciałem podzielić się pomysłem, który wykorzystałem w przeszłości.

Powiedzmy, że postać ma trzy ruchy i każdy jest punktowany, wyższy wynik to lepszy ruch. (Inne odpowiedzi mówią o dodawaniu hałasu do tworzenia tego zapisu).

  • Atak mieczem (30 punktów)
  • Zaklęcie ognia (50 punktów)
  • Zaklęcie lodu (20 punktów)

Zsumuj sumę punktów (100)

Wyjmij statystykę inteligencji postaci z maksymalnej możliwej wartości tej statystyki (powiedzmy 60 na 100).

Wygeneruj losową liczbę między 0 (lub innym piętrem) a współczynnikiem inteligencji (0,6), pomnóż przez całkowitą liczbę punktów (100). W naszym przykładzie powiedzmy, że wynik to 45.

Teraz zaczynasz odejmować złe ruchy od tej wartości, aż osiągniesz zero. (Odejmij w kolejności.)

Po pierwsze, bierzemy pod uwagę zaklęcie Lodu, które uzyskało wynik 20. 45-20 = 25. Jest to powyżej zera, więc rzucamy zaklęcie Lodu.

Po drugie, spójrz na atak mieczem wartym 30 punktów. 25–30 = -5. Osiągnęliśmy próg, więc wybieramy Atak mieczem.

W tym systemie postać o niskiej inteligencji nie wybierze najlepszego ruchu. A postać o wysokiej inteligencji często wybiera najlepszy ruch. (W tym przykładzie postać o doskonałej inteligencji wybiera najlepszy ruch w 50% przypadków).

Dodanie mechanizmu podłogowego do liczby losowej zwiększy szansę na wybranie lepszych ruchów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.