Motion Matching – Session
Animations techniques evolve at a rapid pace. Back in 2016, Ubisoft Montreal and Ubisoft Toronto present Motion Matching for the first time at GDC (Game Development Conference). This algorithm revolutionizes animation systems by replacing the state machines that usually control the transitions between different animations of a game. Instead, it processes in real time all available animations to select the best possible motion for the character. This technique is used in Ubisoft’s For Honor game.
At almost every frame of the game (30 times per second), all of a character’s possible animations are evaluated against the player’s move request. This represents a huge amount of data that needs to be compressed in order to be processed quickly.
In reality, the system “simply” ensures that at each computation loop, the position, rotation and speed of the character’s feet and center of gravity match those of the preceding motion and desired following motion. If necessary, we select another part of the animation that fits better, and we play it. We also make sure to direct the animation played in the local space of the player (in other words, in the right direction). Indeed, in most games, the animation does not actually move the player, but is rather seen as a cosmetic effect on the simulation of the character’s position in the world. Since the system is almost always changing animation, it is necessary to manage the transitions between motions with blending so that they are not visible. Finally, what remains is to ensure that the character’s feet do not slide on the ground by using inverse kinematics to recalculate the position of the legs from where the feet touch the ground.
In the end, the animation is fluid, very realistic, responds quickly to the demands of gameplay (which represents a better progress than a state machine where the management of transitions remains complicated) and is generic for different characters. The management of the events remains, however, more complex and tedious to implement.
This project was realized in partnership with Crea-ture Studio as part of a research project based on their game Session.
Research and development
Programmeur R&D : Jérémie Kaltenmark