Goal Oriented Action Planning


(Hussein Tammam) #1

Hello,

I’ve been reading a lot about GOAP recently, if you’re not familiar with it there’s a lot of articles on the topic over here http://alumni.media.mit.edu/~jorkin/goap.html

Well anyways its a really cool planning algorithm that can produce awesome and unplanned behavior with AI agents. Basically, unlike FSMs it separates the goals of the ai, from the actions it can take. That way all you need to do is design its goals and code up the actions it can take and the AI automatically creates a plan e.g. if the goal is to kill player but it doesnt have a weapon it might do this moveTo(axe)->pickup(axe)->moveTo(player)->attack(player).

I’ve just began trying to implement it and its a bit complicated but I’m getting there :). I was just wondering, has anyone else has tried this before? Theres a lot of articles on the theory but very little implementations…


(Zachary Lewis) #2

This looks really neat.

I think that, with a bit of tinkering, you could easily implement the architecture he posted on GitHub in ActionScript. It might actually be easier, since the objects are much more abstract.

Be sure to share anything cool that you make with this!


(Hussein Tammam) #3

It is pretty awesome. I’m looking at a couple of articles right now. The first part is done. There are actions, goals and I’m just fixing a few bugs on the actual planning :smiley: (It uses A*), but It traces out its plan on the console.

I’ve never being so excited about traces before :smile:

The whole implementation is pretty generic right now and not really game specific, so hopefully I can share something soon.


(Bret Hudson) #4

Thanks for bringing this AI methodology to our attention! I read up about it this morning after this post was featured on my Google Now cards, and it seems Zach beat me to the punch with the link. I’ll be keeping my eye on this, really fascinating stuff. Hope you’re successful in your attempt!


(Hussein Tammam) #5

Just wanted to update you on my progress

@zachwlewis I just remade the soldier in that example and it worked like a charm!

Theres a nice little story too…

I can already see the huge flexibility in this. Its gonna be super easy to define AI types on a separate XML file by just mixing in different goals and actions. Now to hook it up with my steering behaviors and perception systems…Its gonna be awesome