Some notes from the FFXV AI event held at B&B in Tokyo on 7/12/19!
改めてFFXVのAIに感動しました。本当にありがとうございました!#FFXVAI
I had the opportunity to attend the FFXV AI event yesterday and decided to write down some points I found interesting, though my notes are all over the place and definitely confusing (especially toward the end!). Please excuse any errors as my listening comprehension is meh and I'm not too familiar with AI terminology in either English or Japanese 😅 Lastly, this did take quite a while to write up, so I'd really appreciate it if you could credit me if you use any part of my notes. Thank you!
-----------------------------------------------------------------
- The two speakers at the event were Tsukasa Toya (Lead Game Designer) and Yoichiro Miyake (Lead AI Researcher).
- An insane amount of work went into each of the main characters to make them as fleshed out as they are (AI, textures, animation, etc.) ("I'd say about 100 people worked on the prince alone! (laughs)")
- Since the majority of the game is spent with the same four characters, the challenging part for the team was making them as charming and as natural as possible.
- They discussed a phenomenon called「不気味の谷」("Uncanny valley") that they had to wrestle with while developing the main characters. Imagine a graph where the y-axis measures a person's feeling of closeness to a character and the x-axis measures that character's degree of human likeness. At first the graph will show a steady curve upward--the more realistically human the character is, the more players feel close to them--but at a certain point, the curve takes a steep dive downward. This section of the graph is called the "uncanny valley." In other words, a certain degree of human likeness actually turns people off because something just doesn't feel /right/ (think of that strange feeling you get when you see humanoids, dolls, etc. that are really realistic but in a way that's freakishly off-putting and makes you feel VERY uncomfortable 😆). The curve does come up again, but it's all about finding that balance.
- The main characters of FFXV react to weather changes, whether it be through their actions or spoken lines. But as we all know, they never experience snow in the main game. Apparently, Prompto's initial reaction to seeing snow fall down from the sky for the first time in Episode Prompto would've been, "It's raining...!" (*MY PRECIOUS BOY NOT KNOWING WHAT SNOW IS*)
- Decision-making in FFXV uses a combination of state-based AI and behavior-based AI:
○ State-based AI is shown through "state machines," a graphical representation of transitional states.
○ For example, a state machine for patrolling characters could have "patrol," "pursuit," "attack," and "rest" states that transition from one to another based on certain conditions (ex. transition from patrol state to pursuit state if enemy is detected and over 5 meters away)
○ Behavior-based AI is depicted with "behavior trees."
○ Behavior trees start from the root --> branches off to different behaviors, which then branch off to other behaviors, and so on and so forth until it reaches the end and returns back to the root again (so the character ends up executing a series of actions). These behaviors are grouped and labeled with "priority," "sequence," or "random." For the priority category, the behavior of highest priority in the group is chosen (ex. attack or retreat, etc.). For the sequence category, all the possible nodes are executed in a specific order. For the random category, one of the nodes in the group will be executed at random (ex. what kind of magic to use for an attack).
○ State machine + behavior tree = hybrid node format (so a state machine may have a state that connects to a behavior tree, which has a behavior that connects to another state machine, etc. This can continue on for more layers depending on the level of detail.)
○ They use AI Graph Editor (a visual tool that non-technical personnel can easily utilize)
○ They played a demo video showing the real-time behavior of a Magitek soldier during battle by highlighting the active paths taken at each moment (at one point, I could see the movement and attack paths both highlighted at the same time).
- Navigation AI: how to get from point A to point B
○ Maps are larger than ever before, and it's not practical to manually mark set paths for all characters/enemies.
○ They do still use waypoints for NPC movement within small, contained areas like the NPCs around the diner in Hammerhead.
○ Pathfinding: letting AI decide what path a character should follow to get to a certain point (here they showed a clip from Dragon Age, where you click on a point on the map and the character automatically heads toward that point, following a path determined through pathfinding)
○ Navigation mesh: using polygons to determine areas safe to maneuver
○ Point Query System (PQS): used by characters to decide exactly where to go
○ PQS: Imagine a bunch of dots on the map of a battlefield, all points marking possible locations for the character to move to. Points in areas with non-traversable terrain, areas around teammates, etc. are filtered out as needed (*If I interpreted this correctly, the filters are adjusted depending on the goal of the character, like if they're trying to find the best location to use a projectile weapon, the area around the enemy will also be filtered out to choose a location where they can best use their weapon from afar*). The remaining points are then evaluated to determine the most optimal location.
○ As an example, they showed a video of a Coeurl on the move. It typically circles around the player from a distance because the points around the player are actually filtered out by this system.
- Attack Motion Analysis
○ They have to take into account the movement of both the player and the enemy during battle.
○ Defining the attack radius to help determine if an enemy attack hits the player or not (here they showed a video depicting the cone-shaped attack range of Behemoth's slash move and the circular-shaped range of the horn sweep attack)
That's all! I hope I didn't confuse anyone too much 😆