when they are finished. When an action such as the AttackShortRange as described earlier activates, two of the subsystems are requested to perform work. Does the action complete when navigation is completed or when attacking is completed? As part of the plan validation, the plan’s current action is validated every frame. Getting these validation checks right caused a good deal of problems as actions could regularly activate and become invalidated quickly. Finding the correct completion and validation criteria required substantial tuning and extensive debugging.
Determining the relevancy values of goals is a tricky task and entailed a degree of guesswork along with trial and error. When agent’s goal relevancies are updated, there are quite often two or more goals that have relevancy values higher than zero, say for example the AttackDomPointTwo goal and the Patrol goal. If the Patrol goal’s relevancy is set too low then the agent will always go and plan for the AttackDomPointTwo goal and the Patrol goal may rarely or never be selected. On the other hand if the Patrol goal’s relevancy is set too high agent’s may all go and prioritise this goal, end up patrolling a single Domination point and never trigger the AttackDomPointTwo goal. If goal’s relevancy values are constantly set too low then they will rarely get chosen and if they are too high they can be chosen too often and cause repetitive behaviour. Hence choosing the right values for goal relevancies was an issue that required a lot of attention and testing during the implementation.
Action costs suffer from a similar problem as they need to be hand-tuned so that certain actions get chosen over others when performing A*. As the action cost affects where an action gets placed on the open list (i.e. it is the g value from the f = g +h formula), if the action cost is too high it may be the case that there is always a cheaper action available to the planner and the action never gets selected even if it is more appropriate. However this problem was overcome to some extent by tuning the cost values and by creating comprehensive context preconditions which can limit the number of other actions selected by the planner that can clash.