indicates to the GOAP system what the agent’s capabilities are. However performing the same task with the FSM system requires different state machines and states for each agent, increasing the complexity and code repetition quite a bit. Perhaps if a data-driven FSM implementation were used that converts an external file into code, then FSMs could be as flexible as GOAP at creating different agents. The extra difficulty involved in getting an external FSM language setup alongside a compiler/interpreter makes this task a little more complex than simply defining an XML file.
The ease of creating different types of AI opponents is obviously a major benefit of the GOAP system to developers. Most modern games start with a gentle learning curve where players play against easy opponents at the beginning of a game and the AI opponents get more difficult as the player progresses. The steps above illustrate how this could be done for the GOAP system and this is much cleaner than with the FSM. This reduces repetition of code and development time for the game studio.
The GOAP system is also highly re-usable. Once created for the first time, the system can be brought into another project easily. The project would need to have new goals and actions created but the system would function fine as long as the A* machine was also brought across with it. A GOAP system can be easily transferred across to be used for a completely different genre e.g. an RTS game without any changes whatsoever to the actual system, the actions and goals bring about the different functionality. The FSM states however cannot be brought across to another project.
Orkin explained that the GOAP system can improve the workflow between game designers and programmers (Orkin, 2004). The designers just need to concentrate on the external data files to define the goal and action sets, action costs and goal relevancies while the programmers can concentrate on implementing the AI system. This is a change from the traditional implementation of FSM systems where the designers and programmers often need