GOAP implementation, lua source.
Upheld numerous articles Jeff Orkin'a, threads in the forums about this approach Goal-Oriented Action Planning (GOAP) and STRIPS. I wanted to use this technique to build a animations graph, but can't find source\tutor on this (GOAP) subject.
I want to put a small research may prove useful to someone.
The challenge, which I tried to read something like this:
+ are different units, managed by logic
+ change the unit logical state produce different unit animation
+ between animation is interdependence, such as: the inclusion of animation <Reload> for unit <Robot> perhaps only in animation <Move> or change animation <Freeze> for unit <Biped> possible only through animation <Idle>
This is what happened:
goap.lua - http://www.everfall.com/paste/id.php?1k4t3oxnbdwc
astar.lua - http://www.everfall.com/paste/id.php?axz0w5fbtd4q
Run "Lua.exe goap.lua> result.log"
Tested at <Lua5.1>.
In goap.lua :
- g_tGoals - state, which wants to see the logic of abstract Unit
- g_tHumActions, g_tRoboActions, g_tMseActions-Action (Action-involves animation), which can perform a particular type of unit to achieve Goals. Actions conditions is - Actions : : precond, and the result is - Actions : : effect.
Was there a question in there, or is this just a 'sharing my experience' post?
If your animations has a limited number of goal states (actions) which are reached by a limited number of transition states (intermediary poses) you could map a static network of animation transitions which could be either traversed using something like A* OR even be completely digested and a directed map built that has a list of valid transitions to all actions.
Since the animations are a finite data set with a completely predefined (usually hand validated) set of transitions, the combinations of start_state to end_state
paths can be preprocessed to remove the realtime processing load.
Since the animations are a finite data set with a completely predefined (usually hand validated) set of transitions, the combinations of start_state to end_state
paths can be preprocessed to remove the realtime processing load.
--------------------------------------------[size="1"]Ratings are Opinion, not Fact
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement