2010-06-19 16 views
5

Um die Verhaltensregeln von Unreal Tournament zu testen (1999 oder 2004 Version) CTF Spielart, möchte ich einen Bot in Java machen, die vollständig steuerbar ist.Bot für Unreal Tournament

Keine AI, sondern eine Reihe von Befehlen wie Sprung, Lauf zu diesem Punkt, etc. Ein evolutionärer Algorithmus in Echtzeit, um eine Sequenz von Bewegungen zu entwickeln, die ihn zur gegnerischen Flagge und zurück bringt. Keine komplexen Aktionen wie Schießen, sondern Konflikte vermeiden. Hauptaktionen sollten springen, laufen, drehen, bewegen zu.

Mit gamebots API suche ich tutorials/Leitlinien für tatsächlich den Bot zu schreiben und es bis zu einem genetischen Algorithmus Rahmen wie Uhrmacher- Einhaken. Ich habe wenige Bedingungen für eine Fitness-Funktion und bin in den Bot-Pfad gelaufen. Kennst du Tutorials, die mir helfen können?

Antwort

2

Nur ein Tipp: schaut euch um aigamedev.com Ich bin mir nicht sicher, ob jemand dort immer noch die UT 1-Engine verwendet.

Wenn Sie nicht das eigentliche Spiel-Engine nichts dagegen tun, werden Sie sicherlich einige Tutorials zu den Open Source ID Engines wie Quake 3 ist im Zusammenhang finden.

+0

Danke für die Website Tweber, es erweist sich als eine große Quelle von Informationen, ich fühle wirklich, dass ein kleiner Teil meiner Lösung mit Navigation Mesh verbunden ist, entlang denen Action-Sequenzen entwickelt werden müssen. Ich möchte ein gutes Tutorial aufspüren, das von Grund auf erklärt, was die Schritte sind, um einen funktionalen Bot für jedes FPS-Spiel zu schreiben. –

2

Denken Sie daran, dass genetische Algorithmen für die Anwendung in der Regel besser geeignet sind, indem Sie ein konsistentes Training advertiarialer Strategien (besser wenn von verschiedenen Personen) erstellen und dieses Set verwenden, um die Fitness im Hintergrund zu simulieren Spiele im Schnelldurchlauf, um in vernünftiger Zeit eine Reihe von anständigen Strategien zu erhalten, mit denen man beginnen kann (es ist undenkbar, Menschen dazu zu bringen, Fitness von zufälligen Strategien zu bewerten - würde wahrscheinlich zu lange dauern). Ein klassisches Beispiel, wie dies implementiert ist das Spiel der Kontrolleure, aber auch komplexere Spiele können die gleiche Strategie nutzen (es ist ein berühmtes Beispiel der futuristischen Seeschlacht wo GA Aided Strategie menschliche Gegner besiegt - nicht Details erinnern, aber ich werde schauen es hoch und bearbeiten). Sobald Sie eine Reihe von anständigen Strategien entwickelt haben, können Sie die Echtzeit-GA abfeuern, so dass sie weiterhin von Menschen lernt.

Denken Sie auch daran, dass dies ein extrem langsamer Prozess sein könnte und es keinen Wert haben könnte, genetische Algorithmen in Echtzeit zu verwenden, in dem Sinne, dass Sie besser Strategien von menschlichen Gegnern sammeln und die Evolution im Hintergrund laufen lassen dass das nächste Mal, wenn derselbe Gegner spielt, eine Strategie entwickelt hat, die ihn besiegen kann. Es sei denn, Sie haben eine Menge Leute zu spielen - in diesem Fall könnte es Sinn machen, aber wenn das Ziel darin besteht, Leute mit immer besseren Bots herauszufordern, würde ich das tun. Leute zu haben, die die Fitness von vorläufigen Strategien bewerten, könnten 1) langsam 2) langweilig für sie sein.

Einige Papiere mit Echtzeit genetischen Algorithmen zu tun (im Wert von durch die abstrakte Abschöpfen und sehen, ob Sie daran interessiert sind):

Ebenfalls erwähnenswert, somethi ng ähnlich wurde zuvor getan durch neuroevolution mit (neuronale Netze Evolution mit GAs, NEAT ist ein gutes Beispiel und wurde speziell für FPS afaik verwendet), aber die Überlegungen in Bezug auf Ausbildung gesetzt stehen noch gültig.

+1

Wow, danke für diese Antwort und Links. Bitte verstehen Sie, dass ich neu in GA bin, aber die Art, wie ich das tun möchte, ist ein zufällig generierter Vektor ei. von Strings, die die Bot-Position kodieren. Starten Sie den Bot mit diesem Vektor und bewerten Sie die Fitness und führen Sie sie erneut aus. Wiederholen Sie dies, bis eine Sequenz gefunden wurde, die den Bot zur gegnerischen Flagge und zurück bringt. Ich denke, der beste Weg, Ihnen zu zeigen, was ich erreichen möchte, ist, Sie auf das Originalpapier [http://citeseerx.ist.psu. edu/viewdoc/herunterladen? doi = 10.1.1.131.5094 & rep = rep1 & type = pdf]. Bitte lies und sag was du denkst. –

+1

Das ist ein sehr interessantes Papier, und die Codierung, die Sie im Sinn haben, hört sich gut an, aber die Zeitung spricht über das Generieren von Testfällen, um Bugs zu entdecken, und nicht das maschinelle Lernen in Echtzeit, um bessere Spielstrategien zu generieren. Ich denke immer noch, dass du ein Trainingspaket sammeln und deine Strategie "offline" gegen dieses Trainingspaket entwickeln solltest, oder zumindest würde ich mich dafür entscheiden. – JohnIdol

+0

Sie haben absolut Recht bezüglich des Lernens in Echtzeit, mein Fehler. In meinem ersten Versuch dachte ich über eine zufällige Sequenz nach, die sich dank der Fitness-Funktion, die nur wenige Aspekte des Bot-Verhaltens misst, verbessern würde. Ich wollte den großen Raum der Lösungen erforschen, um den optimalen zu finden. Ich denke jedoch, dass ich versuchen kann, Ihren Vorschlag aufzunehmen und das Spiel zu spielen und einige Sequenzen für die Evolution aufzunehmen. Wenn Sie weitere Ansichten oder Vorschläge haben, schreiben Sie sie bitte. Nochmals, Prost für Antworten. –

Verwandte Themen