2010-06-19 15 views
5

Aby przetestować reguły zachowania gry Unreal Tournament (wersja 1999 lub 2004) CTF, chcę stworzyć bota w Javie, który jest w pełni kontrolowany.Turniej Bota dla Unreal

Bez AI, ale z zestawem poleceń, jak skok, biegnij do tego punktu, itp. Algorytm ewolucyjny w czasie rzeczywistym, aby rozwinąć sekwencję ruchów, biorąc ją na flagę przeciwnika i z powrotem. Żadnych złożonych działań, takich jak strzelanie, ale raczej unikanie konfliktu. Główne działania powinny być przeskakiwać, biegać, obracać, poruszać się.

Używanie gamebots API Szukam tutoriali/wskazówek na temat pisania bota i podłączania go do struktury algorytmu genetycznego, takiej jak Zegarmistrz. Mam kilka warunków dla funkcji fitness i natknąłem się na ścieżki do botów. Czy znasz jakieś samouczki, które mogą mi pomóc?

Odpowiedz

2

Tylko podpowiedź: rozejrzyj się po aigamedev.com Nie jestem pewien, czy ktoś nadal używa silnika UT 1.

Jeśli nie masz nic przeciwko rzeczywistemu silnikowi gry, na pewno znajdziesz kilka samouczków związanych z Open Source ID Engines, takich jak Quake 3.

+0

Dzięki za tweber witryny, okazuje się być doskonałym źródłem informacji, naprawdę czuję, że mała część mojego rozwiązania jest połączona z siatką nawigacji, wzdłuż której sekwencje działań będą musiały zostać ewoluowane. Chcę znaleźć dobry samouczek, który wyjaśni od dołu, jakie kroki należy wykonać, aby stworzyć funkcjonalnego bota dla każdej gry typu FPS. –

2

Należy pamiętać, że aby algorytmy genetyczne w czasie rzeczywistym były odpowiednie, lepiej zacząć od zebrania spójnego zestawu strategii przeciwników (lepiej, jeśli od różnych osób) i używając tego zestawu do oceny kondycji w tle, symulując gry w szybkim tempie, aby uzyskać w rozsądnym czasie szereg przyzwoitych strategii, od których możesz zacząć (nie do pomyślenia jest, aby ludzie oceniali kondycję losowych strategii - najprawdopodobniej zajmie to zbyt dużo czasu). Klasycznym przykładem takiego działania jest gra w warcaby, ale także bardziej złożone gry mogą wykorzystywać tę samą strategię (jest znany przykład futurystycznej bitwy morskiej, w której strategia wspomagania GA pokonała ludzkich przeciwników - nie pamiętam szczegółów, ale będę wyglądać go i edytuj). Po opracowaniu szeregu przyzwoitych strategii możesz odpalić GA w czasie rzeczywistym, aby mógł uczyć się od ludzi.

Należy również pamiętać, że może to być bardzo powolny proces i nie ma żadnej wartości w korzystaniu z algorytmów genetycznych w czasie rzeczywistym, w tym sensie, że lepiej jest zbierać strategie od ludzkich przeciwników i uruchamiać ewolucję w tle, więc że następnym razem, gdy gra ten sam przeciwnik, mógłbyś rozwinąć strategię, która mogłaby go pokonać. Chyba że masz dużo ludzi grających - w tym przypadku może to mieć sens, ale jeśli celem jest rzucenie wyzwania ludziom z coraz lepszymi botami, to właśnie bym to zrobił. Posiadanie ludzi oceniających sprawność wstępnych strategii może być 1) wolne 2) nudne dla nich.

Kilka dokumenty zajmujące się w czasie rzeczywistym algorytmów genetycznych (wart przeglądając abstrakcyjne i zobaczyć, jeśli jesteś zainteresowany):

Warto również wspomnieć, somethi Podobnie jak wcześniej zrobiono to przy użyciu neuroewolucji (ewolucja sieci neuronowych z GA, NEAT jest dobrym przykładem i została użyta dla FPS afaik), ale rozważania pod kątem zestawu treningowego nadal są aktualne.

+1

Wow, dziękuję za tę odpowiedź i linki. Proszę zrozumieć, że jestem nowy dla GA, ale sposób, w jaki chcę to zrobić, to losowo wygenerowany wektor ei. ciągów kodujących pozycję bota. Uruchom bota z tym wektorem i sprawdź kondycję i uruchom go ponownie. Powtarzaj aż do znalezienia sekwencji, która zabierze bota do flagi przeciwnika iz powrotem. Myślę, że najlepszym sposobem, aby pokazać ci, co próbuję osiągnąć, jest wskazanie ci oryginalnej pracy [http: //citeseerx.ist.psu. edu/viewdoc/download? doi = 10.1.1.131.5094 & rep = rep1 & type = pdf]. Proszę przeczytać i powiedzieć, co myślisz. –

+1

To bardzo ciekawy artykuł, a kodowanie, które masz na myśli, brzmi dobrze, ale w artykule mówimy o generowaniu przypadków testowych, aby wykryć błędy, a nie uczenie maszynowe w czasie rzeczywistym, aby generować lepsze strategie gry. Nadal uważam, że powinieneś zebrać zestaw treningowy i rozwinąć swoją strategię "offline" przeciwko temu zestawowi szkoleniowemu, a przynajmniej tak bym wybrał. – JohnIdol

+0

Masz absolutną rację, jeśli chodzi o uczenie się w czasie rzeczywistym, mój błąd. Podczas mojej pierwszej próby rozważałem losową sekwencję, która poprawiłaby się dzięki funkcji fitness, która mierzy kilka aspektów zachowania bota. Chciałem trochę odkryć dużą przestrzeń rozwiązań, aby znaleźć optymalną. Jednak myślę, że mogę spróbować zająć się twoją sugestią i zagrać w tę grę i spróbować nagrać kilka sekwencji ewolucji. Jeśli masz więcej wyświetleń lub sugestii, opublikuj je. Ponownie okrzyki na odpowiedzi. –

Powiązane problemy