Nowy w tworzeniu AI - od czego zacząć? [Zamknięte]

58

Jestem nowy w programowaniu gier i staram się stworzyć podstawową grę kosmiczną 2d z dwoma statkami kosmicznymi, które ze sobą walczą. Dobrze sobie radzę ze statkiem kosmicznym kontrolowanym przez użytkownika, ale nie mam pojęcia, jak zacząć programować AI. Czy niektóre metody / wzorce są lepsze w tej sytuacji? Od czego bym zaczął?

jle
źródło
1
Oto moje slajdy na temat sztucznej inteligencji z kursu, który przeprowadziłem: sol.gfxile.net/gpc/05ai.pdf
Jari Komppa
4
jeśli oświadczenia. wiele z nich.
spowolniłaviar

Odpowiedzi:

27

Jeśli po raz pierwszy rozwijasz sztuczną inteligencję, nie musisz się martwić takimi sprawami, jak stan, matematyka behawioralna, a nawet zdobyć książkę na ten temat.

Możesz dosłownie uciec od czegoś takiego:

if( targetInRange == true )  
{
    FireAtTarget();
}
else if( bulletComingTowardsMe == true )
{
    MoveAwayFromBullet();
}
else
{
    WanderAroundAimlessly();
}

Głównym aspektem poprawienia sztucznej inteligencji jest zastanowienie się nad tym, jakie zachowania powinna mieć postać i jak można to osiągnąć realistycznie. Tak więc dla podstawowego wroga statku kosmicznego wyobrażam sobie, że możliwe działania, które mógłby wykonać, to:

  • Poruszaj się
  • Ogień
  • Uciec

A kiedy te działania mogą się zdarzyć?

  • Poruszaj się - nic więcej do roboty
  • Ogień - kiedy zauważę wroga
  • Uciekaj - Kiedy mam mało zdrowia / Kiedy biorę ogień / itp

Po wykonaniu tej czynności z powodu niskiej liczby „stanów”, w których może znajdować się twoja postać, możesz użyć prostej instrukcji if, takiej jak powyższa. Poleciłbym zatem przyjrzeć się Zachowaniom Sterowania, ponieważ są to bardzo proste zachowania, które można wdrożyć i mogą one skutkować naprawdę dobrze wyglądającym ruchem.

Więcej można znaleźć tutaj: http://www.red3d.com/cwr/steer/
I zdecydowanie poleciłbym książkę Mat Buckland Programowanie AI Gra przez przykład , szczególnie gdy zaczynasz.

Kiedy naprawdę się z tym czujesz, proponuję przyjrzeć się wzorcom stanu i strategii.

Chodzi o to, aby zacząć od małego i prostego. Nie przejmuj się tymi wszystkimi terminami, które wszyscy rzucają na temat FSM i wzorców projektowych i tym podobnych. Najpierw projektuj i buduj, a następnie martw się, jak możesz to ulepszyć, stosując istniejące metody lub standardy.

Mam nadzieję, że to pomaga!

Ray Dey
źródło
@Fuu Pozdrawiam kolegę z edycji :)
Ray Dey
9

Możesz przyjrzeć się OpenSteer i dołączonej do niego dokumentacji Zachowań Sterujących . Kod źródłowy nie jest na poziomie początkującym, ale zawarte w nim koncepcje powinny dać ci kilka dobrych pomysłów.

AShelly
źródło
Czy ludzie używają opensteer w grach, czy jest to więcej do symulacji?
jle
Przynajmniej próbuję użyć go w opracowywanej grze. Jak dotąd działa dla mnie dobrze. Wierzę, że autor opracował wiele z nich, pracując dla grupy Playstation w Sony - Prawdopodobnie trafił do niektórych gier. MobyGames wymienia go na liście JohnMadden Football i jednej z gier Leisure Suit Larry.
AShelly
FreeOrion wykorzystuje OpenSteer w taktycznym silniku bojowym.
Mike Strobel,
1
+1 Za wzmiankę o opensteer. Jeśli chcesz zobaczyć wspaniałe przykłady łączenia bardzo prostych zachowań, aby stworzyć coś, co wygląda na bardzo złożone i skomplikowane. Zachowania przy kasie! Google, „Boids” i spójrz na niektóre fajne zastosowania. Nie jest cicho, czego chcesz, ale pokaże ci, że z prostoty wynika złożoność
onedayitwakemake
9

Możesz przyjrzeć się wzorowi projektowania strategii . Zasadniczo napisz te same podstawowe strategie zachowania statków:

  • Zbliż się do celu
  • Cel ataku
  • Uciekaj od celu
  • Przejdź do ulepszeń
  • Użyj ulepszeń

Następnie użyjesz logiki (maszyny stanów), aby wybierać między tymi strategiami. Na przykład: Jeśli tarcze statków spadły poniżej 50%, uciekaj od celu i ruszaj w kierunku ulepszeń / przedmiotów leczących i tak dalej.

Bryan Denny
źródło
1
więc za każdym razem w pętli gry decyduje, która z tych „strategii” ma pierwszeństwo, a następnie ją wykonuje?
jle
@jle Pretty. Tak więc każda z twoich strategii zostanie podzielona na własne klasy, utrzymując porządek w kodzie.
Bryan Denny
7

Czy mogę zasugerować zakup książki „Sztuczna inteligencja dla gier” Iana Millingtona - jest doskonała! :) http://www.ai4g.com/

Kod źródłowy jest na licencji Github - MIT.

Oczywiście, jeśli nie używasz C / C ++, może to być mniej istotne.

Ale naprawdę niesamowite wprowadzenie do świata sztucznej głupoty / inteligencji.

Potrzebne będą od niego sterowanie i automaty stanów. Dla początkujących.

jacmoe
źródło
2

Kilka praktycznych porad, jeśli wybierasz maszyny stanowe: strzeż się megastate.

Kuszące jest posiadanie stanu „ucieczki”, który obsługuje ustawianie pozycji do ucieczki, ustawianie wysokiej prędkości celu, usuwanie wszystkich celów itp. O wiele lepiej jest zamiast tego mieć wiele maszyn stanu, z których każda obsługuje jeden lub kilka elementów sterowania statkiem - np. automat państwowy, który obsługuje wybieranie pozycji docelowej, który obsługuje pistolety itp.

To może wydawać się głupie, ponieważ musiałbyś dodawać stany ucieczki do każdej indywidualnej maszyny, ale ponieważ jesteś ograniczony tylko do jednego lub dwóch wyników, stany są bardzo małe, więc nie powinno to stanowić problemu.

Ponadto, ponieważ każda kontrola jest teraz pod indywidualną kontrolą, możesz w końcu wybrać pozycję docelową ucieczki, mając jednocześnie kontrolę nad bronią w stanie ataku. Możesz ogłuszyć wroga, jednocześnie oszczędzając moc silnika z powodu wycieku płynu chłodzącego. Możesz sterować, aby uniknąć kolizji, a jednocześnie wyrzucać środki zaradcze. Wszystko to byłoby niemożliwe przy pomocy jednej wszechogarniającej maszyny stanów.

tenpn
źródło
2

Matematyka behawioralna dla AI gry

Dodanie tej książki do listy punktów początkowych do nauki programowania AI. Skupiając się na obserwacji i implementacji zachowań, a nie na algorytmach ograniczonego zastosowania, uważam, że jest dobrze dostosowany do tego zadania.

Jay Bell
źródło
1

Jak stworzyć AI to trudne pytanie, ponieważ składa się z wielu części:

  • Wybierasz ogólną architekturę / paradygmat swojej sztucznej inteligencji. Czy jest oparty na skryptach? Czy użyje planowania? Czy to prosty FSM, czy wolisz BT?
  • Następnie zastosujesz te paradygmaty za pomocą określonej implementacji / zestawu narzędzi.
  • Teraz masz do wyboru opcje projektowania gier, ponieważ musisz pomyśleć o zachowaniach, które wykorzysta twoja architektura.

Inne plakaty sugerowały świetne książki, a ja uwielbiam AI4Games sugerowane przez jacmoe, chociaż są one dość ogólne w niektórych częściach (jak wiele książek, co oczywiście jest zrozumiałe).

Oczywiście każdy rodzaj gry ma swoje specyficzne potrzeby, a gry zręcznościowe / strzelanki nie wymagają skomplikowanej architektury do obsługi interesującej rozgrywki. Proste sterowanie bibliotekami wykona zadanie jako podstawę tego zachowania, a następnie dodasz szczegóły dla różnych rodzajów wrogów (niektórzy strzelają okresowo, niektórzy strzelają, przewidując ruch gracza, niektórzy obracają się, aby stawić czoła wrogowi, inni mogą koordynować ich ataki itp.).

  • Myślę, że najlepszym sposobem na poznanie kodowania gier (AI) jest zbyt dobre spojrzenie na działający kod. Odkryj więc ohloh.net i github i poszukaj istniejących projektów FOSS!
  • Oczywiście, można wybrać ten dysk i odtworzyć część istniejącego (ale proste) grę. Spróbuj odtworzyć zachowanie i pomyśl: „Jak bym to zaprojektował?”. Oczywiście podpowiedzi zawsze pomagają i prawdopodobnie dlatego pytałeś tutaj na gamedev.SE!
  • Coś pośredniego to też spojrzenie na istniejące strzelanki na forach GameMaker! Możesz znaleźć wiele prostych skryptów, które załatwią sprawę! ;)
Astyanax
źródło
1

Pomyśl o tym, co robisz podczas gry. Zadaj sobie kilka pytań.

  • Jakich informacji potrzebuję, aby móc podjąć decyzję?
  • Kiedy reaguję na zmiany?
  • Jakie są moje „długoterminowe” cele w tej konkretnej sesji gry?

Następnie chcę, aby AI spojrzała na boisko i sporządziła listę możliwych działań lub ruchów, które AI mogłaby wykonać na podstawie tych pytań. Klasyfikuję i sortuję te ruchy według „współczynnika sprytu”. Następnie jest to tak proste, jak wybranie i wykonanie ruchu / akcji w oparciu o pewną kombinację losowości i niezależnie od poziomu trudności, który gracz wybrał na początku gry.

Następnie po 500 milisekundach robię to ponownie.

Nie ma żadnych umiejętności uczenia się ani nic, ale przy wystarczającej poprawce może być dość przekonujący, co jest naprawdę ważne

Gagege
źródło