![]() On Immortals Fenyx Rising, the gains from modularity were even more readily apparent. While modularity itself didn’t necessarily show directly in the game, it did have a significant impact on our ability to debug and ship the game. We saw night and day differences in the ease of debugging the AI. Both data and code were, as a result, much cleaner.īy the end of Assassin’s Creed Odyssey’s production, the benefits of GOAP’s modularity were well understood by programmers on the team. ![]() Archetypes that had specific behaviors didn’t crosstalk with archetypes that didn’t, and we could easily prototype new behaviors without having to deal with messy state machines. 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. 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. 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. 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.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |