Goal Oriented Action Planning AI Framework

Been putting together the demo project ready for our UE meetup next week. Still need more actions before the planner is doing any hard work, but it’s getting there.

I’ve spent the last few weeks doing work on editor customisations and making the system easy to work with in pure Blueprints and the EQS system.

This is the complete implementation of the EnterCover action blueprint. Just set the preconditions/effects on the defaults panel, then implement the Execute function…returning false until the action is completed, then returning true. This action is executing an EQS query to find a cover location as well.

I was going to marketplace the plugin but changed my mind, I’ll re-open the github repo soon, the reference stuff for the EditorModules etc. should be useful for people!

Wow, that is really generous of you.
I’m looking forward to the release of your plugin.

Wow mid_gen, that is so very generous, on behalf of all of us, Thank You!

No problems, just as well really, just a few hours after I decide to publish it for free I discover the Epic are working on a HTN plugin themselves :smiley: I’m sure that’s going to be far better than anything I can manage in my free time.

There’s a bunch of useful code samples in there regarding plugin settings, custom BP pins, detail customization etc. which took me a while to figure out even if the planner itself is rapidly superceded by Epic’s implementation :slight_smile:

HTN and GOAP are somewhat different approaches but I expect anyone wanting a planner is going to go with the engine version. I’ve learned a lot of stuff about UE while doing this so it’s not wasted effort!

Ok repo is public again now.

Consider it very much ‘beta’ at the moment, I’m just in the process of re-making the demo project in Blueprints so it’s not doing very much at the moment and I haven’t tested it thoroughly yet. Feel free to give it a try.

Just a warning to anyone looking at it, the demo project may or may not be in a working state on master.

I’m just throwing together blueprints to get a demo ready.

Had a bit of a rewrite…getting pretty close to stable now.

  • Removed the simple FSM in the AI Controller, it wasn’t helping anything, much simpler implementation now!
  • Added dynamic cost calculation for actions and customisable calculation rate
  • Added configurable tick rate for actions
  • Lots of tweaks and fixes to the sample project
  • Demo project completely implemented in Blueprint

I’m using EQS and AIPerception in the sample in conjunction with the GOAP plugin so would be a good reference for anyone looking at that stuff.

Now integrated an EQS service inside the plugin AIController, so that actions can easily request EQS queries. GOAPAIController has a queue that’ll process EQS requests and return results to the appropriate action on completion.

4.14 version branched. Master updated to 4.15.

Hmm will look into it. Looks good comrade

This is certainly very interesting. I do have a few questions:

  1. Could you give me a source on Epic developing their own plugin?
  2. As someone deeply entrenched in Epic’s BT system, where do I start reading about GOAT?

Thanks for the effort!

HTN Source :

https://twitter.com/MieszkoZ/status/834081593442631680

Best introduction to GOAP :

http://alumni.media.mit.edu/~jorkin/GOAP_draft_AIWisdom2_2003.pdf

Next up I really need to sort out the planner algorithm, it’s a very naive forward search at the moment…may not have a chance for a couple of weeks though.

Thank you very much, I’ve bookmarked this for tonight’s bed reading. :smiley:

edit: NVM, turns out if you dont have anything added in the plugin section for class states the blueprint controller will crash…

just noticed this thread after doing some research on GOAPs, I downloaded your github file and your demo project works, however installing the plugin in a different location causes the editor to crash while opening GOAPAIController blueprints.
Any thoughts on that?

Been a little busy recently. I’m meaning to make a better demo project soon so I’ll be testing on a new project.

It’s probably an issue with the editor customizations, I need to make them a bit more robust (editor customisation is a pain the back-side).

I commented out your Header slate code and it seems to work editor wise.

I think the error mentioned above is Array Index out of bounds (0 accessing size 0).

I am not super familiar with slate so I am not sure where the uninitialized array is.

Commenting that out makes it “work” more.

Figured it out,

The Header editor part populates itself with options from the ProjectSettings -> Plugins -> GOAPer settings list.

If that list is empty, it crashes.

Yeah you need some values in the project settings. I’m not actively developing this at the moment, but I’ll happily accept pull requests…

Sounds good!

i have spent a couple days with it now and have a few comments.

  1. some awesome blueprint nodes! Move to target, move to location, eqs jobs, cool stuff!!

  2. GOAPer Demo, dudes seem to get stuck picking up ammo.

  3. I’m having issues seeing what the current action is for my guy. Execute is called often but update cost is not called at all. Seems strange to me that If execute is being called that update cost should be called. Update: Saw the ActionDescription field and see that my action is being selected

Seems to me like update cost should be more of a function than an event, that if you do too much work or certain things in that event it will screw up logic in execute.

I think I’m going to copy your 3D text widget :slight_smile:

Update:

I got my action to work! I gotta say your plugin is pretty good! it was fairly easy (just a couple of days of messing around).

Only strange thing is that the walk speed passed to your move function needs to also be set on the animation blueprint. I think I might try to cleanly bind those two together somehow.

Anyways, Good stuff! Will be interesting to see how this handles more complex scenarios.