![assassin assassin](http://www.kitguru.net/wp-content/uploads/2015/11/AC-Syndicate-1080p1.png)
![assassin assassin](https://thepcgames.net/wp-content/uploads/2016/12/Assassins-Creed-Syndicate-Pc-Game-Full-Version-Free-Download-Compressed.jpeg)
The different conditions to enter those substates were GOAP Action Preconditions and we could easily come up with the GOAP Action Effects that would allow linking the different actions together.Īs time went by, we slowly converted almost the entirety of the old state machines to planner actions. It was a given that making planner actions out of those would be a breeze. For instance, the state machine for the Search behavior contained a few states controlling the various interaction with haystacks and hiding spots. For the most part, this was rather straightforward. Since we didn’t start the character behaviors on Assassin’s Creed Odyssey from scratch, owing to a long brand legacy, we started the modularization push by simply converting sub states of existing state machines to planner actions.
Assassin's creed syndicate pc optimization code#
It was becoming very difficult to tell which enemy archetype could enter which state and archetype-specific code was getting spread all over the place. We had a handful of large state machines, encompassing the broad game states the AI could get into: Fight, Search, Investigation. What worked wellįigure 2 - Partial view of state machine spaghettiįrom a production perspective, wading through state machine transition spaghetti as part of everyday life was becoming fairly cumbersome. This postmortem offers insight into technical, gameplay, as well as production considerations of implementing and maintaining a planning algorithm, over the course of Assassin’s Creed Odyssey and Immortals Fenyx Rising. GOAP seemed to offer us an elegant way to implement those kinds of dynamic, multi-step behaviors.Ī few years later, we would use the foundation we had laid with the planner on Assassin’s Creed Odyssey to build the AI for Immortals Fenyx Rising, improving the system further to suit Immortal Fenyx Rising’s particular context and gameplay. We wanted them to be able to use objects around them as weapons, burn or otherwise destroy some gameplay ingredients and have more interesting behaviors, that actively used the environment. We wanted, among other things, to improve our NPC’s connectedness to their environment. In addition to production-driven needs, we also had gameplay-focused ambitions that justified the move to a planner. In other words, planning is akin to pathfinding, only you’re doing it logically rather than in 2D or 3D space.įigure 1- Simplified representation of GOAP Planning The planning algorithm essentially does a graph traversal of the action space to try to find the least costly sequence of actions to reach a particular Goal. Without delving too much into the details, GOAP uses a pool of Actions, defined with Preconditions, Effects and Cost. We ended up choosing a well-known method called Goal-Oriented Action Planning (GOAP) for our planning algorithm.
![assassin assassin](https://cdn.ndtv.com/tech/gadgets/assassins_creed_syndicate_leap_of_faith.jpg)
While it would require an adjustment, as designers would not have access to the same total control they were used to, we felt that it was control that wasn’t needed if there was a system to handle some of the complexity of AI behaviors. The designers would write the rules of the AI and it would figure out, on its own, how best to play by those rules. By nature, they would allow some automated problem solving, which suited our ambitions very well. Deliberation could take care of some of the complexity that we had to handle by hand, without the explicit intervention of a designer to tell it what to do.Īs we looked at solutions other than state machines to handle the complexity of our AI, an elegant solution resided in planning algorithms.
![assassin assassin](https://cdn.ndtv.com/tech/gadgets/assassins_creed_syndicate_graphics_menu.jpg)
A deliberative system could spend some CPU cycles to deliberate on what the best course of action should be before making a decision, something that our current reactive AI was not suited to do. We wanted to improve our underlying systems by moving from a reactive AI to a deliberative system.