Creating GOAP drones for EarthGames
earthgames » Devlog

Creating robust GOAP bots that get the level key if not in combat with a player, then heads to the nearest portal, then exit door.
Here are the basic foundations.
# Define current state and goals
var current_state = {
"at_door": false,
"has_key": false,
"in_action": false,
"player_defeated": false,
}
# match goals w/ main function lib
var goals = {
"at_door": true,
"has_key": true,
"in_action": false,
"player_defeated": false,
}
# Define possible actions
var action_book = {
"at_door": {
"required":{"has_key":true, "in_action": false},
"effects":{"at_door": true, }
},
"has_key": {
"required":{"in_action": false},
"effects":{"has_key": true, }
},
"in_action": {"required":{"in_action": false}},
"player_defeated": false,
}
# Main loop
# Check if goals are satisfied
var goals_satisfied = true
for goal in goals.keys():
if goals[goal] != current_state[goal]:
goals_satisfied = false
break
# If goals not satisfied
plan()
#Effects Update to current state
func _effects_update(efx, state):
self.current_state[efx] = state
#Check if all parameters for the state change are met
func _check_required(req):
if self.current_state[x] == req.values()[x]:
_effects_update(...)
#if params are met you could Break the loop call a function or let statements/the state changes fire functions in process
# Define GOAP planner
func plan():
#if not in action___
for top_goals size:
if [top_goals[x]] == true:
for action_book[x] size:
var require_ok = _check_required(action_book[goals.keys()[top_goals[z]]]["required"])
earthgames
| Status | Prototype |
| Author | Tools and Projects |
| Genre | Fighting, Puzzle |
| Tags | 3D, battle-royal, capture-flag, Retro, Two Player |
More posts
- EarthGames Build 1[Demo]Apr 02, 2024

Leave a comment
Log in with itch.io to leave a comment.