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ął?
58
Odpowiedzi:
Wzór Strategia jest idealne dla określenia, co zrobić, ale nie wtedy, kiedy to zrobić. Będziesz także musiał użyć Skończonych Maszyn Stanowych, aby wiedzieć, w jakim stanie jest twoja sztuczna inteligencja i jakie odpowiednie decyzje są dostępne.
Praktyczny przewodnik po tworzeniu kompletnej gry AI: Tom I.
źródło
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:
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:
A kiedy te działania mogą się zdarzyć?
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!
źródło
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.
źródło
Możesz przyjrzeć się wzorowi projektowania strategii . Zasadniczo napisz te same podstawowe strategie zachowania statków:
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.
źródło
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.
źródło
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.
źródło
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.
źródło
Jak stworzyć AI to trudne pytanie, ponieważ składa się z wielu części:
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.).
źródło
Pomyśl o tym, co robisz podczas gry. Zadaj sobie kilka pytań.
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
źródło