Erstellen eines KI-Verhalten-Baum in C# - Wie?
Ich bin versucht, erstellen Sie eine "behavior tree" mit C#.
Für alle, die nicht wissen, ein Verhalten, das Baum ist im Grunde ein framework, können Sie konstruieren eine AI um. Es gibt Sequenzer, Selektoren, Dekorateure, composite-Aktionen und andere Dinge.
Fand ich dann eine einzige Bibliothek, implimented ein "behavior tree" in C#, befindet sich hier ( http://code.google.com/p/treesharp/ ), aber ich kann nicht verstehen, wie, es tatsächlich zu verwenden, da es keinen Beispiel-code, den ich daraus ziehen kann. Könnte hier jemand vielleicht machen einige einfache Beispiel-code zeigt, wie Sie tatsächlich nutzen diese Rahmen.. oder vielleicht wissen Sie einen anderen Weg zu impliment ein Verhalten-Baum in C#?
Vielen Dank!
- Die Bibliothek, die Sie erwähnt auf code.google.com Hinzugefügt wurde fast ein Jahr her und zuletzt aktualisiert wurde zwei Wochen später. Wenn Sie planen, es zu benutzen, werden Sie wahrscheinlich nicht finden, keine Beispiele genannt werden, kann es besser sein, wenn man sich für eine andere Bibliothek, oder entwickeln Sie Ihre eigenen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich sah, dass die Umsetzung und ich Frage mich, warum so viel code benötigt wird, für etwas, das relativ einfach.
Von dem, was Sie sagen, Sie wollen einen einfachen Weg zu Komponieren Verhaltensweisen. Ein Verhalten hier, vermute ich, ist eine Abbildung von einem Zustand auf null oder mehrere Aktionen, die ein agent. Sie können dieses Modell sehr einfach mit C# - Lambda-Ausdrücke. Zum Beispiel:
Die Blätter des Baums sind einfach Aktionen, die etwas passendes für den Staat. Sie "run" ein Baum einfach durch ausführen es.
Wenn Sie wollen bekommen Sie Lust haben, können Sie parametrieren Sie dieses Schema, um den Zustand eindeutig.
Hoffe, das hilft.
---- Nachtrag ----
Jason bat um ein Beispiel, wie könnte man diesen Ansatz, so dass hier ein einfaches "AI" patrouillieren Wache Beispiel (ich nehme an, WorldState entspricht eine Beschreibung der Umwelt auf die Zeit, das Verhalten der Baum ausgewertet wird):
Machen die Wache etwas tun, rufen Sie einfach
patrollingGuardBehaviour()
. Beachten Sie, dass die verschiedenen subactions und tests umgesetzt werden kann, da die Methoden mit den richtigen Signaturen eher als inline-als Lambda-Ausdrücke. Sie können hinzufügen, andere combinators zuSelector
undSequencer
, z.B. für parallel-Aktivität.Sieht es aus wie einer der devs hinter TreeSharp, apocdev, hat einige code, der verwendet TreeSharp für eine Art von Zauber-casting World of Warcraft-Spieler.
Hier ist ein snippit:
Ich bin mir nicht sicher, aber die Nutzung scheint hier ziemlich einfach: der
Decorator
Klasse wie es aussieht, prüft ein Prädikat (Spells.CanCast
), bevor Sie versuchen, ausführen einer Aktion (Spells.Cast
).So ein
Composite
ist vielleicht einAction
können mehrere Dinge tun, z.B. überprüfen, ein Prädikat, das vorher oder führen Sie mehrere Aktionen in Folge.apocdev s blog erwähnt diese übersicht über das Verhalten der Bäume, die links, um weitere Allgemeine Beschreibungen Sequenzen, Selektoren, und Dekorateure.